Referential opacity I set out a bit of an explanation fo "=" yesterday. Here it is again.
A part of analytic method is to use formal logic to model natural language. The bits and pieces of a formal logic are much more rigorous than those of a natural language. We can borrow this rigour in order to show clearly some differences in use in natural languages.
This is brought out nicely in predicate logic. Three differing uses of "is" are:
1. The "is" of predication - "The ball is red" - f(a)
2. the "is of equivalence - "Two plus two is four" - a=b
3. The "is" of quantification - "There is a ball" - ∃(x)f(x)
We can see similar uses in a natural language such as English. A clear English sentence containing "is" might be parsed as one of these, but it may be that there are English sentences that include "is" but do not parse into one of these three; or at least that are somewhat ambiguous or difficult. Consider auxiliary uses, "What I’m telling you is, don’t touch that switch." So the list is not intended to be exhaustive.
It's also worth noting that (2) is a special case of (1). The "=" is a binary predicate over a and b.
In syllogistic logic, all relations are reduced to single-places predications. “Socrates is taller than Plato” has to be paraphrased into one-place predicates like “Socrates is-a-thing-taller-than-Plato” before entering a syllogism. Something like "Tully is Cicero" has to be treated not as a relation, but as a single-placed predicate. It has to be treated the same way as, say, "Tully is a writer". Tully is a member of the group of writers, and Tully is a member of the group of things which are Cicero.
An adherence to merely syllogistic logic might explain some of the difficulties had hereabouts.
"=" is reflexive, symmetrical and transitive; A=A; if A=B then B=A, and if A=B and B=C then A=C. Other relations can have all three - your birth month is your birth month, and if it is the same as mine, then mine is the same as yours, and if mine is the same as yours and yours is the same as hers, then mine is the same as hers. Taken together these three give us equivalence but not identity.
Classically we can add x=y⇔∀P (P(x)↔P(y)), Leibniz’s Law. This is the standard definition of "=" for first-order logics. Two things are identical if they have exactly the same properties.
It's extensional. What that means is that if A=B, then for any theorem that contains "A", we can instead stick "B", without changing the truth value. The truth of the theorem is not dependent on the term used, but on the thing - the extension - of that term. So since "A" and "B" refer to the very same thing, we can swap 'em, and what we say stays true.
But Leibniz’s Law falls over in modal contexts. The Opera House is in Sydney, but might have been instead built in Melbourne (God forbid! Picture it on the banks of that dank cloaca, the Yarra, in the rain...). But if we keep Leibniz’s Law then it would not be the Opera House, that very building, that was built in Melbourne, and so on... The answer to this, From Kripke, is to drop Leibniz’s Law but keep extensional substitution - that is, to use rigid designation.
This is not a complete account, but it'll do.