# Why can different technology transpile the quantum gate to different representations?

I saw that qiskit was just incorporated in a trapped ion device.

I transpiled my circuit to 2 backends: ibm superconducting device and aqt trapped ion device. I noticed that for ibm, the $$X$$ gate is transpiled into $$U_3(\pi,0,\pi)$$, whereas for aqt it is $$R_x(-\pi)$$.

Since both objectives of them are to take $$0$$ to $$1$$, why do they use a different quantum gate to do that?

By the way, for the aqt device, $$H$$ gate $$= R_y(\pi/2)R_x(\pi)$$. I was wondering, why are the two representations equal?

A particular gate's implementation is intrinsically tied to the underlying architecture. A U3 gate on IBM's superconducting backends is just a combination of 3 rotations alternatively around just two axes (for example rotate around X-axis, then Y-axis and then again X-axis; there are several other combinations to choose from). In fact this is the most general way in which you could take one point on a bloch sphere to any other point on it. In essence, that's what a U3 gate's signature means.

Now, to answer why this implementation of rotation varies on different backengs, here are my thoughts:

1. We'd like to keep the noise minimal while making any of those rotations. You might want to read more about how a Z gate is implemented on IBM's superconducting systems (It's virtually free of any noise). I'm not so well-wersed with Trapped-Ion device's transpiled code so can't comment on it's optimality.
2. I believe it could also have something to do with keeping gate abstractions intuitive enough for programmers which might give rise to different signatures for different backends.

The transpiler in Qiskit at present doesn't seem to function well consistently, and I'm currently investigating exactly why this is. As of now (May 14, 2020), the StackOverflow link I gave above gives several counterexamples of gates that cannot be transpiled in Qiskit. Some of these include a permutation matrix on 3-qubits, and randomly generated unitary gates on 3 or more qubits using the random_unitary() function in Qiskit.