¿Cómo prohibir la táctica simple para desplegar expresiones aritméticas?

lossimpl táctica despliega expresiones como2 + a para "hacer coincidir los árboles" que no parece simple en absoluto. Por ejemplo:

Goal forall i:Z, ((fun x => x + i) 3 = i + 3).
simpl.

Lleva a:

forall i : Z,
match i with
| 0 => 3
| Z.pos y' =>
    Z.pos
      match y' with
      | q~1 =>
          match q with
          | q0~1 => (Pos.succ q0)~1
          | q0~0 => (Pos.succ q0)~0
          | 1 => 3
          end~0
      | q~0 =>
          match q with
          | q0~1 => (Pos.succ q0)~0
          | q0~0 => q0~1
          | 1 => 2
          end~1
      | 1 => 4
      end
| Z.neg y' => Z.pos_sub 3 y'
end = i + 3

Cómo evitar tales complicaciones consimpl ¿táctica?

Este objetivo particular se puede resolver conomega, pero si es un poco más sofisticado, omega falla y tengo que recurrir a algo como:replace (2 + a) with (a + 2); simpl; replace (a + 2) with (2 + a).

Respuestas a la pregunta(2)

Su respuesta a la pregunta