Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] records ?

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] records ?


Chronological Thread 
  • From: Jeremy Dawson <Jeremy.Dawson AT anu.edu.au>
  • To: coq-club AT inria.fr
  • Subject: Re: [Coq-Club] records ?
  • Date: Mon, 6 Sep 2021 13:58:17 +1000
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=anu.edu.au; dmarc=pass action=none header.from=anu.edu.au; dkim=pass header.d=anu.edu.au; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=dqAmu4/mdDjfEWRczllrc+lbHxr7Z5IOOawQOAbewbc=; b=d1Fx0LuCR1tYqPbP/40jq7cfnygw47WN7Rzqc6065qgBNCtpVWBMVuOWyIVGXKIA1zs1JOaUgNFMcidONGUzXaJ9MCP96xcz+tRBtk4yLtmm8XxjoylWZmcowhGPKwZb9aYRTrtiluS1vVGeyXFd3wvym1o6DX01B6pmaHEJ8TXVBYmBR2fMafJSXap2T9cMh156krGRzP8ZY/gK76jKgNDkwOvI8lOrv3+olAoQIKHck8KR5yXyXrA1381voW62ANVHL+RO1nm+n8xUPVBHH2E5tgYNT5qpMgTaqqU5OBkUv/9JLGcxB6SwKIJ22/FPrASbvUiDu6XQ82JUrdVX9A==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eGq3fmNLc41F+p3NWjgDxRYtMGSztuHZdrObQrpL2aHxXayNswIras49t0MiemEJGHZdnRqNLReD+PZcFHo2Py/x3uDfCUpUyPUXKdWeRqhM27Et13IAoZNJVSwUDhUfdA/eq0mww8xaoTzTCTWa2rDrdoX2M19lFgtcGp431eIBQinPepu+oEFLlfgeRasm06xsiSwKcvCUOWyD5Yl6n2TWWcFnfKclvfjolJ/kBFfqPnjnDwMi3kTQzFDCvnMSJMx4ooaNjgzxmqAY4yQZr2kbEZvpgwrj6VheZmkcC5T1Nw2/MVpLcMRxA0fbZg/K+wkFHthV/RYY7dxdlWexAQ==
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=Jeremy.Dawson AT anu.edu.au; spf=Pass smtp.mailfrom=Jeremy.Dawson AT anu.edu.au; spf=Pass smtp.helo=postmaster AT AUS01-SY4-obe.outbound.protection.outlook.com
  • Ironport-hdrordr: A9a23:Xe5fU6FmDMzWWMSopLqFYpHXdLJyesId70hD6qkvc3Fom52j/fxGws5x6faVslkssQIb6Ku90c67MAnhHP9OkPEs1NKZMDUO11HYS72KgbGSpgEIXheOj9K1tp0QDJSWaueAaWSS5PySiGfYYqcdKZu8gcKVbI/lvgtQpGpRC52IgT0JaTpzXncGIjWvUvECZeehD4d81nCdUEVSSv7+KmgOXuDFqdGOvJX6YSQeDxpizAWVlzun5JPzDhDdh34lIn9y6IZn1VKAvx3y562lvf3+4hjA11XL55ATvNf60NNMCOGFl8BQADTxjQSDYphnRtS5zX0IidDqzGxvvMjHoh8mMcg2w3TNflutqR+o4AXk2CZG0Q6q9XaoxV/Y5eDpTjMzDMRMwahDdAHC1kYmtNZglIpWwmOwrfNsfFP9tRW4w+KNewBhl0Kyr3Znu/UUlWZjXYwXb6IUhZAD/XlSDIwLEEvBmcEa+dFVfYPhDcttABanhyizhBgq/DXsZAV8Iv6+eDlAhiTPuAIm20yQpiAjtbIidnRpzuNKd3AL3ZWDDk1SrsA8ciYhV9MLOA4we7rGNoXze2O/DIuzGyWuKEhVAQOHl3bIiI9Fkd1CPqZ4g6caidDKS1NTs3RaQTObNfGz
  • Ironport-phdr: A9a23:UqFXnh1uxmr9+d8ysmDOyQMyDhhOgF0UFjAc5pdvsb9SaKPrp82kYBaHo6Q0xwKWFazgqNt8w9LMtK7hXWFSqb2gi1slNKJ2ahkelM8NlBYhCsPWQWfyLfrtcjBoVJ8aDAwt8H60K1VaF9jjbFPOvHKy8SQSGhLiPgZpO+j5AIHfg9qr2+yo/5DffgpEiTq/bLhvMBi4sALdu9UMj4B/MKgx0BzJonVJe+RS22xlIE+Ykgj/6Mmt4pNt6jxctP09+cFOV6X6ZLk4QqdDDDs6KWA15dbkugfFQACS+3YTSGQWkh5PAwjY8BH3W4r6vyXmuuZh3iSRIMv7Rq02Vzu/9admUALmhjkJNzA582/ZhMJ/g6BHrxyuqBNy2JLUbYKPOfZiYq/Qc9EXSGxcVchRTSxBBYa8YpMLAeUfJ+ZXsYz9plsTphWwHwatCvjvyjhOhnTr2qA01/ouERvY0wwlH9MCqnrao8/7NacJVuC1yrLFwi/Fb/NLwzvy9pXHcg07rf6WQLJ9aMzcwlQgGA3ZlFufs5DlPy+L2eQXtWiW9+RtWP6hhmMltwx8vCWiytoxhoXUhY8YyFTJ+CRnzYg7JtC1VkF2bMKgHZdOtCyXOYR7T8AsTmxquCg3xLILtJy9cSMXxponwBvfZOaGc4iO+h/jSf6RLil+hHJjYr6wmQu98VWmx+bhVce0yE5HoyVZntXWq3wByx7e5tKaRvdh/EqtwyuD2x7R5+1cPEw4i7bXJ4Q8zrMzjJYfrEDOEyHslEnog6KbdUMp8fWy5ev9eLXpvJqcOpd0ig7gNqQundSyDPg2PQYTQ2SX5P2w2qDh8kD2WblKieY5nbfDvJDdOMQburW2AwhI0oYl9hmzFS+m0M4fnXkbMl1KZA6Hj4nuO1HIOvz4Cuq/g0iokDdswPDGPaftDYnKLnjGiLvhfLB95FBAyAcrwt1T+4hYBqwdLP/xQEP9qcDUAx0jPwCp3erqCs1x1oYEVmKOBq+ZPrnSsViN5u83J+eDepUVtyj4K/kl/fLgg2U2mFEGfamu25sac2q3HvJ7I0mDf3Xjn8oBHX0QsQojVODqkkGNUSZPZ3auWKIx/i00CIW/DYvaWo+thKGB0zygE51NZmFGD0iMHm3ye4WFXfcMciOSLdV7njwKT7jyA7MmgBqprUrxz6dtBuvS4CwR85z5h/Zv4OiGtxwo+DllR+iUzHqKSSkgvG4SSjonmox2vld6zH+K17U+jvBFU9VOsaAaGjwmPILRmrQpQ+v5XRjMK4/hoLmOS9O7Rzw9U5Q43o1XC66cM/yftUiamhGbX/oSnbHNA4Eo+KXB2XS3P9x613vNyKgmiR8hX9dLMmqlwKV48lqKb2Ysu0yfiuCnebla1TOfrA++

