From _("A Roadmap to Metacomputation by Supercompilation"
      | http://citeseer.nj.nec.com/uck96roadmap.html):

<table border=1>
  <caption>A taxonomy of transformers.</caption>
<!-- first level header -->
  <tr>
    <th rowspan=2>transformer</th>
    <th rowspan=2>information propagation</th>
    <th rowspan=2>evaluation strategy</th>
  <!----><th colspan=2>control restruct.</th>
    <th rowspan=2>KMP test</th>
    <th rowspan=2>elim struct.</th>
  </tr>
<!-- second level header -->
  <tr><th>variant</th><th>genetic</th></tr>
<!-- row 1 -->
  <tr>
    <td>Partial Evaluation (PE)</td>
    <td>constant</td>
    <td>in-out</td>
    <td>poly</td>
    <td>mono</td>
    <td>-</td>
    <td>-</td>
  </tr>
<!-- row 2 -->
  <tr>
    <td>Deforestation</td>
    <td>constant</td>
    <td>out-in</td>
    <td>poly</td>
    <td>poly</td>
    <td>-</td>
    <td>+</td>
  </tr>
<!-- row 3 -->
  <tr>
    <td>Partial deduction</td>
    <td>unification</td>
    <td>unspecified</td>
    <td>poly</td>
    <td>mono</td>
    <td>+</td>
    <td>-</td>
  </tr>
<!-- row 4 -->
  <tr>
    <td>Positive SCP</td>
    <td>unification</td>
    <td>out-in</td>
    <td>poly</td>
    <td>poly</td>
    <td>+</td>
    <td>+</td>
  </tr>
<!-- row 5 -->
  <tr>
    <td>Perfect SCP</td>
    <td>constraint</td>
    <td>out-in</td>
    <td>poly</td>
    <td>poly</td>
    <td>+</td>
    <td>+</td>
  </tr>
<!-- row 6 -->
  <tr>
    <td>GPC</td>
    <td>constraint</td>
    <td>out-in</td>
    <td>poly</td>
    <td>poly</td>
    <td>+</td>
    <td>+</td>
  </tr>
</table>

<ul>
  <lh>Legenda</lh>
  <li><strong>information propagation</strong>
    <dl>
      <dt>constant propagation:
        </dt><dd>the outcome of tests are ignored;
      </dd><dt>unification&#045based propagation:
        </dt><dd>substitutions into the transformed terms are used
                 to represent the outcome of tests;
      </dd><dt>constraint&#045based propagation:
        </dt><dd>the transformer explicitly maintains sets of constraints
                 recording previous tests (restrictions). Depending on the
                 programming language other abstract properties may be propagated;
      </dd>
    </dl>
  </li><li><strong>evaluation strategy</strong>
    <ul>
      <li>inside&#045out (or call&#045by&#045value or applicative order);
      </li><li>outside&#045in (or call&#045by&#045name or normal&#045order);
      </li>
    </ul>
  </li><li><strong>control restructuring</strong>
    <dl>
      <dt>monovariant:
        </dt><dd>any program point in the subject program gives rise to zero
                 or one program point in the residual program;
      </dd><dt>polyvariant:
        </dt><dd>any program point in the subject program can give rise to one
                 or more program points in the residual program;
      </dd><dt>monogenetic:
        </dt><dd>any program point in the residual program is produced
                 from a single program point of the subject program;
      </dd><dt>polygenetic:
        </dt><dd>any program point in the residual program may be produced
                 from one or more program points of the subject program;
      </dd>
    </dl>
  </li><li><strong>KMP test</strong>
    <ul>  
      <li>- : doesn't pass the test;
      </li><li>+ : pass the test;
      </li>
    </ul> 
  </li><li><strong>eliminate date structures</strong>
    <ul>  
      <li>- : doesn't eliminate;
      </li><li>+ : eliminate;
      </li>
    </ul> 
  </li>
</ul>
