A Complementary Approach to Incorrectness Typing
Celia Mengyue Li, Sophie Pull, Steven Ramsay
TL;DR
This paper introduces a novel two-sided type system that reasons about both correctness and incorrectness by interpreting types as sets of normal forms and by introducing a complement operator. The central innovations include the complement on normal forms, the coarrow (A ³ B) type, and a small, coherent set of rules (notably Match and CompR) that derive powerful refutation principles alongside traditional typing. It demonstrates practical applicability by certifying Erlang-style Hébert examples go wrong, and establishes soundness, a decidable subtyping relation, and completeness for normal forms, while connecting to bi-intuitionistic logic through the coarrow construct. The work positions itself as a unified foundation for reasoning about incorrectness in functional languages and lays groundwork for further developments in type-based verification of faulty behavior. Overall, it advances the theory and practice of incorrectness typing with a principled, decidable framework and meaningful connections to existing logics and type systems.
Abstract
We introduce a new two-sided type system for verifying the correctness and incorrectness of functional programs with atoms and pattern matching. A key idea in the work is that types should range over sets of normal forms, rather than sets of values, and this allows us to define a complement operator on types that acts as a negation on typing formulas. We show that the complement allows us to derive a wide range of refutation principles within the system, including the type-theoretic analogue of co-implication, and we use them to certify that a number of Erlang-like programs go wrong. An expressive axiomatisation of the complement operator via subtyping is shown decidable, and the type system as a whole is shown to be not only sound, but also complete for normal forms.
