💾 Archived View for republic.circumlunar.space › users › dbane › gemlog › 2023-10-05.gmi captured on 2024-05-12 at 15:59:57. Gemini links have been rewritten to link to archived content

View Raw

More Information

⬅️ Previous capture (2023-11-04)

-=-=-=-=-=-=-

Concurrent Logic Programming, KL1 & KLIC

Following on from my previous post, it's unplanned but I have been totally absorbed with the above stream of research. There are a few recent writings trying to preserve this knowledge:

The Joy of Concurrent Logic Programming

Logic/Constraint Programming and Concurrency: The hard-won lessons of the Fifth Generation Computer project

And of course, a veritable treasure-trove of historic (but still interesting) papers:

The deevolution of concurrent logic programming languages

ICOT Technical Reports & Memoranda

I particularly liked the argument in the "deevolution" paper above that concurrent logic programming is much less expressive than Prolog, but that's fine. In practical terms, I've concentrated on the KLIC implementation of KL1.

KLIC: Portable implementation of KL1

I'm trying to contribute a few minor fixes upstream, but the system seems solid enough. Either way, the main value is that this is a completely new paradigm to me. I do get the impression though that there should be more of an emphasis on the concurrent part and less on the logic (to avoid disappointing someone coming from Prolog).

I won't do it, but a KL1 system could be easy to deploy on cloud infrastructure: just use MPI & VPSs, and avoid all the IaC stuff like containers, K8s, Terraform. Next step for me is probably to figure out how to use klint to enforce "Moded FGHC".

My interest in this stuff follows from:

1. An opinion that a Prolog prototype is better than a formal model in something like Z or VDM

2. Looking for technology to refine this prototype into a product rather than throw it away

I had previously thought Mercury was best for (2), but after reading the following I think I may prefer the KL1 way. Mercury removed partial data structures, but added a whole functional paradigm along with the type-checker. KL1 removes much more from Prolog (e.g. committed choice drastically changes the semantics), and I think the project sizes reflect this. Mercury started at 100KLOC and may be from 500-1000 now. KLIC is about 20-30.

Concurrent Logic/Constraint Programming: The Next 10 Years

Back to my gemlog