First-order Predicate Logic