Hello everyone,

I was wondering about the status of data type recursion on the right hand side of a function arrow in HOL4. For the sake of clarity, this would be to add support for a data type such as the following:


test = A (num -> test) | B


As far as I know this is currently not supported by the datatype package, and I am aware this issue has been raised a few times before [1,2] and is also an issue in the HOL4 GitHub repo [3].


As of 2015, it seems the most direct way of adding this feature was to implement the approach found in a LICS 2012 paper [4]. I was not able to find any new developments since 2015. Is this still a viable plan or has the situation changed in any way? Does anyone know if there are any ongoing efforts to implement this?


Previously I found a paper by Harrison [5] in which he claims that it would be easy to extend his package to infinitely-branching trees, though I think this was never implemented. I found that there is a definition of potentially infinitely-branching trees in the HOL4 repository, under src/datatype/inftree, but it seems this is not used in the rest of the package.


I know we could just use an alternative representation and/or manually construct the type we need, but this would be quite a hassle in the particular application we have in mind, as the development itself is exported from another tool.


I’d be grateful for any other pointers you can provide.


Thanks,

Pablo


References

[1] https://sourceforge.net/p/hol/mailman/message/24442904/

[2] https://sourceforge.net/p/hol/mailman/hol-developers/thread/B678E335-C741-4F09-8803-187E00BCFD92%40nicta.com.au/#msg34282410

[3] https://github.com/HOL-Theorem-Prover/HOL/issues/266

[4] https://ieeexplore.ieee.org/document/6280479

[5] https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.115.1474&rep=rep1&type=pdf



_______________________________________________
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to