GADTs and functional dependencies