A constraint-based approach to guarded algebraic data types (2007)

by Vincent Simonet, François Pottier
Venue:ACM Transactions on Programming Languages and Systems