A Constraint-Based Approach to Guarded Algebraic Data Types. - Simonet, Vincent; Pottier, François (ACM Transactions on Programming Languages & Systems, 2007)