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 1A60BE0128 for ; Wed, 31 Aug 2022 05:22:21 +0200 (CEST) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=aaronngray.lists@gmail.com; spf=Pass smtp.mailfrom=aaronngray.lists@gmail.com; spf=None smtp.helo=postmaster@mail-lf1-f49.google.com Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of aaronngray.lists@gmail.com) identity=pra; client-ip=209.85.167.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="aaronngray.lists@gmail.com"; x-sender="aaronngray.lists@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of aaronngray.lists@gmail.com designates 209.85.167.49 as permitted sender) identity=mailfrom; client-ip=209.85.167.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="aaronngray.lists@gmail.com"; x-sender="aaronngray.lists@gmail.com"; 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-lf1-f49.google.com) identity=helo; client-ip=209.85.167.49; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="aaronngray.lists@gmail.com"; x-sender="postmaster@mail-lf1-f49.google.com"; x-conformance=sidf_compatible IronPort-SDR: tKF39lJP1K0Ex6+jJ/yY6A5//CBeXylGXvZKjQyzsq2+lrZ+D96nbKa3SlDGIYWdgv7dYKhrL4 0Zrzm5syCwLNORcrzl60JpHxDfsNUcnb5ktV77zzC2Nv6oI53NQdilxPzhEyGYlrLKJXj7fA+S NsaAb+vj6tT31q27rrdx4dqawenk75e6NsEGamlwQ1Si2LV0dUC+3R4GmQ9X9mQv44fmR6w3rX GeN+xLLs2pfduDbKeVd6jySpzSTBO9/oP+3bJ+VE1gW3Bxa9H3wA6qvRrzFV0qwEDbOUDR1WBq e7UIq6Y9mU2Rp9ATuXG7iu0M X-IPAS-Result: =?us-ascii?q?A0AYBgAg0w5jfzGnVdFaFggBPAwCCxWDczMBTVYvBAsYL?= =?us-ascii?q?YROkQ0Dnn8LAQMBDSwHDwQBAT+BVIJ0AoRkAh0HAQQ0EwECBAEBAQEDAgMBA?= =?us-ascii?q?QEBAQEDAQEFAQEBAgEBAgQEARMBARgJGQcODgVgAWEDAUSBT4F0CwMxDYI1K?= =?us-ascii?q?QGDZAEBAQMBEREEGQEbHQEDDAYDAgsNAgImAgIhAQEFDAEFARwGEyKCXIJsA?= =?us-ascii?q?QMyAxCNAY8egQRCizJ/FgUXgQGCCQaETwoZKA1nA4FZAgcSfyyGewECG1FUg?= =?us-ascii?q?x2EOSeCKYFLgnQ+gVNNQgECgTYpFYNBgmUEhBaTAAEDBwMEBgUPAwMCIQECA?= =?us-ascii?q?UQeAgkDIxEDCxAIFBcBIQYGAQEEAQECDAIBBAEFAwEEBQMHAgEFBgIJAwMBC?= =?us-ascii?q?AMBAQUBAwQDAwMCBwMBAgwECAMDAgMEAgICAgEDAgcFCAQCBwICAgECAgIEA?= =?us-ascii?q?gEDCQECAwUCAgkLAQQCAgMBAwEBAggECQQCAwQCAQEDAgECAgEFAg4FAQEBA?= =?us-ascii?q?QIFAQIDAQYHAggCHAoBAwMDAgIFAgIBAgMCAgwBAQQCAQIBAgYBAwECAgMBA?= =?us-ascii?q?wECAgMCBgkCBAEFAwMCAgMBAQUPBQIEAgECBgUCAQEBBAEDBAQGAgIBAwMCD?= =?us-ascii?q?gIEAQQBAgEBIwMEAgMBAxcBAgECAwMDBAYHBQIBAhMBAgEBAQUBAgEBAwQEB?= =?us-ascii?q?wkDAgIEAwMFAQECAwIBAQEHDAICAhICEwMBBgEOBRQDAgQCAgECAgoDAQICA?= =?us-ascii?q?QMCCQIBAgEFIAMBAQ8kAQECAgICAwQHAgEEBgMNAgIBAQEFBg0DAgMIAQwCB?= =?us-ascii?q?wMCAQMFAgIEAQIECgkBAgIBAgQFBwIBCAQFDQUJCwEBAgEDBwQDEQIFAwUFA?= =?us-ascii?q?wMCAQoFAgMBAgEBAwQBAwQGAQECAwICAQYCAgEBAwMEAwECBgICBwIDAgEEA?= =?us-ascii?q?gMDAQEBBAICAgICAwMIAwIIBwUBBgECAQQDAgIBAgcBBAEIAgEDAwUDBAEKD?= =?us-ascii?q?wMFAwEDAwIUCgUBAwgGCQIEBQIFAwIEAgMDAgIIAwIEAwILAwIGBAIHBA8HA?= =?us-ascii?q?gMCAgUCAgICAgUEAwECAgICAgIFAgQCAQUBAgIBAgICBAECAgcEAgMBAwQOB?= =?us-ascii?q?AMCAgIFAQICAQYCBwMBAgEEAwEBBAIEAQIFAgQBAwECBgIEAwoCAwICAgYIA?= =?us-ascii?q?wMMCQIDBQIEAQECBwQCAgsBBgIHAgIBAgMQAQMCAQQFBQMDAwkCAgMCBAICC?= =?us-ascii?q?gEBAQECAgEFBQIEBw8CAgIEAgICAQMCAgEBAgIFBAkSAQECAwYEBgUDAggYA?= =?us-ascii?q?QYCAgEBAgICAwMCBgIBAggCBAEEBQIBAgICAgQBAwYCAwEBAgECAgMDAgEEA?= =?us-ascii?q?gQDAwECAQICAgMCAgIDAgIBEAIGBgECAgICAgMCAgECAQUBAgECBAIHAgQDA?= =?us-ascii?q?gECAgUCAgIDAQEGAgQLAQMCBwYBAwIHBQIDAQIDBAMDCwUMCAEFAQMBIQMCA?= =?us-ascii?q?ggCBwIBBQMFAQ8DAgIDAgIBBAoCAwUCBAIBAgEECQcCBAECCQMDBgIHBRgBA?= =?us-ascii?q?gIHBAwKAgICBQYCBAEBAQEDAQICAQIDBAIDAgQFAQUCAQIFBAICAQECBQIMA?= =?us-ascii?q?QIBBwYCBwMCAgIDAQQCAQIBAwMCAwEBAQMGBgUJBAIDAwYCAgIGAgIDAhIDB?= =?us-ascii?q?gcCBgMCBAENDgUEBwgBAgEBAgcCBAIHCQIOAgEIAQcCAgMCAgEFS5QNgUGCE?= =?us-ascii?q?IExBgEBBUpCB3aTBRauGW4Hg1WBRYgIgV6NA4F0hgQyg3aBUIsAmDAdlmqNO?= =?us-ascii?q?YNjkQcvhH4QIxKBQyOBWx8UGiNQMYI2CUUBAgEBAQ0BAgEBAwECAQIJAQECk?= =?us-ascii?q?g+BPoNWhUtDMQI5AgYBCgEBAwmICoJIAQE?= IronPort-PHdr: A9a23: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 Rtk0mND IronPort-Data: A9a23:mrwNkqMcg5Ep1w3vrR2LkcFynXyQoLVcMsEvi/4bfWQNrUpzhjFRy jAWW2qOOf2NMGugLYtyYYS0pEkE7JOBzNFqS3M5pCpnJ55ogZqcVI7Bdi8cHAvLc5adFBo/h yk6QoOdRCzhZiaE/n9BCpC48T8kk/vgqoPUUIYoAAgoLeNfYHpn2EkLd9IR2NYy24DpWFvV4 rsenuWGULOb824sWo4rw/nbwP9flKyaVOQw4zTSzdgS1LPvvyF94KA3fcldHFOkKmVgJdNWc s6YpF2PEsw1yD92Yj+tuu6TnkTn2dc+NyDW4pZdc/DKbhSvOkXe345jXMfwZ3u7hB2UvPpUl MlxqKWpWCdwHYfUs74jaxlhRnQW0a1uoNcrIFC6uM2XiknIKj7in6QoA0YxMokVvO1wBAmi9 9RCcGFLPk3F3rzphu7qIgVvrpxLwM3DNYoFvXdmwivQHLAiQIvfWI3F4NZZ2HE7gcUm8fP2P ZBFN2U3MEmojxtnF3cYKrxjmOWUokLEYjd0llic/6Ev2j2GpOB2+OG1bIC9lsaxbc5cm0Ldo mPd40ziExQCPZqezyCE+zSinIfycTjTXYsTEPi8+KcvjgHCgGMUDxISWB2wpvzRZlOCt8x3N m8+33YykbUL7V2LF/rXRzbinkaEh0tJMzZPKNES5AaIw6vSxg+WAGkYUzJMAODKUudmFVTGM XfZz7vU6SxTXK69Ei3Cq+/Fxd+mEW1Ecj9YPH5soR4tuoG7+OkOYgTzosGP+ZNZY/XwEDD0h jSE9W0w2+RVgskM2KG2u1vAhlpAR6QlrCZkv207vUr/tWuVgbJJgaT2sjA3Ct4ed+6koqGp5 iRspiRnxLlm4WuxvCKMWv4RO7qi+uyINjbR6XY2Qcd4p2TxoSX6J9kNiN2bGKuPGpZUEdMOS B+D0T69GLcOVJdXRfQqPdzvUpxCIVbITI26CK+8giVyjmhZLVfbpkmClGaf2GfilEVErE3ME cbzTCpYNl5DUf4P5GPuGY81iOZ3rghjmz67bc2kl3yPj+DCDFbLEuxtGAXVPogEAFas+lq9H yB3bJvUlX2ykYTWPkHqzGLkBQpafSFhXsmu9pA/myzqClMOJVzNwsT5mdsJE7GJVYwM/gsR1 n3iCEJe1nTlgnjLdVeDZnx5OeHgWJ9+qTQwOil1ZQSk3H0qYICO6qYDdstvLeN3qrA7lfMkH eMYf8igA+hUTmuV9jkYa677ptMweRmugzWIICf4MiM0eIRtRlCS99K9Jlnv+SACAzCZr8w7p 7H8hArXTYBSFQtnBcfSLvmoygrp73QanetzWWrOI8VSKB28qtg0d3Spg6Zucc8WKBjFyj+L7 CqsAE8V9bvXvos40NjVnqTb/YqkFu1JGEAFTWTW6LCBMzaDojiuzIpGZ+a/fT7HUVTy9qj/N /5eyOvxMaFekVtH79h8HrJswf5s7tfjveUBnAFtHXGOa1ryT708cz+J2s5AsqALzbhc4FPkV kWK89hcGLOIJMK1TwJLdVR9NryOhaMOhz3fzfUpO0GmtiV5y7yKDBdJNB6WhS0BcbZ4bNE/z eE6tJJE4gCzkEBxYNOPjyQR82rVa3JcAuMosZYVBIKtgQ0ukwkQbZvZAy7wwZeOd9QcbRVwc 2HM3PLP1+ZG207PU3svDnyRj+BTspID5UJRx1gYKlXVx9fIi5fbBvGKHejbk+iU8vlG7w63E m1iNkkwIavXujk01Y5MWGejHwwHDxqckqA0J53li0WBJ3RElESURIH+BQpJ1E8c+mNYODNc+ dl0DU77BC3ycpiZMjQaACZYRj+KcTC13gLHkcGjWc+CGvHWpNYjbrCGPQI1lvcsPS/9aIAra wWnECacpJAX7RItnpA= IronPort-HdrOrdr: A9a23:M65wias96h3wuVBU9WusK35f7skDQ9V00zEX/kB9WHVpmwKj5r mTdZMgpGTJYVcqKQkdcLW7UpVoLkmskKKdjbNhX4tKGTOW21dAT7sC0WKB+UyFJ8SWzIc0vp uIMZIfNDSaNykcsS+V2njfLz/i+rW6GWKT6Ns2A00DceiiUc9d0zs= X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="5.93,276,1654552800"; d="scan'208";a="22467045" X-MGA-submission: =?us-ascii?q?MDEMXV2pbPlsg0Yd1z9n7usKJ/PRSix+Y+4w1a?= =?us-ascii?q?mvyAqL0nFFsqAGwotfyJIh4vIjsEXXU135900vsPg40ZV0zzccAm+DOw?= =?us-ascii?q?Cebhzz4rcrLR0B2ODCNeyQbQG+UQANi5z4xVBSqDa5/gLtcHrDxn5N8k?= =?us-ascii?q?mRAX77/Nw/uv31taqGSFduFg=3D=3D?= Received: from mail-lf1-f49.google.com ([209.85.167.49]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 31 Aug 2022 05:22:20 +0200 Received: by mail-lf1-f49.google.com with SMTP id bq23so18174232lfb.7 for ; Tue, 30 Aug 2022 20:22:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc; bh=BswIgfRvAjg2wFc/0ddrHm704gbWTKOuNb1RVEJRhH0=; b=bSCm0JUlri8YoKsgzHv7F0hss+al5PmtLoU/WyaS1t8nBw+Bb17FgskjI5HsqDiCo6 L1o757Wet1yQYjXi/dTAxTm1oVbPRc4kTY+aEGKGu+NxmV6696ndxh7kQlu5UtA1XD/p 7v0EAOI7EmWoXy404wl9JyX/vRGWQwPkbBYWaLlVxU3AP9EFM6gb00TfP2tUdnn/RBfU b62jaNsf3vcXy5RdlWzbAxGZyxWRNyBMpLe+yk1Rc2S275gYDjdIwufro046rveKO+Ye kvQ8vndhp2hlbFowG6BPZJ1yXNic1PlpSOR395gr3qTNDshpnGizS+iaC0oIQUj2oT1R KvlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc; bh=BswIgfRvAjg2wFc/0ddrHm704gbWTKOuNb1RVEJRhH0=; b=M9/tgfVXlwIij1CLTjCygJYKTyxjnn41FOhA0ucl6GXPZYdVqcoy3TiapK88EiGUnv 7WZgQ6hLcaH9ct8KZaeor5+kMBdFYCixdWfQ2klROycvpjnDSziGiYJQw279w6xEdS9V PUFjp3ICmEX+acArD6An0DUhwHgu0i53qtg1tlDanhLjPUZyIFSPuvOjyhDjdjGSRwwi XRM0eZx13v9ajdcIA61xF7E88rstVGa+RW00KH6y9nX/6RGVMOyTI0b7J+cVrlultrK8 3TQy2+1fZh3/FjdK1XaMXguU9cW3oiLxfIRu7bXaf9LjpvurXBocx6kBeDYPwq5Z6QJw 3oxw== X-Gm-Message-State: ACgBeo1O05IjuJYCdzwUG+8cP0alSMbb59p2WuooeTVGHB8PWV5pGrN5 JQpgJuiJknJG1cJ455Ov7f7xYGubThtywklLNNMxFl7bito= X-Google-Smtp-Source: AA6agR4wniyt5Q4ddpbo5UjCLCyLDB3RrRVU1DTlFkXOzjx0i46z8WGYOD2DYhd0upptlnsl8JDG6mA/+HrkMJmx4XA= X-Received: by 2002:a05:6512:33c2:b0:492:d679:f8ec with SMTP id d2-20020a05651233c200b00492d679f8ecmr8006094lfg.240.1661916138639; Tue, 30 Aug 2022 20:22:18 -0700 (PDT) MIME-Version: 1.0 References: <25e68e2c-04d2-7764-e189-00812c08a34a@inria.fr> <11E3A59A-BD33-4EC0-9FAD-711A1EACA35E@gmail.com> In-Reply-To: <11E3A59A-BD33-4EC0-9FAD-711A1EACA35E@gmail.com> From: Aaron Gray Date: Wed, 31 Aug 2022 04:22:00 +0100 Message-ID: To: Jacques Garrigue Cc: Mailing List OCaml Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: Re: [Caml-list] coinductive data types Jacques, I will get a raw OCaML Docker image, and have a play with this. What is going on there, does ':>' return a conversion function as well as being 'true' and secondly a predicate ? Thanks, Aaron On Wed, 31 Aug 2022 at 02:15, Jacques Garrigue wrote: > > Hello Aaron, > > If you are interested in the subtyping already available inside OCaml, > it provides width subtyping for both objects and polymorphic variants. > Polymorphic variants are algebraic datatypes, but their equality is > structural rather than nominal, and they are limited to regular type > definitions. > > For instance, the following subtyping on two variants of potentially infi= nite > streams is available: > > type 'a seq =3D 'a seqc lazy_t and 'a seqc =3D [`Nil | `Cons of 'a * 'a s= eq] > type 'a aseq =3D 'a aseqc lazy_t > and 'a aseqc =3D ['a seqc | `App of 'a aseq * 'a aseq] > let sub x =3D (x : 'a seq :> 'a aseq) > (* val sub : 'a seq -> 'a aseq *) > > Jacques Garrigue > > 2022/08/30 21:33=E3=80=81Aaron Gray =E3=81=AE= =E3=83=A1=E3=83=BC=E3=83=AB: > > On Tue, 30 Aug 2022 at 12:12, Xavier Leroy > wrote: > > > On Tue, Aug 30, 2022 at 9:24 AM 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. > > > Hello Xavier, > > 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 ? > > 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 > > Lazy evaluation (type Lazy.t) can also be used to define coinductive data= structures. > > For concreteness, here are two definitions of the type of streams (infini= te lists) : > > type 'a stream =3D unit -> 'a streamcell and 'a streamcell =3D { head: 'a= ; tail: 'a stream } > type 'a stream =3D 'a streamcell Lazy.t and 'a streamcell =3D { head: 'a;= tail: 'a stream } > > and of the stream of integers starting from n : > > let rec ints n =3D fun () -> { head =3D n; tail =3D ints (n + 1) } > let rec ints n =3D lazy { head =3D n; tail =3D ints (n + 1) } > > > Thank you, yes I am familiar with this type of usage. > > Regards, > > Aaron > > > > Hope this helps, > > - Xavier Leroy > > > > -- > 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. > > --=20 Aaron Gray Independent Open Source Software Engineer, Computer Language Researcher, Information Theorist, and amateur computer scientist.