Why is there both `:=` and `=` used in set notation?

There's not a lot of difference :)

$:=$ means "is defined to equal" and is most often used to say that the Right Hand Side is formally defining the Left Hand Side.

"=" is equals and can also be used to define things (though I, personally, would consider it a little bit loose) but can also be used to state that the Left Hand Side and the Right Hand Side are the same, though one or both may have come from a different definition.


The symbol "$:=$" is used when you define something to be equal to something. For example, the rationals $\mathbb{Q}:=Q(\mathbb{Z})$ are defined the field of fractions of the integers. If someone showed you that symbol, you would not have knew what it is. It's just defined as that.

The symbol "$=$" means equality that arises from something.


The symbol "$:=$" seems to have been introduced in programming languages in the 1960's. For instance in Pascal, one writes $x = 0$ for testing equality (like in "if $x=0$ then...") and $x := 0$ to assign the value $0$ to the variable $x$.

However, since assignment is more frequent than equality testing, languages like C or Java use a different syntax: $x = 0$ for assignment and $x == 0$ for equality testing.

After that, the notation $:=$ spread out in mathematical writing, mostly to mean "equal by definition". I would not recommend using it, but it is nevertheless quite common.

EDIT. According to the Wikipedia entry ALGOL 58, ALGOL 58, originally known as IAL, is one of the family of ALGOL computer programming languages.

The distinction between assignment (:= representing a left-facing arrow) and the equality relation (=) was introduced in IAL and kept in ALGOL 60.

Thus the use of := in computer science goes back to at least 1958.