jnkrtech<p>I'm still fumbling about in the dark with Lean, but my goal for my first big project is to implement system F sub omega and prove its type safety. I'm going to try some simpler lambda calculi first, probably, because I fear that which I do not understand.</p><p>Question: Does anyone have tips/examples/guides as to how to start to practically describe a type theory? I started out trying to define evaluation and de Bruijn indices etc and got lost in the weeds. Is there a way to operate fully at a higher level, and only really talk about the types? And if I'm only interested in proving the theory, and not with efficient execution, is there a better way for me to represent scopes/contexts?</p><p><a href="https://social.treehouse.systems/tags/lean" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>lean</span></a> <a href="https://social.treehouse.systems/tags/programminglanguagetheory" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>programminglanguagetheory</span></a> <a href="https://social.treehouse.systems/tags/PLT" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>PLT</span></a> <a href="https://social.treehouse.systems/tags/proofs" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>proofs</span></a> <a href="https://social.treehouse.systems/tags/TAPL" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>TAPL</span></a> <a href="https://social.treehouse.systems/tags/Lean4" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>Lean4</span></a></p>