<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def ids_sharing_same_pgn(id_x, pgn_x, id_y, pgn_y):
 # type: (typing.Sequence[canmatrix.ArbitrationId], typing.Sequence[int], typing.Sequence[canmatrix.ArbitrationId], typing.Sequence[int]) -> typing.Iterable[typing.Tuple[canmatrix.ArbitrationId, canmatrix.ArbitrationId]] """Yield arbitration ids which has the same pgn."""

    for id_a, pgn_a in zip(id_x, pgn_x):
        for id_b, pgn_b in zip(id_y, pgn_y):
            if pgn_a == pgn_b:
                yield (id_a, id_b)