A Trajectory-based Strict Semantics for Program Slicing