anchor.diff:  ;;;
   ;;; REDUCTION-KERNEL := (reduction-kernel OPERATOR K ITERATION-SPACE STATEMENT*)
   ;;;
  -;;;        STATEMENT := (OPERATOR (INPUT*) (OUTPUT*))
  +;;;        STATEMENT := (OPERATOR (INPUT*) (OUTPUT*) (TYPE*))
   ;;;
   ;;;           OUTPUT := (BUFFER TRANSFORMATION) || SYMBOL
   ;;;
  
positive.code: ;;;    with integers less than K, must appear as an OUTPUT of a statement,
  ;;;    and never as an input.
  ;;;
  ;;; Furthermore, the transformation of an input or output must be a mapping
  ;;; from the iteration space of the kernel to the shape of the buffer.
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;
  
negative.code:       ;; Now process the statements.
        (loop for statement in statements do
          (trivia:match statement
            ((list operator inputs outputs types)
             (verify-operator operator)
             (unless (and (listp inputs)
                          (listp outputs)
                          (listp types)
                          (= (length outputs)
                             (length types)))
               (trivia.fail:fail))
             (loop for input in inputs do
               (if (symbolp input)
                   (process-input-symbol input)
  