2017-04-26 3 views
0

J'ai une relation inductive comme indiqué ci-dessous intitulé suffixe. J'essaie de prouver le théorème connexe suffix_app. Mon idée générale est d'utiliser ce fait que suffixe xs ys pour montrer que xs est soit égal à ys ou que c'est une série d'éléments contre 'd sur ys.Coincé dans la boucle d'inversion infinie Coq

Require Import Coq.Lists.List. 
Import ListNotations. 

Inductive suffix {X : Type} : list X -> list X -> Prop := 
    | suffix_end : forall xs, 
      suffix xs xs 
    | suffix_step : forall x xs ys, 
      suffix xs ys -> 
      suffix (x :: xs) ys. 

Theorem suffix_app : forall (X: Type) (x:X) (xs ys: list X), 
    suffix xs ys -> 
    exists ws, xs = ws ++ ys. 
Proof. 
    intros. 
    inversion H. 
    - exists []. reflexivity. 
    - 

Cependant, quand j'utilise l'inversion, il n'y a aucun moyen de réellement jamais « arriver » à terme est égal à ys. Par conséquent, je suis coincé au point actuellement vu dans le code.

Répondre

1

Votre preuve suit simplement par induction sur l'une des structures, par exemple:

Theorem suffix_app (X: Type) (xs ys: list X) : 
    suffix xs ys -> exists ws, xs = ws ++ ys. 
Proof. 
induction 1 as [|x xsp ysp hs [zs zeq]]; [now exists []|]. 
now exists (x :: zs); rewrite zeq. 
Qed. 

Pour des raisons pratiques, vous voudrez peut-être que tu utiliser une version différente, calcul du suffixe.

+0

Bonjour, désolé pour le retard dans la réponse. En effet cela fonctionne. Cependant, pourquoi dois-je appeler induction 1 avec la clause as pour obtenir l'hypothèse zeq? J'expérimentais sans la clause as et où je m'attendais à trouver zeq (mais avec un nom généré automatiquement à partir de Coq) il n'y avait pas une telle hypothèse, d'où la preuve était insoluble avec la clause as. Désolé, je ne comprends pas très bien cet aspect de Coq. –

+1

Je ne suis pas sûr que je suis, vous devriez obtenir les mêmes résultats si vous utilisez la clause «as» ou non. Soyez sûr que vous appelez l'induction sur la bonne chose! Notez que si vous utilisez des noms générés automatiquement, vous souffrirez beaucoup lorsque Coq décidera de changer le schéma de nommage et ainsi toutes vos preuves ne seront plus valables. – ejgallego