From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 8CD2AE0128 for ; Tue, 30 Aug 2022 15:58:06 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=jnfoster@cs.cornell.edu; spf=Pass smtp.mailfrom=jnf27@cornell.edu; spf=None smtp.helo=postmaster@mail-io1-f48.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of jnfoster@cs.cornell.edu) identity=pra; client-ip=209.85.166.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jnf27@cornell.edu"; x-sender="jnfoster@cs.cornell.edu"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of jnf27@cornell.edu designates 209.85.166.48 as permitted sender) identity=mailfrom; client-ip=209.85.166.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jnf27@cornell.edu"; x-sender="jnf27@cornell.edu"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:35.190.247.0/24 ip4:64.233.160.0/19 ip4:66.102.0.0/20 ip4:66.249.80.0/20 ip4:72.14.192.0/18 ip4:74.125.0.0/16 ip4:108.177.8.0/21 ip4:173.194.0.0/16 ip4:209.85.128.0/17 ip4:216.58.192.0/19 ip4:216.239.32.0/19 ~all" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-io1-f48.google.com) identity=helo; client-ip=209.85.166.48; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="jnf27@cornell.edu"; x-sender="postmaster@mail-io1-f48.google.com"; x-conformance=sidf_compatible IronPort-SDR: za2+k4jz6FdFY5OOIomULOj+ecCUmuoDOJ+320K70nzLqShtbuo3ynRGODH7+SIfNEdufidNYh VL37qlUAtEoXU3g8ZpCQisPSdctUf5tbS1HIBrSAGhIXRW2tZlcXDAUD/z7diAcZQA6kPaBs58 UdjVvXoUN6UBprOBMwOdgM6sNolCzIOsF7wIu/ygcr47tANuEQ5fMidu7gdGoY4qH2p6uXrO22 Gmd89/JGzOb+kqONXzGrq11hLWw6OjnC7T1NuYICwMY/XJm+8qWINxK8633lfhSW4yiztaG6Vq Fpbu5NtjAOCtAIWu9KJ/GoPP X-IPAS-Result: =?us-ascii?q?A0CJAADhFg5jfzCmVdFaFgYBAQEBAQEHAQESAQEEBAEBg?= =?us-ascii?q?X4EAQELAYIjgQFWLwQLRYROgSOPagOLJIsaiEMJAQMBDSwBCgsEAQGCE4daA?= =?us-ascii?q?h0HAQQzBg4BAgQBAQEBAwIDAQEBAQEBAwEBBQEBAQIBAQIEBAETAQEYCRkHD?= =?us-ascii?q?g4FPmRogU+BdAs0DYI1KQGDYwEBAQECAQEREVYFCwsEBw0qAgIhAQYMAQUBH?= =?us-ascii?q?AYTIoJbAYJtAw0lAxCbIYEEQoo4eoExgQGDUAGDWA1RCYFyEoErAYZ0AxtKU?= =?us-ascii?q?AEBh0onHIINgUuCdD6CIEIBAoU1gmUEhBaSfgMEBQEGNwECAUQeQgMLQy8GH?= =?us-ascii?q?AMUAwUYDAcDGQ8jDQ0EFgcMAwMFJQMCAhsHAgIDAgYVBQICTTkIBAgEKyQPB?= =?us-ascii?q?QIHLwUELwIeBAUGEQgCCA4CBgQEBAQVAhAIAgcBJggPBxMzGQEFCk8QCSEcD?= =?us-ascii?q?hoNBQYTAwsVbQVFDygzNTkrFQgbCj1VKigVAwQEAwIGEwMDIAIQLDEDFAYpE?= =?us-ascii?q?xItByt1CQIDImgFAwMEKCwDCT4HKCY8BQVZOgEEAwMQIj0GAwkDAidflRyBQ?= =?us-ascii?q?YIQgTcBAYERB3aTA64vboNciU2BXo0DgXSGBDKDdoFQiwCYLx2Wao05g2ORB?= =?us-ascii?q?y+EfhAjgSspJIFbMxoIHRM7MQaCMAlFAQIBAg0BAgIDAQIBAgkBAQKSeVSDV?= =?us-ascii?q?oVmKDECOQIGAQoBAQMJilsBAQ?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23:6HPcka3u+xCawl/aTfbD5d93kn2cJEfYwER7XKvMYLTBsI5bp2EFm GQcD2iPb/bZYTOhftwjOo6yp0wAsJOEzINlGgs/3Hw8FHgiRejtVY3IdB+oV8+xBpSeFxw/t 512hv3odp1coqr0/0/1WlTZhSAgk/nOHNIQMcacUsxLbVYMpBwJ1FQywIbVvqYy2YLjW1PW4 YuoyyHiEAbNNwBcYjp8B52r80sHUMTa4Fv0aXRjDRzjlAa2e0g9VPrzF4npR5fLatU88tqBe gr25OrRElU1UPsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0o2HKJ0VKtZt9mGt/p30 dV1j7upcD0ON+79uOoyYgMGCz4raMWq+JefSZS+mcmazkmDcny1hvsyXAc5OooX/usxCmZLn RAaAGpVP1bT2qTvnuz9FrkEascLdKEHOKsdvH86khnSCuwgTJTHBajG+Le02R9q3JwUQqeAO aL1bxJRTzTnPUdvY2xLM5gFkcup2kXAIzZh/Qf9Sa0fujCPlmSdyoPFO9PQfpmORN5Jtl2Jo 3rPuWX/GBATctKFoQdp6Vqpj+7L2CL8AcccSO3++fltj1megGcUDXX6SGdXv9GTjFe+Y+h4M nUu3SNtnIg8232xEMHiCkjQTGG/gjYQXN9ZEusf4Q6Ly7bJ7wvxOoTiZm4RADDBnJ9mLQHGx mNljPuyWmMy6Oz9pWa1s+bL/WnraED5OEdbPXdcJTbp9eUPt23as/4iZtNqEarwj9qsXD+sk 3aFqy8xg7hVhskOv0lawbwlq2L9znQqZlRujukyYo5Dxl0hDGJCT9LwgWU3Fd4acO6koqCp5 RDoYfS24uEUFo2qnyeQWugLF7zBz6/bbmSD0AE+RMF6qG7FF5ufkWZ4sGEWyKBBYpZsRNMVS BK7Vf55v8INYiP7PcebnaroUpVynMAM6ugJptiNNoYUCnSAXACA+y5qaCatM5PFwSARfVUEE c7DK66EVC5EYYw+lWbeb7pDjNcDm39mrUuNH8yT50r8itK2OiXFIYrpxXPUMYjVGovf8FuLm zueXuPWoyhivBrWOHKOrNFOfQ5VcRDWx/ne8qRqSwJKGSI+cElJNhMb6elJl1VNk/sHm+HW0 Gu6X0MEmlPziWeecFeBbWplZbfrG5tzsCtjbyArOF+p3VklYJqusPZHLcBsI+F/+bwx1+NwQ tkEZ96EXqZFRAPB9mlPdpL6toFjKEmmiFvWbSqoaTQyZbB6QAnN9oO2dwfj7nBSXCGs88A5u but0gedTJYeHlwwAMHTYfOp7lWwoXlBybooBBCWeoFeIRy+/pJrJir9iu4MD/sNcRiTlCGH0 wu2AAsDobWfqYEC9tSU17uPqJ2kErcjE0dXQzvb4LKxOXWI92av29UbAuOBfDSYVWStvav+N aNayPbzNPBBl1FP6tIuH7FuxKM4xt3uu74KkVg+TSuTNwymWuF6P32L/chTrakRlLVXjg27B xCU8d5ANLTVZc7oTAwLKAw+YrjR3P0YgGOJv/E8IUG/5SguubTbAQNdOB6DjCEbJ7xwadt3z eAksc8Qygq+lht6bYrc334MrzyBfi4aTqEqlpAGG4u32AAl/VdPPM7HASjs7ZDTNthBPyHG+ NNPaHYuWlid+qbDT5b3PX3E3O4YhJNX/R4WnBkNIFOGnteDjfgytPGUHfLbUSwNpiirEcoqU oSoC6GxDa6J5TFlgMwFUmyxc+2ELAPM4VT/kjPli0WAJ3RFlQXxwKkVMv3L90cD9W9Yen5W8 KzwJKMJl9r1VJmZ4xbeknKJZxAuoRKdO+ECdA2a8xy5IqQH IronPort-HdrOrdr: A9a23:YA3l6KHZ+8WiF49bpLqE0ceALOsnbusQ8zAXPo5KOHpom62j5r mTdZsgpH3JYVoqKRIdcJW7WJVoIkmzyXcW2/h1AV7KZmCP01dAbrsC0WKI+UyFJ8SRzJ876U 6iScVD4R/LZ2SSQfyX3OBwKbkd/OU= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,275,1654552800"; d="scan'208,217";a="22427966" X-MGA-submission: =?us-ascii?q?MDGAaSrujyEbTEqUsIJGTdIPB2mwYrGgfsIk/S?= =?us-ascii?q?JEnGHHK4XMx9xxby+8beJf1vPm0Tzxfot+IcphWWUuA7U/hqs/1VCmro?= =?us-ascii?q?ydoEqR9f9MsPAv8Rlk0af8YgERrkz/iHAPr3UoKnZkbvVVQqf+vtoMj6?= =?us-ascii?q?zhqgMQwXaHgwZxuxjINVVLtA=3D=3D?= Received: from mail-io1-f48.google.com ([209.85.166.48]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Aug 2022 15:58:04 +0200 Received: by mail-io1-f48.google.com with SMTP id y187so9284950iof.0 for ; Tue, 30 Aug 2022 06:58:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=OwOmBHlBVN624hQfToomLjzU3hWYHZYgNqwVJBz/auo=; b=CI/rkdpG2o90M/G7lRhA9tEwoT8vMoAI47rEiZrkldRmUVpv1lrFSLCtQTzbJfiiHp GShgGWs9+1ZzUddaUD6EGhQIWmE2kvkuyCy/c+vR59DqGra/8GquCFp7m3WpBYuau5UH 904fn3aTS24aoEinaBFJsBb4kDm46W70geePyAGarVGbublzwjZtl21KDypHOPJJMKtX tqv2MHBMnLvykf5SO5ubjXR4SahexUHxZKSH3jwHGoK2tzYSW6qxaQDOGjXF4UqEy5Fn PGquI5zM28wHRaUHsOjdXQqTnsh+If92NLKpAsHCCv1PDo5vFub5LGGUQGiowhw9+fmJ UGqA== X-Gm-Message-State: ACgBeo0Vova//biN0NBBjg7NRsteMoUEXK5pZvCNZQS27PZprxdCcVsH TFhIpgeW++AZFgjD1h8douzhtRynVf8Gr+TjSIPanA== X-Google-Smtp-Source: AA6agR4K8nXLvPmozeIVpZNqoqEWGAn75uZbrfE+gdlIKv3ghg2IoI0bAhC/4OxWKc1agycNFDRPPFjICtzdg+mFL7M= X-Received: by 2002:a05:6638:380a:b0:34b:1d05:19f with SMTP id i10-20020a056638380a00b0034b1d05019fmr1015575jav.313.1661867882921; Tue, 30 Aug 2022 06:58:02 -0700 (PDT) MIME-Version: 1.0 References: <25e68e2c-04d2-7764-e189-00812c08a34a@inria.fr> In-Reply-To: From: Nate Foster Date: Tue, 30 Aug 2022 09:57:52 -0400 Message-ID: To: Aaron Gray Cc: =?UTF-8?Q?Fran=C3=A7ois_Pottier?= , OCaML Mailing List Content-Type: multipart/alternative; boundary="000000000000d35df705e775c47e" Subject: Re: [Caml-list] coinductive data types --000000000000d35df705e775c47e Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Aaron, You might be interested in looking at CoCaml. It was developed by Jean-Baptiste Jeannin as part of his PhD, in collaboration with his advisor Dexter Kozen and Alexandra Silva. https://www.cs.cornell.edu/Projects/CoCaml/ Cheers, -N On Tue, Aug 30, 2022 at 8:38 AM Aaron Gray wrote: > Hello Fran=C3=A7ois, > > Thanks for putting me straight on that. > > My original path of inquiry which I should have actually stated was > regarding how to go about implementing subtyping of mutually recursive > algebraic data types. > > I am looking on how to go about this and using coinduction and > bisimulation seemed like the best fit or correct way to go about this. > > Does OCaML use/handle subtyping of mutually recursive algebraic data > types ? And if so, is its implementation easily accessible ? > > Sorry I got you and Xavier muddled up somehow ! > > Regards, > > Aaron > > On Tue, 30 Aug 2022 at 08:24, Fran=C3=A7ois Pottier > wrote: > > > > > > Hello, > > > > Le 29/08/2022 =C3=A0 17:43, Aaron Gray a =C3=A9crit : > > > Does either ML or OCaML have coinductive data types ? And if so could > > > you please point me at the/some appropriate documentation on them. > > > > ML and OCaml have algebraic data types, which are recursive (that is, > > more general than inductive and co-inductive types). Algebraic data > > type definitions are not subject to a positivity restriction, and > > algebraic data types can be constructed and deconstructed by recursive > > functions, which are not subject to a termination check. > > > > If you want to see a typical example of a "co-inductive" data structure > > encoded in OCaml, I suggest to have a look at "sequences", which can be > > described as potentially infinite lists: > > > > https://v2.ocaml.org/api/Seq.html > > > > -- > > Fran=C3=A7ois Pottier > > francois.pottier@inria.fr > > http://cambium.inria.fr/~fpottier/ > > > > -- > Aaron Gray > > Independent Open Source Software Engineer, Computer Language > Researcher, Information Theorist, and amateur computer scientist. > --000000000000d35df705e775c47e Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Aaron,

You might be interested in lo= oking at CoCaml. It was developed by Jean-Baptiste Jeannin as part of his P= hD, in collaboration with his advisor Dexter Kozen and Alexandra Silva.


Cheers,
-N

On Tue, Aug 30, 2022 at 8:38 AM Aaron Gray <<= a href=3D"mailto:aaronngray.lists@gmail.com">aaronngray.lists@gmail.com= > wrote:
Hell= o Fran=C3=A7ois,

Thanks for putting me straight on that.

My original path of inquiry which I should have actually stated was
regarding how to go about implementing subtyping of mutually recursive
algebraic data types.

I am looking on how to go about this and using coinduction and
bisimulation seemed like the best fit or correct way to go about this.

Does OCaML use/handle subtyping of mutually recursive algebraic data
types ? And if so, is its implementation easily accessible ?

Sorry I got you and Xavier muddled up somehow !

Regards,

Aaron

On Tue, 30 Aug 2022 at 08:24, Fran=C3=A7ois Pottier
<francois= .pottier@inria.fr> wrote:
>
>
> Hello,
>
> Le 29/08/2022 =C3=A0 17:43, Aaron Gray a =C3=A9crit :
> > Does either ML or OCaML have coinductive data types ? And if so c= ould
> > you please point me at the/some appropriate documentation on them= .
>
> ML and OCaml have algebraic data types, which are recursive (that is,<= br> > more general than inductive and co-inductive types). Algebraic data > type definitions are not subject to a positivity restriction, and
> algebraic data types can be constructed and deconstructed by recursive=
> functions, which are not subject to a termination check.
>
> If you want to see a typical example of a "co-inductive" dat= a structure
> encoded in OCaml, I suggest to have a look at "sequences", w= hich can be
> described as potentially infinite lists:
>
>=C2=A0 =C2=A0 https://v2.ocaml.org/api/Seq.html
>
> --
> Fran=C3=A7ois Pottier
> francoi= s.pottier@inria.fr
> http://cambium.inria.fr/~fpottier/



--
Aaron Gray

Independent Open Source Software Engineer, Computer Language
Researcher, Information Theorist, and amateur computer scientist.
--000000000000d35df705e775c47e--