Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Stuck with weird goal imposed by Fix_eq

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Stuck with weird goal imposed by Fix_eq


Chronological Thread 
  • From: Madhukar <madhukar.yerraguntla AT gmail.com>
  • To: coq-club AT inria.fr
  • Subject: [Coq-Club] Stuck with weird goal imposed by Fix_eq
  • Date: Sun, 29 Jan 2023 12:29:12 +0530
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=madhukar.yerraguntla AT gmail.com; spf=Pass smtp.mailfrom=madhukar.yerraguntla AT gmail.com; spf=None smtp.helo=postmaster AT mail-yb1-f176.google.com
  • Ironport-data: A9a23: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
  • Ironport-hdrordr: A9a23:y4k9e6hOGvvfKxo/HlrJPt41NnBQXtcji2hC6mlwRA09TyX4rb HIoB1/73XJYVkqKRIdcLy7WJVoIkm8yXcW2/hyAV7KZmCP01dAR7sSiLcKrQeQfxEWNdQw6U 6jScVD4RHLYmSSRPyV3DWF
  • Ironport-phdr: A9a23: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 vEehQ53YOBr/zDpsQ5fGw==
  • Ironport-sdr: 63d6194d_WJlzHy+jJ1crhx+5yE50tmD0Sfhp2fZ8k7TqrPPLCdMeoz3 rru7/I1OJUkWpmWawa8I/axb5b6/Dk6IHAzBOBw==

Hi Coq-club,

I am trying to do Xavier Leroy's course exercises [1] but with techniques picked up from CPDT [2] book. Apologies for the longish mail.

In the module on fixpoints and knaster-tarski fixpoint proof, I defined the iterate function using Fix function this way: (in the module they define with structural recursion using accessibility relation on x)


Definition iterate': forall x : A, le x (F x) -> A.

  refine 

  (@Fix A gt gt_wf (fun (x: A)  => le x (F x) -> A) 

      (fun (x: A)

           (iterate: forall y : A, gt y x -> 

           (fun (x: A)  => le x (F x) -> A)  y) =>  

         let x' := F x in

         match eq_dec x x' with

         | left E   => fun _ => x

         | right NE =>  fun nle => iterate x' _ _

         end)

      ).

      - split; auto.

      - now apply iterate_le.

Defined.


While trying to prove the following result, I am stuck at a weird goal imposed by Fix_eq.


Lemma iterate_fix_eq': forall x PRE, (iterate' x PRE) = (F (iterate' x PRE)).

Proof.

  induction x using (well_founded_induction gt_wf). intros; unfold iterate'.

  rewrite (Fix_eq gt_wf (fun (x: A)  => le x (F x) -> A)). 

     - destruct (eq_dec x (F x))  eqn:H_eq'; auto. fold iterate'. apply H; split; auto. (* proves the main result *)

     - intros. destruct (eq_dec x0 (F x0))  eqn:H_eq'; auto. (* stuck here *)



I also have an additional hypothesis for convenience: 

 Hypothesis eq_is_eq: forall x y, eq x y -> x = y.


The goal is: 

  • x0: A
  • f, g: forall y : A, gt y x0 -> le y (F y) -> A
  • H0: forall (y : A) (p : gt y x0), f y p = g y p
  • n: ~ eq x0 (F x0)
  • H_eq': eq_dec x0 (F x0) = right n 

======================================================

(fun nle : le x0 (F x0) => f (F x0) (conj nle n) (iterate_le x0 nle)) =

(fun nle : le x0 (F x0) => g (F x0) (conj nle n) (iterate_le x0 nle))


As you can see, I need to prove that the result of the recursive calls are the same. I am in fact able to prove a modified version of the same goal:

(forall (nle:le x0 (F x0)),  f (F x0) (conj nle n)  = g (F x0) (conj nle n))

My induction hypothesis gives me what I need to prove but the extra `(iterate_le x0 nle) `  arg is throwing me off and I am not able to proceed further since congruence or rewrite isn't working here. Any pointers would be very helpful. Thanks in advance for the help.


[1] https://github.com/xavierleroy/cdf-mech-sem/blob/master/Fixpoints.v

[2] http://adam.chlipala.net/cpdt/cpdt.pdf


Regards,

Madhukar




Archive powered by MHonArc 2.6.19+.

Top of Page