In[]:=
QuantumCircuitOperator[{"0","H"}]
Out[]=
In[]:=
QuantumCircuitOperator["H"]["TensorNetwork"]
Out[]=
In[]:=
TensorNetworkIndexGraph@QuantumCircuitOperator["H"]["TensorNetwork"]
Out[]=
M
ij
​​
A
kl
​​​​
∑
j
M
ij
A
jk
​​​​
abcde
T
ijk
M.A
In[]:=
circuit=QuantumCircuitOperator["CHSH"[p]][[;;-5]]
Out[]=
In[]:=
net=circuit["TensorNetwork",EdgeLabels->"EdgeTag"]
Out[]=
In[]:=
TensorNetworkIndexGraph[net]
Out[]=
In[]:=
TensorNetworkTensors[net]
Out[]=
SparseArray
Specified elements: 2
Dimensions: {2,2}
,SparseArray
Specified elements: 2
Dimensions: {2}
,SparseArray
Specified elements: 2
Dimensions: {2}
,SparseArray
Specified elements: 2
Dimensions: {2,2}
,SparseArray
Specified elements: 6
Dimensions: {2,2,2,2}
,SparseArray
Specified elements: 4
Dimensions: {2,2}
,SparseArray
Specified elements: 6
Dimensions: {2,2,2,2}

In[]:=
TensorNetworkIndices[net]
Out[]=
{
1
1
,
4
1
},{
2
2
},{
3
3
},{
1
4
,
4
1
},{
1
5
,
2
5
,
5
1
,
5
2
},{
4
6
,
6
4
},
3
7
,
4
7
,
7
3
,
7
4

In[]:=
TensorNetworkContractionPath[net]
Out[]=
{{2,5},{2,5},{2,4},{2,3},{1,3},{1,2}}
In[]:=
ContractTensorNetwork[net]
Out[]=
SparseArray
Specified elements: 16
Dimensions: {2,2,2,2}

In[]:=
circuit[]["StateTensor"]
Out[]=
SparseArray
Specified elements: 16
Dimensions: {2,2,2,2}

In[]:=
nn=NetFlatten@TensorNetworkNetGraph[net]
Out[]=
NetGraph
InputPort
​
p
:
real
OutputPort
T13
:
array(size: 2×2×2×2)
p:
Port
Form:
real

In[]:=
nn[.3]
Out[]=
{{{{0.284552,0.209833},{0.349583,0.0528344}},{{0.349583,-0.0528344},{0.209833,0.284552}}},{{{0.209833,-0.284552},{-0.0528344,0.349583}},{{0.0528344,0.349583},{0.284552,-0.209833}}}}
In[]:=
Normal@ContractTensorNetwork[net]
Out[]=

1
4
Cos
p
2
+
1
4
Sin
p
2
,
1
4
Cos
p
2
-
1
4
Sin
p
2
,
Cos
p
2

2
2
,
Sin
p
2

2
2
,
1
2
Cos
p
2

2
2
-
Sin
p
2

2
2
+
1
2
Cos
p
2

2
2
+
Sin
p
2

2
2
,
1
2
-
Cos
p
2

2
2
-
Sin
p
2

2
2
+
1
2
Cos
p
2

2
2
-
Sin
p
2

2
2
,
Cos
p
2

2
2
-
Sin
p
2

2
2
2
,
Cos
p
2

2
2
+
Sin
p
2

2
2
2
,
1
4
Cos
p
2
-
1
4
Sin
p
2
,-
1
4
Cos
p
2
-
1
4
Sin
p
2
,-
Sin
p
2

2
2
,
Cos
p
2

2
2
,
1
2
-
Cos
p
2

2
2
+
Sin
p
2

2
2
+
1
2
Cos
p
2

2
2
+
Sin
p
2

2
2
,
1
2
Cos
p
2

2
2
-
Sin
p
2

2
2
+
1
2
Cos
p
2

2
2
+
Sin
p
2

2
2
,
Cos
p
2

2
2
+
Sin
p
2

2
2
2
,
-
Cos
p
2

2
2
+
Sin
p
2

2
2
2

In[]:=
%/.p->.3
Out[]=
{{{{0.284552,0.209833},{0.349583,0.0528344}},{{0.349583,-0.0528344},{0.209833,0.284552}}},{{{0.209833,-0.284552},{-0.0528344,0.349583}},{{0.0528344,0.349583},{0.284552,-0.209833}}}}
In[]:=
FunctionCompile[Function[Typed[p,"Real64"],{{p,0},{1-p,1}}]]