FFT of a mirrored array
This is occurring because you have not time-reversed the signal properly. The time reversal intended by your identity is for $X[n] = X[(N-n)_N]$ where the notation $(\cdot)_N$ means that you should take the result modulo $N$. In other words $X[0] = X[(N)_N] = X[0]$ doesn't change position.

For your example, you start with the finite-length signal $a = [1, 2, 3, 4, ... 9, 10]$. The true time reversal of $a$ is $a_r = [ 1, 10, 9, 8, ... 3, 2 ]$. But the python code results in simply reversing the order of the components without respect to their indices, thus the result is the signal $a_m = [ 10, 9, 8, 7, ... 2, 1 ]$. 

The reason the first entry is the same in both cases is because it is simply the sum of the elements which is equal for all three signals $a$, $a_r$ and $a_m$.

Here is a function that will time reverse your signal.

def time_reverse(x):
    xrev = [ x[0] ]
    xrev.extend(x[-1:0:-1])
    return xrev


So, you can add this function definition to the top of the file and replace the line

a_mirrored = np.array(list(-a[::-1]))


with the line

a_mirrored = -np.array(time_reverse(a))


Then your plots should match up fine.