anchor.diff:      (format f "~{~&#include \"~A\"~}" headers)
       (emit-rel-fun relative-function frames :stream f)
       (emit-parents-array parents-array frames :stream f)
  +    (emit-names-array names-array frames :stream f)
       (emit-abs-fun absolute-function frames :stream f :normalize normalize)
       )
     ;; dot
  
positive.code:                           normalize
                            (relative-function "rel_tf")
                            (absolute-function "abs_tf")
                            (parents-array "parents"))
    ;; header
    (with-open-file (f header-file :direction :output :if-exists :supersede)
      (format f "~&/* AUTOGENERATED BY REFLEX FRAME GENERATOR */")
      (format f "~{~&#include <~A>~}" system-headers)
      (format f "~{~&#include \"~A\"~}" headers)
      (format f "~&~%/* NAME INDICES */")
      (emit-name-indices frames :stream f :max frame-max)
      (format f "~&~%/* CONFIGURATION INDICES */")
  
negative.code:              for p = (frame-parent f)
               collect (if p p -1))))
  
  
  (defun emit-names-array (name frames &key (stream t))
    (format stream "~&const char * ~A[] = {~&~{~&    \"~A\"~^,~}~&};"
            name
            (loop for f in frames
               for p = (frame-name f)
               collect (if p p -1))))
  
  (defun emit-rel-fun (name frames &key (stream t))
    (format stream "~&void ~A~&( double *restrict q, double *restrict e ) ~&{~&" name)
    (loop
  