Constraint Propagation for First-Order Logic and Inductive Definitions