private/struct.ss
(module struct mzscheme
  
  ;; don't provide reduction-relation directly, so that we can use that for the macro's name.
  (provide reduction-relation-lang
           reduction-relation-procs
           reduction-relation-rule-names
           reduction-relation-lws
           make-reduction-relation
           reduction-relation?
           (struct rule-pict (arrow lhs rhs label side-conditions fresh-vars pattern-binds)))
  
  (define-struct rule-pict (arrow lhs rhs label side-conditions fresh-vars pattern-binds))
  
  ;; procs : (listof (exp exp (any -> any) (listof any) -> (listof any)))
  ;; rule-names : (listof sym)
  (define-struct reduction-relation (lang procs rule-names lws)))