ATSは、高レベルな抽象化と厳格なソフトウェアの正当性のバランスをとるために設計されたマルチパラダイムプログラミング言語です。「Introduction to Programming in ATS」のドキュメントによると、この言語は基本的な関数型プログラミング、多相型、および依存型を含む幅広い高度な機能をサポートしています。型が単なるラベルである多くの標準的な言語とは異なり、ATSは依存型を利用して仕様の表現力を高めています。これにより、コンパイラは型チェックのプロセス中に制約を解決し、プログラムの特性がコンパイル時に満たされていることを保証します。

ATSの決定的な特徴は、定理証明の統合、すなわち「Programming with Theorem-Proving (PwTP)」と呼ばれるメカニズムです。この仕組みにより、開発者は関係を「dataprops」としてエンコードし、証明を全域関数として構築することができます。証明をプログラミングワークフロー内の第一級のエンティティとして扱うことで、ATSは、乗法の可換性や行列の添字指定の正当性といった複雑な特性を、コード内で直接指定および検証することを可能にします。このアプローチは、プログラマに対して、自身のロジックが指定された要件に従っているという形式的な証拠を提供することを要求することで、単純な型チェックを超えたものとなります。

高レベルな検証と低レベルのシステムパフォーマンスの間のギャップを埋めるために、ATSは「Viewtypes」と線形型を組み込んでいます。これらの機能は、ポインタを通じたメモリアクセスを管理し、スタックおよびヒープの割り当てを処理し、線形チャネルを使用した非同期のプロセス間通信(IPC)を促進します。さらに、この言語はCエコシステムとの互換性を維持しており、外部のCコードの包含、外部関数の呼び出し、および必要に応じた「unsafe」なCスタイルのプログラミングの使用を可能にします。形式的な検証、線形メモリ管理、およびCとの相互運用性のこの組み合わせにより、ATSは数学的に検証可能であり、かつシステム的に効率的なソフトウェアを構築するためのツールとして位置付けられています。