Many-Valued Semantics for Logic Programming