Program Equivalence and Canonical Forms in Stable Discrete Interpretations