Using a glass-box theory of finite domain constraints, FD, we show how the entailment of user-defined constraints can be expressed by antimonotone FD constraints. We also provide an algorithm for checking the entailment and consistency of FD constraints. FD is shown to be expressive enough to allow the definition of arithmetical constraints, as well as nontrivial symbolic constraints, that are normally built in to CLP systems. In particular, we use conditional FD constraints, which exploit entailment checking, to define symbolic constraints. Thus, we claim that a glass-box system such as FD is expressive enough to capture the essence of finite domain constraint programming.