Unifying Functional, Object-Oriented and Relational Programming with Logical Semantics