Skip to Content.
Sympa Menu

coq-club - [Coq-Club]

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club]


Chronological Thread 
  • From: <psperatto AT gmail.com>
  • To: "coq-club AT inria.fr" <coq-club AT inria.fr>
  • Subject: [Coq-Club]
  • Date: Thu, 28 Mar 2019 19:49:37 -0300
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=psperatto AT gmail.com; spf=Pass smtp.mailfrom=psperatto AT gmail.com; spf=None smtp.helo=postmaster AT mail-qt1-f176.google.com
  • Importance: normal
  • Ironport-phdr: 9a23:UPUfWxdZg+raeHFjeuaGirKilGMj4u6mDksu8pMizoh2WeGdxcuzZh7h7PlgxGXEQZ/co6odzbaP6+awBSdZv8vJmUtBWaQEbwUCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQm6oR/Su8QZjoduN6c8xxvUqXZUZupawn9lK0iOlBjm/Mew+5Bj8yVUu/0/8sNLTLv3caclQ7FGFToqK2866tHluhnFVguP+2ATUn4KnRpSAgjK9w/1U5HsuSbnrOV92S2aPcrrTbAoXDmp8qlmRAP0hCoBKjU3/2TXitRsjKNbvRmhvAF/zJXWYI6LKPV+Yr7WcdcHSWZdW8pcUTFKDIGhYIsVF+cPPulXoZf9qVUToxWxBhOiC//0xzBSmnP7x7c33/g9HQzE2gErAtIAsG7TrNXwLKofVvi1zLLQzTrddfNZwyv96JTPch06rvGMWKh/ccvVyUU1CwzFiVCQpJXjMjiI2OoNtG2b4PBhVeKpk2MosR9xrSK0xscwkIXGmoUVylXC+C5kw4g1PcW1RFBnbdOgCpddtCGXO5FrTs4jX21kojs2x78HtJKjYSQHy5UqywTfZvCZaYSE/B3uWeeLLTtlmn5pZrSyjAuo/0e60O3zTMy03U5KriVbltnMsWgA1xnJ5ciGTvtx516h2SqS2wzK5OFIPEI5mKvBJ54uxb4wkZUTsUDdESPshEr2i6qWel0l+uiu9evnfq3rqoGAO4JwkA3zMaQjltaiDek5LgQCRXWX9Oa92bH7+E32WrRKjvk4kqnDt5DaINwWpraiAw9NzIkj8QywDyu60NQfhnQHI1dFdwiGj4jtIV3BPPf4DfKnj1S2jDhr3+zGPqHmApjVMnfDl67hca9h5E5Y1Qo81stS54lUC7EEOPL8QFX9tN3eDh8jMgy72fzrCNtn1tBWZWXaSKSeKebZtUKCzuMpOeiFIoEP8n6pIP88ovXqkHURmFkHfKDv04FBO16iGfEzd12CeXf2i8sdFk8FuwM/SKrhj1jUAm0bXGq7Q69pvmJzM4mhF4qWH9j00e6xmRyjF5gTXVhoT1WFEHPmbYKBAq5eZyebI8snmTsBB+H4F90RkCq2vQq/8IJJa/LO83RB553m3dlxoebUkENqrGEmP4Gmy2iIClpMsCYISjsxhv4tpEV8zhKazfE9jaUHS5pc4PRGVgp8PpnZnbR3

 

I have defined a set of queues of type A
and other functions as follows:

 

Inductive queue (A:Set):Set :=
| nilq  : queue A
| consq : A-> queue A-> queue A.

 

Fixpoint ins_back (A:Set)(a:A)(s:queue A):
(queue A):=
match s with
| nilq _ => consq _ a (nilq _)
| consq _ x y => consq _ x (ins_back _ a y)
end.

 

Theorem False_elim (A:Set)(f:False):A.
elim f.
Qed.

Fixpoint set_queue (A:Set)(s:queue A): Prop:=
match s with
| nilq _ => False
| consq _ x y => True
end.


Theorem eq_subst (A:Set)(x y :A)(P:A->Prop)
(e:(eq x y))(i:(P y)) : P x.
rewrite -> e.
exact i.
Qed.

 

Theorem not_eq_consq_nilq (A:Set)(x:A)
(y:queue A): not (eq (consq A x y)(nilq A)).
intro.
exact (eq_subst (queue A) (nilq A)
      (consq A x y)(set_queue A)
       (eq_sym H) I).
Qed.

 

I want to define a recursive function that
computes the last element on a non-empty
queue.

To this end I've defined:

 

Fixpoint last (A:Set)(s:queue A):
(not (eq s (nilq A))) -> A:=
match s with
| nilq _ => (fun p =>
(False_elim A (p (eq_refl _))))
| consq _ x (nilq _) => (fun p => x)
| consq _ x (consq _ x2 y) =>
(fun p => last _ (consq _ x2 y)
(not_eq_consq_nilq _ x2 y))
end.

 

I get the message:
Cannot guess decreasing argument of fix.

 

I don't understand how is defined the order
relation in Fixpoint definitions. The
recursive call is in a smaller argument.

 

Someone can help me ???

Regards,
Patricia

 




Avast logo

El software de antivirus Avast ha analizado este correo electrónico en busca de virus.
www.avast.com




  • [Coq-Club], psperatto, 03/28/2019

Archive powered by MHonArc 2.6.18.

Top of Page