Predicate Logic: The Semantic Foundations of Logic