In[]:=
2+2
Out[]=
4
In[]:=
PacletInstall["https://wolfr.am/DevWQCF",ForceVersionInstall->True]
Out[]=
PacletObject
Name: Wolfram/QuantumFramework
Version: 1.2.13

In[]:=
Needs["Wolfram`QuantumFramework`"]
LibraryFunction
:Cannot open libcotengra.
In[]:=
TQDepol[ϵ_]:=
ϵ
15.0
QuantumOperator["IX"],QuantumOperator["IY"],QuantumOperator["IZ"],QuantumOperator["XI"],QuantumOperator["XX"],QuantumOperator["XY"],QuantumOperator["XZ"],QuantumOperator["YI"],QuantumOperator["YX"],QuantumOperator["YY"],QuantumOperator["YZ"],QuantumOperator["ZI"],QuantumOperator["ZX"],
ϵ
15.0
QuantumOperator["ZY"],QuantumOperator["ZZ"],
1-ϵ
ϵ
15.0
QuantumOperator["II"];
In[]:=
TQDepolChannel[ϵ_,i_,j_]:=QuantumChannel[TQDepol[ϵ],{i,j}]
In[]:=
Test=TQDepolChannel
-3
10
15
16
,2,3[QuantumState["0000"]]
Out[]=
QuantumState
Mixed state
Qudits: 4
Type: Matrix
Dimension: 16
Picture: Schrödinger
​

In[]:=
OddCouplings[N_]:=Sum[QuantumOperator["XX",{i,i+1}],{i,1,N,2}];​​EvenCouplings[N_]:=Sum[QuantumOperator["XX",{i,i+1}],{i,2,N-1,2}]+QuantumOperator["XX",{N,1}];​​FieldOps[N_]:=Sum[QuantumOperator["Z",{i}],{i,N}];​​Ham[N_,α_,β_]:=βOddCouplings[N]+βEvenCouplings[N]+αFieldOps[N];
In[]:=
OddGates[N_,β_]:=Exp[-βOddCouplings[N]];​​EvenGates[N_,β_]:=Exp[-βEvenCouplings[N]];​​SQGates[N_,α_]:=Exp[-αFieldOps[N]];​​FullHamProp[N_,α_,β_,T_]:=Exp[-Ham[N,α,β]T];
Build noisy gate layers
In[]:=
​​Num=4;​​ϵ=
-3
10
;​​β=1.0;​​α=1.0;
In[]:=
OddGatesβ1Num4=OddGates[Num,β];​​EvenGatesβ1Num4=EvenGates[Num,β];​​SQGatesα1Num4=SQGates[Num,α];​​TQDepolChannel12=TQDepolChannel[ϵ,1,2];​​TQDepolChannel23=TQDepolChannel[ϵ,2,3];​​TQDepolChannel34=TQDepolChannel[ϵ,3,4];​​TQDepolChannel14=TQDepolChannel[ϵ,1,4];
In[]:=
OddNoise=TQDepolChannel12@TQDepolChannel34;​​EvenNoise=TQDepolChannel23@TQDepolChannel14;

First construct the noiseless circuit

In[]:=
EvenGatesβ1Num4@OddGatesβ1Num4@EvenGatesβ1Num4@OddGatesβ1Num4@EvenGatesβ1Num4@OddGatesβ1Num4@EvenGatesβ1Num4@OddGatesβ1Num4
Out[]=
QuantumOperator
Picture: Schrödinger
Arity: 4
Dimension: 16→16
Qudits: 4→4

That works fine
​
Now try to include the noise
In[]:=
NoisyEvenGates=EvenNoise@EvenGatesβ1Num4;NoisyOddGates=OddNoise@OddGatesβ1Num4;
In[]:=
NoisyEvenGates@NoisyOddGates
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
NoisyEvenGates=EvenNoise@EvenGatesβ1Num4
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
NoisyOddGates=OddNoise@OddGatesβ1Num4
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
HalfStep=NoisyOddGates@SQGatesα1Num4
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
TQStep=NoisyEvenGates@NoisyOddGates
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
EvenNoise@OddNoise@EvenNoise
Out[]=
$Aborted
In[]:=
TQDepolChannel[ϵ,1,2]@TQDepolChannel[ϵ,1,2]@TQDepolChannel[ϵ,3,4]
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
TQDepolChannel[ϵ,1,2]@TQDepolChannel[ϵ,1,2]@TQDepolChannel[ϵ,3,4]@TQDepolChannel[ϵ,1,2](*@TQDepolChannel[ϵ,1,2]@TQDepolChannel[ϵ,3,4]*)
Out[]=
QuantumChannel
Picture: Schrödinger
Arity: 4
Dimension: 16
Qudits: 4
Data not saved. Save now

In[]:=
2+2
Out[]=
4