Skip to Content.
Sympa Menu

coq-club - [Coq-Club] Mapping of types to new one in a project

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] Mapping of types to new one in a project


Chronological Thread 
  • From: Suneel Sarswat <suneel.sarswat AT gmail.com>
  • To: coq-club <coq-club AT inria.fr>
  • Subject: [Coq-Club] Mapping of types to new one in a project
  • Date: Mon, 24 Jul 2023 17:24:16 +0530
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=suneel.sarswat AT gmail.com; spf=Pass smtp.mailfrom=suneel.sarswat AT gmail.com; spf=None smtp.helo=postmaster AT mail-ej1-f47.google.com
  • Ironport-data: A9a23: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 VUIqat4rI1XhKI//QuMu5KYJf3BgA7S8g==
  • Ironport-hdrordr: A9a23:OC4mj6vZE1Y6B9shAR2J1sRY7skDe9V00zEX/kB9WHVpm62j5q eTdZEgvyMc5wxhO03I9erhBEDiexLhHPxOkOss1N6ZNWGMhILCFvAG0WKN+UyFJ8Q8zIJgPG VbHpSWxOeeMbGyt6jH3DU=
  • Ironport-phdr: A9a23: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 NPIkfCqQN+n293R9MoYQcPTLZDfWEc=
  • Ironport-sdr: 64be6675_YAA8k3LOVUO2tKX5UkPe/bwMFkHzQLY7rVzu4XeWCdc3WrW sv+U8y/fLFB5gHT/OMnCcK2l0HGY/qwMc3Lz7yA==

Dear friends,

I have an old project (large one) in which I have a few functions, their specifications, and their correctness theorem along with their correctness proofs. Now I have redefined some of the functions and even input-output types. Although my new input types have changed, but the actual values and computations are the same. It's the types at each input instance that have changed (not their actual values and computations) and old functions are replaced with more efficient versions now (See a minimum example below.).

Now I want to restate some of the theorems in terms of new input-output types and functions. The goal is to do this with a minimum amount of new proofs or minimum efforts by using old functions and their correctness proofs.  

Basically, I want to show a bijection between the outputs of new and old programs and then want to use it to show the correctness of the theorems without redoing the old work again (which means using the old work as a black box). Please suggest some ideas.

Have a great day.

- Suneel

--------------------------------

(* Old input type *)

Record r_old:Type:= Mk_r{
                        a:> nat;
                        b: nat;
                        }.


(* Current input type is *)

Record r_new:Type:= Mk_r{
                        c: nat;
                        d: nat;
                        }.

(* I have a = c and b = d. *)

(* Old function *)

Definition f_old (B: list r_old): (list r_old):= f_old ( Sort_old a_dec B).

(* New function *)

Definition f_new (B: list r_old): (list r_new):= f_new ( Sort_new c_dec B).

(* Note: 
    Sort_new is more efficient than Sort_old. 
    The elements of B are all unique.
    f_new and f_old are the "same" programs in the sense that they do exactly the same calculations. Also is there any way to avoid writing f_new?*)




Archive powered by MHonArc 2.6.19+.

Top of Page