ATS (Applied Type System) is a statically typed, functional and imperative programming language that uses dependent and linear types to let programmers formally verify memory safety and program correctness at compile time while generating C-level performance code.