coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: "D. Ben Knoble" <ben.knoble AT gmail.com>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Mapping of types to new one in a project
- Date: Mon, 24 Jul 2023 09:12:11 -0400
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=ben.knoble AT gmail.com; spf=Pass smtp.mailfrom=ben.knoble AT gmail.com; spf=None smtp.helo=postmaster AT mail-ed1-f46.google.com
- Ironport-data: A9a23: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 VUIqat4rI1XhKI//QuMu5KYJf3BgA7S8g==
- Ironport-hdrordr: A9a23:yPYJOa/2F3k9I3eS9+Zuk+FSdb1zdoMgy1knxilNoENuH/Bwxv rFoB1E73TJYW4qKQkdcKO7SdK9qBLnhNZICOwqUYtKMzOW3FdAQLsC0WKm+UyYJ8SczJ8X6U 4DSdkYNDSYNzET4qjHCUuDYrAdKbK8gcOVbJLlvhJQpHZRGsNdBmlCajqzIwlTfk1rFJA5HJ 2T6o5svDy7Y0kaacy9Gz0sQ/XDj8ejruOqXTc2QzocrCWehzKh77D3VzKC2A0Fbj9JybA+tU DYjg3C4Lm5uf3T8G6R64aT1eUYpDLS8KoDOCW+sLlUFtwqsHfqWG1VYczNgNnympDs1L9lqq iIn/5qBbUI15qYRBDJnfKq4Xir7N9m0Q6c9beV7EGT3fDRVXY0DdFMipledQac4008vMtk2K YOxG6BsYFLZCmw6xgVyuK4Ii2CrHDE1UYKgKoWlThSQIEeYLheocgW+15UCo4JGGb/5Jo8GO djAcnA7LIOGGnqJkzxry1q2pihT34zFhCJTgwLvdGUySFfmDR8w1EDzMISk38c/NY2SoVC5e 7DLqN0/Ys+OPM+fOZ4HqMMUMG3AmvCTVbFN3+TO03uEOUdN3fEu/fMkccIDSGRCe81JbcJ6e T8uQljxBAPkmrVeLyz4KE=
- Ironport-phdr: A9a23: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 W7c8oAorFahne2CjDFgVUgWwgs=
- Ironport-sdr: 64be78b8_LVPPdLRplVPr0B4v2nNRpyb3tth5Ld640nIMwROVIspxXiN cwV/YoBewTN0+j498awdAqPO+i/wGOE6YhxarPQ==
I should think that, given some relation R between old and new input
(say, a = c, b = d, as in your code), you could prove "forall x y, R x
y -> f_old x = f_new y". Then in your proofs, you could rewrite "f_new
y" to "f_old x", and your goals would be (1) similar to the "old"
goal(s) and (2) "R x y".
Note that the details might be a little subtle since your functions
consume lists of the input type (so you would probably need something
like "Forall R xs ys" as a hypothesis).
On Mon, Jul 24, 2023 at 7:54 AM Suneel Sarswat <suneel.sarswat AT gmail.com>
wrote:
>
> 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?*)
>
--
D. Ben Knoble
- [Coq-Club] Mapping of types to new one in a project, Suneel Sarswat, 07/24/2023
- Re: [Coq-Club] Mapping of types to new one in a project, D. Ben Knoble, 07/24/2023
- Re: [Coq-Club] Mapping of types to new one in a project, mukesh tiwari, 07/24/2023
- Re: [Coq-Club] Mapping of types to new one in a project, Suneel Sarswat, 07/24/2023
- Re: [Coq-Club] Mapping of types to new one in a project, mukesh tiwari, 07/24/2023
- Re: [Coq-Club] Mapping of types to new one in a project, Suneel Sarswat, 07/25/2023
- Re: [Coq-Club] Mapping of types to new one in a project, mukesh tiwari, 07/24/2023
- Re: [Coq-Club] Mapping of types to new one in a project, Suneel Sarswat, 07/24/2023
Archive powered by MHonArc 2.6.19+.