What is the mistake in the logic used in the given description of this question?

To prove: Unicorn, i.e. a horse with one horn exists

Proof:

Let us suppose to the contrary, that unicorn does not exist

=> Unicorn does not have a horn (since, a non-existent entity cannot have anything)

But this contradicts the fact that unicorn has one horn by definition

This contradiction occurred for wrongly assuming that unicorn does not exist

So, unicorn exists

Now, arguments like this can prove a lot many things to exist. Including tangents that are not at 90 degrees to the radius of the circle to the point, a multiple of 4 between 104 and 108.

So, where is the mistake in the logic used??

The basic problem here is that existence is not a property. If we follow the concept of the property of existing down, we get lots of nonsense. (Including one particularly annoying "proof of God" that has been shot in the heart, the head and the liver, and just won't go lay down and die.)

In particular, we cannot logically say things like

¬Exists(x) & Predicate(Q) → ¬Q(x)

which you seem to assume. (So, proposing this is your particular mistake.)

After all, if `Exists` is a predicate, so is `¬Exists`. Then by this logic,

¬Exists(x) & Property(¬Exists) → ¬(¬Exists)(x)

Nonexistent things just can't have the property of not existing.

And if `Exists` is not a predicate we don't know what the left side means, because we don't know how non-predicates get along with things like `&` and `¬`.

Following on that, the proper way to reference non-existent objects has a long history including two mainstream approaches: modal realism, including Meinongianism, and disontologizing their descriptions, for instance by forcing them to always be stated via quantification.

My favored approach is a compromise between the two: insisting fictional objects can be meaningful only in terms of implications they would fulfill were they to exist. (This conjures up the whole machinery of modality, since "would" is a modal verb. But it does not assert modal existence, just that modal grammar has implications about real things.)

It is true that nonexistent animals cannot have one horn?

For Meinong or modal realists, no, the nonexistent things exist in another sense, (in a 'modality' like might, should or can), and still have the attributed properties of their definitions, so you cannot derive your contradiction.

You already have two versions of the forced quantification approach.

For the implication approach

Unicorn(x) → |{y: y ∈ horns(x)}| = 1

remains true if `{x : Unicorn(x)}` is an empty set, because a false premise implies anything. Every real unicorn has one horn, it also has none, and seventy-two. Again, you can't get your contradiction.

We have the definition :

unicorn = an animal with one horn.

From it we can "derive" :

∀x (Unicorn(x) → OneHorned(x)).

We "assume" that there are no unicorns:

¬∃x Unicorn(x)

which is equivalent to :

∀x ¬Unicorn(x).

And now we want to add the "general principle" :

a non-existent object cannot have attributes/parts.

But this cannot licenses us to assert something about the non-existent unicorn.

If we instantiate the two formuale above, what we get is :

¬Unicorn(a) and Unicorn(a) → OneHorned(a).

From them does not follow : ¬ OneHorned(a) [see : Denying the antecedent].

The fallacy is that we are "shifting" from the "quantificational" use of "exists" to a "predicative" use : if "something" does not exists than it must have some (negative) property.

To "disentangle" issues like this, we have to adopt Free logic :

Classical logic requires each singular term to denote an object in the domain of quantification—which is usually understood as the set of “existing” objects. Free logic does not. Free logic is therefore useful for analyzing discourse containing singular terms that either are or might be empty. A term is empty if it either has no referent or refers to an object outside the domain.

This system employs the one-place “existence” predicate, ‘E!’. For any singular term t, E!t is true if t denotes a member of the domain of interpretation, false otherwise. ‘E!’ may be either taken as primitive or (in bivalent free logic with identity) defined as follows:

E!t =df ∃x(x=t).

The problem is in your very first steps. The assumption that unicorns do not exist does not entail that unicorns don't have horns.

Formally:

1. Unicorns have one horn: ∀x(Unicorn(x) → HasHorn(x))
2. Unicorns do not exist: ~∃xUnicorn(x)
3. Unicorns do not have one horn: ∀x(Unicorn(x) → ~HasHorn(x))

(1) is by definition, and (2) is your assumption for contradiction. But (3) simply does not follow.

The fallacy in your logic is your assumed implication, namely that if a "unicorn does not exist => a unicorn does not a have horn." Actually, a unicorn that does not exist can have any number (one, more than one, or no) horns! It's up to your imagination.

"Unicorn" is a concept. It is a white horse with one ivory horn. This concept does not correspond to any object in "reality". Existing as a concept is not the same thing as existing in reality.

So, when you say

Unicorn does not have a horn (since, a non-existent entity cannot have anything)

But this contradicts the fact that unicorn has one horn by definition

This contradiction occurred for wrongly assuming that unicorn does not exist

So, unicorn exists

you mistake the non-existence of unicorns in "reality" to contradict the existence of unicorns as one-horned horses in concept. But those are two very different orders of "existence". In concept, unicorns do have one horn, not two and not zero. Their inexistence in "reality" can't change that. "Things" can exist in concept without existing in reality; things can exist in reality without existing in concept.

If we confuse these two levels, we may think we have prooved that unicorns exist, because un-existent unicorns don't have horns at all. But, as others have pointed out, inexistent entities can have any number of horns we fancy; I could point to an ox, and say, "look, there is a two-horned unicorn". By that "logic", unicorns indeed exist in "reality"; it only takes the effort of naming something else a "unicorn".

(Marco Polo (in)famously saw unicorns; he however remarked that they were not white, didn't look too much like a horse, and should not be trusted with virgins. Evidently, we would say he saw a rhinoceros. It is only by historic accident that rhinoceros are not called "unicorns" - they may even be the origin of the whole legend. If things had happened differently, we would call rhinoceros "unicorns", and no one would doubt they exist, although being at the risk of extinction. And we would make jokes about the fact that some unicorns have three horns instead of one.)

But "reality" is not created by acts of speech. Naming something else a "unicorn" would change the definition of the word, not the state of affairs in what we call "world". Shortly put, as long as a unicorn is a white horse with one ivory horn, unicorns do not exist, because we won't be able to find "real" white horses with one ivory horn. As soon as we use the word for something else, then unicorns exist, but they are no longer defined as "white horses with one ivory horn".

What your argument does is to prove that unicorns exist as a concept. But that was never in any serious doubt; unicorns exist in human imagination, literary descriptions, paintings, engravings, sculptures, drawings, and, more recently, in photo-shop. We can and do imagine things that don't exist, like unicorns or the headless mule that puffs fire from its nostrils. We can even put some of those imagined things - like circles and straight lines - to use in important and meaningful ways.

"Reality" however doesn't feel obligated to bow to our whims.