Pragmatically, You are correct that when you declare something as a primary key, that it must correspond to one tuple. Databases will not allow you to store a tuple in a table if the primary key already exists for a tuple in the table.

Theoretically, If R is a relation with the following set A of attributes {a1,a2,...,an}, then a primary key on the relation R would be a subset P⊂A such that for F:P→A, we have ∀x,y∈PF(x)=F(y)→x=y. This basically just means that the primary key forms a one-to-one mapping from the domain of keys to the range of corresponding tuples.

If you have that two tuples are the same A and B, then this implies that A=B,and we still have that F(A)=F(B) so that there is no violation, in that sense.