Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Why are my terms not reducing?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Why are my terms not reducing?


Chronological Thread 
  • From: mukesh tiwari <mukeshtiwari.iiitm AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] Why are my terms not reducing?
  • Date: Thu, 25 Jan 2024 17:27:45 +0000
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=mukeshtiwari.iiitm AT gmail.com; spf=Pass smtp.mailfrom=mukeshtiwari.iiitm AT gmail.com; spf=None smtp.helo=postmaster AT mail-yb1-f170.google.com
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:oVxJX6FVU9bVCvj+pLqE/ceALOsnbusQ8zAXPo5KKCC9E/byqy nAppomPHPP5Ar5HUtOpTn/Asm9qALnn6KdiLN5VYtKHjOW21dAR7sO0WKN+UyDJ8SHzJ856Z td
  • Ironport-phdr: A9a23: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 Rk5jgY4auMopm+E3g==
  • Ironport-sdr: 65b29a26_qHbV4iWjsznPWkNRFZ5nfEqAZMIvo04gry2rYr/PNR3VY38 4w1o1o2z4NtWj/edFqpl3iOvzjluBC9ZLkEeBlQ==

Hi everyone,

I rewrote my previous code using proof by reflection [1]. In the past, I used to get a bunch of theorems when I tried *Print Opaque Dependencies decode_aux.* but after rewriting it [2] I am nothing, except *Section Variables A : Type*.  Moreover,
I can compute with this function for the values that in the past used to stuck [3], but I can still not proof the theorem [4]:

Lemma decode_aux1_union_l (r1 r2 : Regex) (bc : list bool) :
    decode_aux1 (r1 ∪ r2) (false :: bc) =
    match decode_aux1 r1 bc with
    | Some (t, bc') => Some (parse_union_l t, bc')
    | None => None
    end.
 
Any idea how to get around this?

Best,
Mukesh

[1] https://gist.github.com/mukeshtiwari/4a392728bd9907fa3980b3ccbe5211eb
[2] https://gist.github.com/mukeshtiwari/4a392728bd9907fa3980b3ccbe5211eb#file-wf-v-L543
[3] https://gist.github.com/mukeshtiwari/4a392728bd9907fa3980b3ccbe5211eb#file-wf-v-L540 
[4] https://gist.github.com/mukeshtiwari/4a392728bd9907fa3980b3ccbe5211eb#file-wf-v-L551

On Wed, Jan 24, 2024 at 4:34 PM Agnishom Chattopadhyay <agnishom AT cmi.ac.in> wrote:
Thanks for the suggestion, Samuel.

Indeed, in the case of Epsilon, this seems to work. 

However, it seems that now my proofs depend on _which_ proof of accessibility I use. For example,

Definition decode_aux1 (e : Regex) (btc : list bool) : option (parse_tree * list bool) :=
decode_aux (e, btc) (rbc_lt_wf (e, btc)).

Lemma decode_aux_union_l (e1 e2 : Regex) (bc : list bool) (t : parse_tree) (bc' : list bool) :
(forall acc, decode_aux (e1, bc) acc = Some (t, bc')) ->
decode_aux1 (Union e1 e2) (false :: bc) = Some (parse_union_l t, bc').
Proof.
unfold decode_aux1.
intros.
simpl. (* the term explodes in size *)
rewrite H. reflexivity.
Qed.

Now, this works but it is not very helpful because the hypothesis here requires something that is universal in the accessibility proof.

On Mon, Jan 22, 2024 at 3:50 PM Samuel Gruetter <gruetter AT mit.edu> wrote:
Hi Agnishom,

The problem you encounter at the end of Method1.v is that Fixpoints only reduce if the argument marked as structurally decreasing is a constructor. So your problem could be "minimized" as follows:

Fixpoint my_add(n m: nat) {struct n}: nat :=
  match m with
  | O => n
  | S m' =>
    match n with
    | O => m
    | S n' => S (S (my_add n' m'))
  end
end.

Goal forall x, my_add x 0 = x.
  intros. Fail reflexivity. simpl. (* doesn't simplify *)
Abort.

In your Method1.v, you could work around the problem by replacing the arbitrary acc you pass to decode_aux with a transparently-defined (rbc_lt_wf _), which you already do in decode_aux1, and proving the lemma for this one works as expected:

Lemma decode_aux1_eps (bc : list bool) :
  decode_aux1 Epsilon bc = Some (parse_epsilon, bc).
Proof.
  unfold decode_aux1. simpl. reflexivity.
Qed.

Best,

Sam


-----Original Message-----
From: Agnishom Chattopadhyay <agnishom AT cmi.ac.in>
Subject: [Coq-Club] Why are my terms not reducing?
Date: 01/17/2024 05:40:33 PM

Hi Coq-club;

I recently came across the proof pearl titled "Well-founded recursion done right" by Xavier Leroy, and considered applying it to a proof I previously tried to attempt.

I wish to define the function described in this Haskell program, and I have tried three different approaches.

Approach 1(Method1.v) : This uses the mentioned proof-pearl. In this case, the _expression_ refuses to reduce.
Approach 2(Method2.v): Uses the refine tactic and this technique (from Pit-Claudel) to get rid of opaque proofs. Much of this code is thanks to Mukesh Tiwari. However, even in this case, the _expression_ refuses to reduce.
Approach 3(GitHub Issue): Uses the Equations package. This crashes coqtop.

Any ideas on why these refuse to reduce? In Page 2 of the proof-pearl, the author says "Now, the hole [...] is any proof of [...],and it can be opaque.". So, I assume that the error is not due to me providing opaque proofs.

--Agnishom




Archive powered by MHonArc 2.6.19+.

Top of Page