Formulog: ML + Datalog + SMT
weaselhat.com
Formulog: ML + Datalog + SMT
1–10 of 22 posts
Re: Formulog: ML + Datalog + SMT
#2Formulog looks like it could potentially replace that math notation for something as rigorous yet executable.
On the other hand, denotational semantics are usually straightforward enough to be implemented by reading off the math. As an example, it was quite easy for me to translate Scheme's semantics to code.[1]
I hope it gets reimplemented in a functional language as well, Formulog's current implementation is in Java[2] which might not be ideal for reducing implementation bugs.
[0] Contrast the code and math: https://www.andres-loeh.de/LambdaPi/LambdaPi.pdf
Re: Formulog: ML + Datalog + SMT
#3I commend the rustc team for taking this lineage seriously in developing Chalk[1] and using differential-dataflow for the next borrow checker. If they combine those into a differential-dataflow-powered Chalk it will be very formidable!
We'll have to catch up Haskell at some point, sigh.
[1]: https://github.com/rust-lang/chalk.git
[2]: https://github.com/TimelyDataflow/differential-dataflow
Re: Formulog: ML + Datalog + SMT
#4There's a reason why a lot of programming language papers use formal math notation, because it's a lot more concise to express the entire typing rules of your language in a dozen or so inference rules rather than a more convoluted implementation.[0] Formulog looks like it could potentially replace that math notation for something as rigorous yet executable. On the other hand, denotational semantics are usually straig…
EDIT: Thank you all for the references :)
Re: Formulog: ML + Datalog + SMT
#5There's a reason why a lot of programming language papers use formal math notation, because it's a lot more concise to express the entire typing rules of your language in a dozen or so inference rules rather than a more convoluted implementation.[0] Formulog looks like it could potentially replace that math notation for something as rigorous yet executable. On the other hand, denotational semantics are usually straig…
Any advice for learning to read the PL math notation? The PL papers I've seen normally take it for granted, so I don't even know what it's called to search for it! EDIT: Thank you all for the references :)
Γ ⊢ e1 : Int Γ ⊢ e2 : Int
----------------------------
Γ ⊢ e1 + e2 : Int
Which reads, if e1 has type Int in Γ, and e2 has type Int in Γ, then e1 + e2 also has type Int in Γ. These rules are really bidirectional which is what allows you to perform typechecking. If you have an expression (a + b) of type Int, you can reduce it into two subproblems, typechecking a expecting an Int, and similarly for b.[0] https://en.wikipedia.org/wiki/Type_rule
[1] https://www.cs.colorado.edu/~bec/courses/csci5535/reading/ca...
Re: Formulog: ML + Datalog + SMT
#6There's a reason why a lot of programming language papers use formal math notation, because it's a lot more concise to express the entire typing rules of your language in a dozen or so inference rules rather than a more convoluted implementation.[0] Formulog looks like it could potentially replace that math notation for something as rigorous yet executable. On the other hand, denotational semantics are usually straig…
Any advice for learning to read the PL math notation? The PL papers I've seen normally take it for granted, so I don't even know what it's called to search for it! EDIT: Thank you all for the references :)
Re: Formulog: ML + Datalog + SMT
#7Earlier quoted context omitted.
Any advice for learning to read the PL math notation? The PL papers I've seen normally take it for granted, so I don't even know what it's called to search for it! EDIT: Thank you all for the references :)
If you're talking about the inference rules used to specify the type system of a programming language, one of Wikipedia's[0] references is[1] which from a quick skim seems adequate. The main takeaway is that the things above the line are the assumptions, and the things below the line is what you conclude. Γ is usually used for typing environments (a map from variables to their types), the turnstile ⊢ can be read as "…
Re: Formulog: ML + Datalog + SMT
#8There's a reason why a lot of programming language papers use formal math notation, because it's a lot more concise to express the entire typing rules of your language in a dozen or so inference rules rather than a more convoluted implementation.[0] Formulog looks like it could potentially replace that math notation for something as rigorous yet executable. On the other hand, denotational semantics are usually straig…
Any advice for learning to read the PL math notation? The PL papers I've seen normally take it for granted, so I don't even know what it's called to search for it! EDIT: Thank you all for the references :)
You might enjoy this tutorial: http://logitext.mit.edu/logitext.fcgi/tutorial
Re: Formulog: ML + Datalog + SMT
#9There's a reason why a lot of programming language papers use formal math notation, because it's a lot more concise to express the entire typing rules of your language in a dozen or so inference rules rather than a more convoluted implementation.[0] Formulog looks like it could potentially replace that math notation for something as rigorous yet executable. On the other hand, denotational semantics are usually straig…
Any advice for learning to read the PL math notation? The PL papers I've seen normally take it for granted, so I don't even know what it's called to search for it! EDIT: Thank you all for the references :)
Re: Formulog: ML + Datalog + SMT
#10Earlier quoted context omitted.
Any advice for learning to read the PL math notation? The PL papers I've seen normally take it for granted, so I don't even know what it's called to search for it! EDIT: Thank you all for the references :)
Also try searching for "sequent calculus" or "Gentzen proof calculus" which describe the underlying logical framework. You might enjoy this tutorial: http://logitext.mit.edu/logitext.fcgi/tutorial