Would you be up for explaining it please?
Î is typically used to denote the context, or the type environment for an expression. It is a mapping from variables to types. for example we could have
Î = x:A, y:B, z:C
then
Î |- y: B
is a typing judgment. Means "In the context of Î, y has type B."
Type derivation is a process where you start with an expression and an empty context and then figure out what the type of that expression is by building it up from scratch using typing rules. It's what compilers do to figure out whether your program is correct.
What's the easiest way to actually learn how the correspondence works? It always feels like there's some kind of background they're assuming I have, that my pure maths ass doesn't.
I'll give you a fast-forward of the subjects you need to study to actually learn this stuff (with links). Many of these are part of typical computer science curriculums. However, most will exclude at least some of this to its fullest. Note that it's a lot of knowledge, you might find it frustrating to just deep dive into it on your own, don't take it the wrong way, maybe follow an actual course and you will be guided into all of this. Maybe I'll also try to give a run-down, skipping the preupedeitic knowledge... later... if I have time.
P.s.: to get the general feeling you don't really need to know all of this tho. Just skim it. And dive deeper if you like it.
Yeah, understanding proof assistants would be the big practical thing. I can read a short proof in Lean, but a lot of it just feels like magic right now.
It looks like I was mainly missing sequent calculus (I learned all in the Hilbert style of deduction) and the convention that gamma is the whole context. I'd see the notation and wonder if I missed something. Thank you for the effort you put in on this!
Yeah, I also only learned natural deduction, until I got to the languages course and the professor told us "this is similar to natural deduction, but different".
Personally I don't like lean, I prefer coq. But that's mostly the vibes, both are actually fine. Lean doesn't do constructive logic, it does classic logic, but you have to give up program extraction for that. That's why mathematicians are head over heels for lean.
@programming.dev
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
go to feed...
@programming.dev
Welcome to Programmer Humor!
This is a place where you can post jokes, memes, humor, etc. related to programming!
For sharing awful code theres also Programming Horror.
go to feed...
god dammit this is actually good đ. i literally did semantics of programming languages last term too
save