Multi-Prolog: Definition, Operational Semantics and Implementation