compactness of first-order logic