This article is a reproduction of examples from the following paper about the novel way of measuring relative information between quantum states separated in time: Fullwood, James, Zhen Wu, Arthur J. Parzygnat, and Vlatko Vedral (2024), Quantum Mutual Information in Time, arXiv:2410.02137. https://doi.org/10.48550/arXiv.2410.02137

Code


Init

Install and load the Wolfram Quantum Framework:
PacletInstall["https://www.wolfr.am/DevWQCF",ForceVersionInstall->True]​​<<Wolfram`QuantumFramework`

Example 1 (A dual state)

ρ=QuantumState
13/24
0
0
0
0
5/24
-1/6
0
0
-1/6
5/24
0
0
0
0
1/24
;
In[]:=
N@TemporalMutualInformation[ρ]
Out[]=
0.23072
b
In[]:=
N@SpatialMutualInformation[ρ]
Out[]=
0.23072
b

Example 2 (A single qubit at two times)

In[]:=
TemporalMutualInformation@PDM[QuantumState["UniformMixture"],QuantumOperator["I"]]
Out[]=
1
b
In[]:=
ρ=QuantumState["RandomMixed"];​​U=QuantumOperator["RandomUnitary"];
In[]:=
TemporalMutualInformation@PDM[ρ,U]
Out[]=
0.804027
b
In[]:=
ρ["Entropy"]
Out[]=
0.804027
b

Example 3 (Discard and prepare)

In[]:=
ρ=QuantumState["RandomMixed"];​​σ=QuantumState["RandomMixed"];​​qc=QuantumCircuitOperator[{"Trace",σ}];
In[]:=
TemporalMutualInformation@PDM[ρ,qc]//Chop
Out[]=
0
b

Example 4 (Decoherence)

In[]:=
PDM[QuantumState["-"],QuantumOperator["Measurement"]]["Eigenvalues"]
Out[]=

1
4
(1+
2
),
1
4
(1+
2
),
1
4
(1-
2
),
1
4
(1-
2
)
In[]:=
N@TemporalMutualInformation@PDM[QuantumState["-"],QuantumOperator["Measurement"]]
Out[]=
0.798248
b

Example 5 (A single qubit at multiple times)

In[]:=
$Assumptions=0<η<1&&0<p<1;
a=Simplify@TemporalMutualInformation[​​PDM[QuantumState[{{p,0},{0,1-p}}],{QuantumOperator["Channel"["Depolarizing"[η]]],QuantumOperator["Channel"["Depolarizing"[η]]]}]​​];
b=Simplify@TemporalMutualInformation[​​PDM[QuantumState[{{p,0},{0,1-p}}],{QuantumOperator["Channel"["Depolarizing"[η]]],QuantumOperator["I"]}]​​];
c=Simplify@TemporalMutualInformation[​​PDM[QuantumState[{{p,0},{0,1-p}}],{QuantumOperator["I"],QuantumOperator["Channel"["Depolarizing"[η]]],QuantumOperator["I"]}],{1,2}​​];
d=Simplify@TemporalMutualInformation[​​PDM[QuantumState[{{p,0},{0,1-p}}],{QuantumOperator["Channel"["Depolarizing"[η]]],QuantumOperator["I"],QuantumOperator["Channel"["Depolarizing"[η]]]}],{1,2}​​];
In[]:=
ResourceFunction["AddMatplotlibColors"][]
Out[]=
{Magma,Inferno,Plasma,Viridis,EricsRdBuGnYl,EricsRdBuGnYl2,EricsPuBuGnYl,FakeParula,JoesBluGrnPnk2}
plotFunctions=Simplify@QuantityMagnitude[{a,b,c,d}];
GraphicsGrid[Partition[Plot3D[#,{p,0,1},{η,0,1},AxesLabel->(Style[#,24]&/@{"p","η","I"}),BoxRatios->{1,1,1/2},ColorFunction->"Viridis",Mesh->None,PlotPoints->40,ViewPoint{2.27,2.14,1.3}]&/@plotFunctions,2]]
Out[]=

CITE THIS NOTEBOOK

Quantum mutual information in time​
by Nikolay Murzin​
Wolfram Community, STAFF PICKS, November 11, 2024
​https://community.wolfram.com/groups/-/m/t/3318041