[ The Types Forum, http://lists.seas.upenn.edu/mailman/listinfo/types-list ]

In our ICFP 16 Paper /Set-Theoretic Types for Polymorphic Variants /we defined type inference for polymorphic variants with recursive set-theoretic types (type are defined coinductively  with a couple of standard restrictions). https://urldefense.com/v3/__https://www.irif.fr/*gc/papers/icfp16.pdf__;fg!!IBzWLUs!QYIv5kZfRZ_sM_dbcvKdrXLsHb-tjd_4jpTeLE-n3m-E8TJ2qqx4c-2QqB1nepcRXZPlaUrqjL2yHCM5-OiV$ More generally, you may want to refer to Tommaso Petrucciani's PhD thesis /Polymorphic set-theoretic types for functional languages/ which studies type inference for recursive set-theoretic types (they can encode ADT' s via products and unions), which uses and improves some results of Stephen Dolan' s PhD thesis as well as of the paper cited above. https://urldefense.com/v3/__http://www.theses.fr/2019USPCC067__;!!IBzWLUs!QYIv5kZfRZ_sM_dbcvKdrXLsHb-tjd_4jpTeLE-n3m-E8TJ2qqx4c-2QqB1nepcRXZPlaUrqjL2yHFyPLk_c$
Hope it is useful

Cheers

Beppe


On 17/06/2022 09.40, Aaron Gray wrote:
[ The Types Forum,http://lists.seas.upenn.edu/mailman/listinfo/types-list  ]

I am interested if there is any work on the subtyping of mutually
recursive algebraic data types. I am wanting an algorithm for purposes
of implementing an object oriented programming language with ADT's
which lower onto a virtual class implementation which can support
mutually recursive behavior, but need the typ checking and inference
at the ADT level.

Theres a number of papers and projects in this area I have came across
but none of them actually tackle algebraic data types properly let
alone mutually recursive ones.

A number inspired by Stephen Dolan's PhD Thesis and MLsub, his implementation.

- Practical Subtyping for Curry-Style Languages by Rodolphe Lepigre
and Christophe Raffalli - subml -https://urldefense.com/v3/__https://github.com/rlepigre/subml__;!!IBzWLUs!ROzY30gWHR0LPvTTZLo_Ep7ErCu0LhX2jrPKbFJ9uhVgSSx659leOfq_pNrPSAGgLExea89yhX9iVce14nA987dFVoNzXhSpE6cZJg$ - The Simple Essence of Algebraic Subtyping, Lionel Parreaux and simple-sub implementation -https://urldefense.com/v3/__https://github.com/LPTK/simple-sub__;!!IBzWLUs!ROzY30gWHR0LPvTTZLo_Ep7ErCu0LhX2jrPKbFJ9uhVgSSx659leOfq_pNrPSAGgLExea89yhX9iVce14nA987dFVoNzXhS4dNcEiw$ - A Mechanical Soundness Proof for Subtyping Over Recursive Types
Timothy Jones David J. Pearce -
https://urldefense.com/v3/__https://github.com/zmthy/recursive-types__;!!IBzWLUs!ROzY30gWHR0LPvTTZLo_Ep7ErCu0LhX2jrPKbFJ9uhVgSSx659leOfq_pNrPSAGgLExea89yhX9iVce14nA987dFVoNzXhRACugkxw$
None of these seem to deal with mutually recursive data types.

I am interested in the papproach of using codata/coinduction and
coalgebras and possibly bisimulation in order to deal with the
mutually recursive nature of real world mutually recursive algebraic
data types like for instance AST's of real world complex computer
languages.

Any projects, papers, thoughts, or implementations would be of interest.

Regards,

Aaron

Reply via email to