Discussion about this post

User's avatar
Sean Corfield's avatar

When I saw the title, I thought this was maybe going to be an overview of things like Z and MALPAS, and program-proving tools!

My high school had an elective in predicate calculus (and a later elective in Algol-60 programming), and I got very into Prolog for logic programming at university. My first job, post-graduation, exposed me to MALPAS (I helped write a 3-pass C-to-MALPAS translator), and somewhere along the way I was introduced to Z but I could never really get into that.

I think I would baulk at describing most programming languages as "formal systems" tho' -- there's far too much implementation-defined and undefined behavior in programming languages in general. Even our beloved Clojure has all sorts of undefined behavior, so you can't really defend these as having formal semantics because you can still write programs that do not have well-defined semantic behavior.

Expand full comment
The AI Architect's avatar

Brilliant exploration of how the meaningelss variables paradox actually makes formal systems powerful! The iota combinator example really drives home why we need that balance between minimalism and readabilty. What's clever is showing how domain modeling is basically the art of choosing which parts stay meaningless to the system but meaningful to us.

Expand full comment
4 more comments...

No posts

Ready for more?