In addition, ATS contains a subsystem ATS/LF that supports a form of (interactive) theorem-proving, where proofs are constructed as total functions. With this subsystem, ATS is able to advocate a programmer-centric approach to program verification that combines programming with theorem-proving in a syntactically intertwined manner. Furthermore, ATS/LF can also serve as a logical framework (LF) for encoding various formal systems (such as logic systems and type systems) together with proofs of their (meta-)properties...
ATS is highly effective and flexible in its support for a template-based approach to code reuse...
ATS can help teach type theory, demonstrating both convincingly and concretely the power and potential of types in constructing high-quality software.