coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Guillaume Melquiond <guillaume.melquiond AT inria.fr>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] external proof of termination
- Date: Fri, 25 Apr 2014 19:22:02 +0200
On 25/04/2014 17:49, Kirill Taran wrote:
Hello,
I have a fixpoint with "fuel" argument (i.e. argument which restricts
depth of recursion).
Then I have a proof that for any argument of this fixpoint there is such
"fuel" value, that
the fixpoint suceeds.
Fixpoint f (x : X) (n : nat) : option Y := ...
Lemma termination : forall x, exists n y, f x n = Some y.
But then I somehow can't invent a way to compose then into "good" fixpoint:
Fixpoint f' (x : X) : Y.
Could anybody prompt me how to incorporate the proof into "good" fixpoint?
Require Import ConstructiveEpsilon.
Parameter X Y : Type.
Parameter f : X -> nat -> option Y.
Hypothesis termination : forall x, exists n y, f x n = Some y.
Definition f' : X -> Y.
Proof.
intros x.
destruct (constructive_indefinite_ground_description_nat
(fun n => match f x n with Some _ => True | _ => False end))
as [n Hn].
- intros n.
case f.
intros _.
now left.
now right.
- destruct (termination x) as [n [y H]].
exists n.
now rewrite H.
- now destruct (f x n) as [|y].
Defined.
This function will not really compute. It was not clear from your email if you just wanted to define it or if you also wanted to use it for computing. If the latter, there is a standard trick using the Acc predicate to get it to compute. I can give more details if needed.
Best regards,
Guillaume
- [Coq-Club] external proof of termination, Kirill Taran, 04/25/2014
- Re: [Coq-Club] external proof of termination, Adam Chlipala, 04/25/2014
- Re: [Coq-Club] external proof of termination, Jason Gross, 04/25/2014
- Re: [Coq-Club] external proof of termination, Arnaud Spiwack, 04/28/2014
- Re: [Coq-Club] external proof of termination, Eddy Westbrook, 04/25/2014
- Re: [Coq-Club] external proof of termination, Kirill Taran, 04/25/2014
- Re: [Coq-Club] external proof of termination, Eddy Westbrook, 04/25/2014
- Re: [Coq-Club] external proof of termination, Kirill Taran, 04/25/2014
- Re: [Coq-Club] external proof of termination, Eddy Westbrook, 04/25/2014
- Re: [Coq-Club] external proof of termination, Kirill Taran, 04/25/2014
- Re: [Coq-Club] external proof of termination, gallais, 04/28/2014
- Re: [Coq-Club] external proof of termination, gallais, 04/28/2014
- Re: [Coq-Club] external proof of termination, Jason Gross, 04/25/2014
- Re: [Coq-Club] external proof of termination, Guillaume Melquiond, 04/25/2014
- Re: [Coq-Club] external proof of termination, Kirill Taran, 04/25/2014
- Re: [Coq-Club] external proof of termination, Adam Chlipala, 04/25/2014
- Re: [Coq-Club] external proof of termination, Guillaume Melquiond, 04/25/2014
- Re: [Coq-Club] external proof of termination, Kirill Taran, 04/26/2014
- Re: [Coq-Club] external proof of termination, Kirill Taran, 04/25/2014
- Re: [Coq-Club] external proof of termination, Adam Chlipala, 04/25/2014
Archive powered by MHonArc 2.6.18.