Syntax and Semantics of CR-Prolog