coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Maximilian Wuttke <s8mawutt AT stud.uni-saarland.de>
- To: coq-club AT inria.fr
- Subject: Re: [Coq-Club] Redefinition of extracted parameter
- Date: Thu, 27 Sep 2018 11:48:21 +0200
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=s8mawutt AT stud.uni-saarland.de; spf=None smtp.mailfrom=s8mawutt AT stud.uni-saarland.de; spf=None smtp.helo=postmaster AT theia.rz.uni-saarland.de
- Autocrypt: addr=s8mawutt AT stud.uni-saarland.de; prefer-encrypt=mutual; keydata= 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
- Ironport-phdr: 9a23:II+zUREGEFQw/azZJUftnp1GYnF86YWxBRYc798ds5kLTJ7zps2wAkXT6L1XgUPTWs2DsrQY07WQ6/iocFdDyK7JiGoFfp1IWk1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZrKeTpAI7SiNm82/yv95HJbAhEmDiwbaluIBmqsA7cqtQYjYx+J6gr1xDHuGFIe+NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PGAu+MLrrxjDQhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VDK/5KlpVRDokj8KOSMn/mHZisJ+j6xVrxyuqBN934HZe46VOOZkc63aYd8XS2pMU8BMXCJBGIO8aI4PAvIGM+lCoIj9pl4OrRq6BQmtHuzvzCJDiX/r3a0mz+QhEh/J1xEnEtIVs3nUqc/6NakPUeCp0KnF1i7Db+9L2Tjg8oTIbxYhofCVUbJra8Xe01MvFwffgVWWtIPpJS6a2foUvmWd8uFuW+Wvi2s9pAFwpDii3sYsio/ThoIU0F/I7yt5wJwzKNalS0B7ecapHIZeuiyVLYd7RsIvT3tqtSogxLAKpIa3cDUExZko3RLSb/2Kf5KV7h/gVeudOyp0iXxjdbminRi961Kgxff5VsSs0FZFsC5Fkt7Uu3AR1xzc9MmHReFn8ke72DeDzR3T6udFIUwtjqrUMYQuwqQ0lpUJt0TMAzX6l1jog6OOd0Uk/Pan6/j/b7n7qJKROJV4hwX/P6g0mMGzG+o1PhUWU2ie4+u81bnj/UPjQLVNi/07irLZvZPfJcsBqK+5HhNV0po45hakEzemzckXkWMaLFJDeRKLlpPpNEvUL/DiCfewmVKsnypxy//bILLtGo/NIWTbkLf9YbZ97FZRxxY0zdBG/p5bFrUBIO/oVULqr9zZDho5MxSuzOr9CdV90JkeWWOVDaODPqPSqwzA2uV6KO6VIYQRpTzVKv4/5veog2Vqt0UaePyM1IsWbXG8H/1ga3qEfWbvj59VCjcPtxUjUPDCk0GfXXhOYXf3RKs1/DUyDo7gAYqVFdPlu6CIwCruRs4eXWtBEF3ZSS65JbXBYO8FbWepGuEklzUFUba7TIp7j0O1qBL2jadhL6/P8yQCsZvl2J556r+LzE1gxXlPF82Yllq1YSRshGpSHW0twL1z51F7yxKY2KFih/VeGZpf6qERC1poBdvn1+V/TuvKdEfBc9OOEgj0XtWrADh3VMB33tkPJl10Es+mhxbPmSanUecY
- Openpgp: preference=signencrypt
Hi Oscar,
I think the command `Extract Constant foo => "foo"` is what you seek.
This extracts the Coq axiom `foo` with the OCaml code "foo".
This way you can implement `foo` as a OCaml function instead of a Coq
function.
See the documentation at:
<https://coq.inria.fr/distrib/current/refman/addendum/extraction.html#realizing-axioms>
Sincerely
Maximilian
On 9/26/18 5:59 PM, King, Oscar wrote:
> Hi again,
>
>
> Sorry I should have been a little more specific. If I have the following
> code. In file 2 I then try to mask the definition of foo in file 1. This
> is not going to work because file1 still uses the definition of foo in
> file 1. It will compile but will fail when you try to run it. Say I have
> other files and use foo elsewhere. It may occur that I use file2.foo
> whilst it expects file1.foo or vice versa, which can be an issue.
>
>
> In my case I want to declare a hashing function as a parameter call it
> "hash_x" and defer implementation to OCaml. It will extract as foo does.
>
>
> Is there a way of doing this or do I need to define everything in coq?
>
>
> Thanks,
>
>
> Oscar
>
>
> Parameter foo: nat -> nat -> nat.
> Definition bar x y:= foo x y.
> Require Extraction.
> Recursive Extraction bar.
>
> (* Extracted Code *)
> type nat =
> | O
> | S of nat
>
> (** val foo : nat -> nat -> nat **)
>
> let foo =
> failwith "AXIOM TO BE REALIZED"
>
> (** val bar : nat -> nat -> nat **)
>
> let bar =
> foo
>
> (* File 2 *)
>
> let foo = x + y
>
>
>
> ------------------------------------------------------------------------
> *From:* King, Oscar
> *Sent:* Friday, September 21, 2018 3:44:59 PM
> *To:*
> coq-club AT inria.fr
> *Subject:* Redefinition of extracted parameter
>
> Hi,
>
> I’m trying to extract some code with parameters that I want to define in
> OCaml however when I extract and try to redefine by defining function or
> type with the same name I get type conflicts between files. I have
> constructed an example below:
>
> How would I redefine foo in the extracted code properly?
>
> Thanks in advance,
>
> Oscar
>
> Parameter foo: nat -> nat -> nat.
>
> Definition bar x := foo x.
>
> Require Extraction.
>
> Recursive Extraction bar.
>
> (* Extracted Code *)
> type nat =
> | O
> | S of nat
>
> (** val foo : nat -> nat -> nat **)
>
> let foo =
> failwith "AXIOM TO BE REALIZED"
>
> (** val bar : nat -> nat -> nat **)
>
> let bar =
> foo
>
>
Attachment:
signature.asc
Description: OpenPGP digital signature
- [Coq-Club] Redefinition of extracted parameter, King, Oscar, 09/21/2018
- Re: [Coq-Club] Redefinition of extracted parameter, Gaëtan Gilbert, 09/21/2018
- <Possible follow-up(s)>
- Re: [Coq-Club] Redefinition of extracted parameter, King, Oscar, 09/26/2018
- Re: [Coq-Club] Redefinition of extracted parameter, Maximilian Wuttke, 09/27/2018
Archive powered by MHonArc 2.6.18.