Operational and Goal-Independent Denotational Semantics for Prolog with Cut