[Practico 7] ej 3.5 - DeleteNotMember

[Practico 7] ej 3.5 - DeleteNotMember

de Lia Malvarez Busquets -
Número de respuestas: 2

Buenasss, estoy hace rato dandole vueltas a este ejercicio, es el último que me queda y no logro resolver los goals para el caso equal x a = false.



Para llegar hasta aquí, lo que hice fue inducción en l, probé el paso base, e hice case_eq equal x a. El caso = true lo probé sin problemas. 

Pero para este caso, aplicando IHl me queda por probar MemL x (delete x l), y puedo ver cómo en la teoría, dadas estas hipótesis, MemL x (delete x l) es verdadero, pero no estoy pudiendo probarlo.

Tal vez el problema está en mi definición de delete:

Fixpoint delete (a: A) (l : List) {struct l} : List :=

  match l with

  | nullL => nullL

  | consL elem t => 

    match equal a elem with

      | true => t

      | false => consL elem (delete a t)

    end

end.

Muchas gracias! 

En respuesta a Lia Malvarez Busquets

Re: [Practico 7] ej 3.5 - DeleteNotMember

de Carlos Luna -

Hola Lia.

En este caso, si está bien definido isSet, a partir de una inversión en H deberías sacar que isSet l y que no perenece 'a' a 'l'. Esto ya te permitiría aplicar IHl. Luego, podrías hacer inversion en H0; las dos obligaciones de prueba que se generan deberían salir (una usando equal2).

Saludos, Carlos 

En respuesta a Carlos Luna

Re: [Practico 7] ej 3.5 - DeleteNotMember

de Lia Malvarez Busquets -
Muchas gracias Carlos! El problema creo que era que no me estaba dando cuenta cómo utilizar las hipótesis generadas por la inversion H0.
Reemplacé (delete x (consL a l)) por (consL a (delete x l)) y ahí fue saliendo.