first-order predicate calculus