code: 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]]
      
      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)
docs: Yield arbitration ids which has the same pgn.