Hi Agnishom,

I'm rather puzzled - I assume you are saying that the syntax I gave, ie
{| c := ccc ; i := iii |}, is in fact a record.

But if so, why doesn't the split tactic work?

The following you gave:

Definition Person : Type := {
name : String;
age : int;
}.

I'm guessing you are saying that defines a record type in Coq.

However why I enter that I get the following error:

Definition Person : Type := {
name : String;
age : intCoq < Coq < Coq < }.
Toplevel input, characters 46-47:
> name : String;
> ^
Error:
Syntax error: '&' or '|' expected after [constr:operconstr level 200] (in [constr:operconstr]).

Cheers,

Jeremy


On 6/9/21 1:32 pm, Agnishom Chattopadhyay wrote:
Records are like a product type, with desginated function for each projection function. Informally, you can think of them as a class with fields in some object oriented language.

For example,

class Person {
  String name;
  int age;
}

would be

Definition Person : Type := {
  name : String;
  age : int;
}.

You can read the section titled "Records are Products" from https://softwarefoundations.cis.upenn.edu/qc-current/Typeclasses.html <https://softwarefoundations.cis.upenn.edu/qc-current/Typeclasses.html>
(The rest of the page is not really relevant for this purpose.)

Records are also a feature in OCaml or Haskell. You can google that.



On Sun, Sep 5, 2021 at 10:20 PM Agnishom Chattopadhyay <agnishom AT cmi.ac.in <mailto:agnishom AT cmi.ac.in>> wrote:

Locate locates notation that is defined by the programmer. I believe
that "{|" is syntax which is part of Gallina.

As for the next step, have you tried split? You can also try solving
this with exact.

--agnishom

On Sun, Sep 5, 2021, 21:25 Jeremy Dawson <Jeremy.Dawson AT anu.edu.au
<mailto:Jeremy.Dawson AT anu.edu.au>> wrote:


Hi,

I have a hypothesis (got by playing around with someone else's
code) of
the form {| c := ccc ; i := iii |}

The command Locate "{|". produces no results.

I found in the documentation a syntax definition

term_record::={| field_def*; ;? |}

but I can't find anything about what that means or what you can
do with it.

Does it mean I have a thing of type ccc and another thing of
type iii?

If so how do I actually get hold of those things?

Then, when I have a goal of the form {| c := ccc ; i := iii |}
what does that mean and what is the next step to solving it?

Thanks

Jeremy




Archive powered by MHonArc 2.6.19+.

Top of Page