Functional Programming, Formal Methods.
as I understand, made it hard to provide a semantics for self types. Eventually, Aaron found that dependent intersections, a previously existing construct, actually generalize self-types, allowing one to prove induction in a very similar fashion. The idea is that we must, first, implement Nat in