TRANSFORM A to B
                   /\
                  /__\
                 /    \
                /      \
               /        \
            REDUCE    (recursively)
          difference  TRANSFORM A' to B
            between
             A & B
          (return A')
               |
               |
               |
          Select relevant
            operator Q
               &
          APPLY Q to A
           (return A')
               /\
              /__\
             /    \
            /      \
           /        \
    (recursively)  (recursively)
       REDUCE	   APPLY Q to A''
     difference	    (return A')
      between
  A & preconditions
       for Q
    (return A'')