jpuig escribió:Hola de nuevo, estoy atascado en el Lemma de evenodd y no se cómo demostrar lo siguiente: n = S (n - 1), qué se os ocurre?
Además de ésto, en el div2_le, tampoco se me ocurre cómo demostrar: div2 (S n) <= S n
Sobre lo primero, no es verdad que forall n, n= S(n-1). Fíjate que para n=0, la resta en los números naturales en Coq está definido de forma que 0-1=0, por lo que no se cumpliría que 0 = S (0-1), ya que S(0-1)=S 0 = 1. Por lo tanto, ese objetivo sólo se podrá demostrar si en tu contexto tienes alguna hipótesis de la que puedas deducir que n no es cero.
Con respecto a div2_le, si bien es cierto que se puede demostrar usando la inducción normal, es más recomendable que uséis Esquema para demostrar los teoremas y lemas que contienen a div2. De esta forma tendréis tres subobjetivos, que se convierten en cosas más fáciles de demostrar si utilizáis la táctica simpl div2:
- Uno para el 0, donde div2 0 = 0
- Uno para el 1, donde div2 1 = 1
- Otro para S (S n)), donde div2 (S (S n)) = S (div2 n).
Si aplicáis la inducción normal sólo tendréis dos subobjetivos pero más difíciles, ya que:
- div2 0 se puede simplificar a 0
- sin embargo el otro subobjetivo donde aparece div2 (S n) no se puede simplicar
EDITO: Las simplificaciones se hacen de acuerdo con la propia definición de la función div2, donde como veis hay 3 casos, 0, 1 y S (S n). Así, simpl div2 lo que hace es aplicar esa definición. Sin embargo, no sabe evaluar div2 (S n) ya que no encaja con ningún patrón del match de la función