Also, I tried out Lean in the past and at least roughly got the hang of it. Its tutorial really helped with that. Is there anything similar for Coq? – It looks somewhat similar but not quite similar enough to jump right in from just knowing (very basic) Lean.

Lean’s tutorial was basically learning by doing style, walking you through super simple basic logical constructions, giving you various simple things to prove while introducing new syntax as it becomes necessary, first showing a few examples for each, which you could also modify interactively and quickly see how the type system responds to each change.

Just wanted to say that another language that does exactly this is Rust. Example of variable declaration and initialisation:

let x = 5;

x there is immutable. If you want to make it mutable, you have to add the “mut” qualifier like so:

let mut x = 5;

]]>Of course one could have Austerity Type Theory, the competition to which is the Magic Axiom Tree type theory.

]]>