# First and second-order logic formalizations

From researchgate: https://www.researchgate.net/post/What_is_the_actual_difference_between_1st_order_and_higher_order_logic

What is the actual difference between 1st order and higher order logic? Yes, I know. They say, the 2nd order logic is more expressive, but it is really hard to me to see why. If we have a domain X, why can't we define the domain X' = X u 2^X and for elements of x in X' define predicates: SET(x) ELEMENT(x) BELONGS_TO(x, y) - undefined (or false) when ELEMENT(y) etc. Now, we can express sentences about subsets of X in the 1st-order logic! Similarly we can define FUNCTION(x), etc. and... we can express all 2nd-order sentences in the 1st order logic! I'm obviously overlooking something, but what actually? Where have I made a mistake?

My answer: In many cases one can reduce a higher order formalization to a first-order, but it will come at the price of complexity of the formalization. For instance, formalize the follow argument in both first order and second order logic: All things with personal properties are persons. Being kind is a personal property. Peter is kind. Therefore, Peter is a person. One can do this with either first or second order, but it is easier in second-order. First-order formalization: 1. (∀x)(PersonalProperty(x)→((∀y)(HasProperty(y,x)→Person(y))) 2. PersonalProperty(kind) 3. HasProperty(peter,kind) ⊢ 4. Person(peter) Second-order formalization 1. (∀Φ)(PersonalProperty(Φ)→(∀x)(Φx→Person(x))) 2. PersonalProperty(IsKind) 3. IsKind(peter) ⊢ 4. Person(peter) where Φ is a second-order variable. Basically, whenever one uses first order to formalize arguments like this, one has to use a predicate like "HasProperty(x,y)" so that one can treat variables as properties indirectly. This is unnecessary in second-order logics.