probe.rkt
#lang racket


(define-syntax (phase-1 stx)
  (syntax-case stx ()
    [(_ (d (f i)
           (p2 (mul a b))))
     (begin 
       (displayln (identifier-binding #'a))
       #'(d (f i)
            (p2 (mul a b))))]))

(define-syntax (phase-2 stx)
  (syntax-case stx ()
    [(_ (mul a b))
     (begin
       (displayln (identifier-binding #'a))
       #'(mul a b))]))
     
(phase-1 
 (define (f x)
   (phase-2
    (* x x))))