Skip to content

Commit cac96ee

Browse files
Improve README
1 parent 3c0e79b commit cac96ee

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

README.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
# EntanglementDetection
1+
# EntanglementDetection.jl
22

33
[![Dev](https://img.shields.io/badge/docs-dev-blue.svg)](https://zib-iol.github.io/EntanglementDetection.jl/dev/)
4-
[![Build Status](https://github.com/ZIB-IOL/EntanglementDetection.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/ZIB-IOL/EntanglementDetection.jl/actions/workflows/ci.yml)
4+
[![Build Status](https://github.com/zib-iol/EntanglementDetection.jl/actions/workflows/CI.yml/badge.svg?branch=main)](https://github.com/zib-iol/EntanglementDetection.jl/actions/workflows/CI.yml?query=branch%3Amain)
55

6-
This package addresses the **entanglement** and **separability** certification for multipartite quantum systems with arbitrary local dimensions.
6+
This package addresses the certification of **entanglement** and **separability** for multipartite quantum systems with arbitrary local dimensions.
77

88
The original article for which it was written can be found here:
99

1010
> [1] [A Unified Toolbox for Multipartite Entanglement Certification](https://arxiv.org/abs/2507.17435).
1111
12-
The method for separability certification as the part of the package was first introduced in
12+
The method for separability certification was first introduced in
1313

1414
> [2] [Convex optimization over classes of multiparticle entanglement](https://arxiv.org/abs/1707.02958).
1515
@@ -34,7 +34,7 @@ Let's say we want to analyze the entanglement property of the two-qubit maximall
3434
Using `EntanglementDetection.jl`, here is what the code looks like.
3535

3636
```julia
37-
julia> using EntanglementDetection, LinearAlgebra, Ket
37+
julia> using EntanglementDetection, Ket, LinearAlgebra
3838

3939
julia> d = 2; # qubit system
4040

@@ -51,8 +51,8 @@ julia> ρ = Ket.state_ghz(d, N; v = 1 - p) # two-qubit maximally entangled state
5151

5252
julia> dims = Tuple(fill(d, N)); # the entanglement structure 2 × 2
5353

54-
julia> res = separable_distance(ρ, dims); # achieve the distance to the separable space
55-
Iteration Primal Dual gap #Atoms
54+
julia> res = separable_distance(ρ, dims); # compute the distance to the separable set
55+
Iteration Primal Dual gap #Atoms
5656
1 1.6600e+00 4.0000e+00 1
5757
10000 3.2667e-01 6.1346e-08 10
5858
20000 3.2667e-01 6.1346e-08 10
@@ -68,13 +68,13 @@ Iteration Primal Dual gap #Atoms
6868
[ Info: Stop: maximum iteration reached
6969
```
7070
71-
For the state ``ρ``, as the distance to the separable space `res.primal` is much larger than 0, practically, we can detect the entanglement of the state with confidence (technically speaking, ``Primal`` $\gg$ ``Dual gap``.)
71+
For the state ``ρ``, as the distance to the separable set `res.primal` is much larger than 0, practically, we can detect the entanglement of the state with confidence (technically speaking, ``Primal`` $\gg$ ``Dual gap``).
7272
7373
## Entanglement certification
7474
75-
In principle, if ``Primal`` $\geq$ ``Dual gap``, the state is outside the separable space, therefore is entangled. However, due to the heuristic method, the ``Dual gap`` is inaccuracy. In practice, we can detect the entanglement by check enlarging the factor, e.g., ``Primal`` $\geq 5 \times$ ``Dual gap``.
75+
In principle, if ``Primal`` $>$ ``Dual gap``, the state is outside the separable set, therefore is entangled. However, since the default method in our algorithm is heuristic, the printed value of ``Dual gap`` is a lower bound on its actual value. For practical applications, it is empirically enough (although not theoretically proven) to enlarge the factor, e.g., ``Primal`` $\geqslant 5 \times$ ``Dual gap``.
7676
77-
A rigorous tool is also introduce in our package:
77+
For cases where this is not sufficient, a rigorous tool is also introduced in our package:
7878
7979
```julia
8080
julia> witness = entanglement_witness(ρ, res.σ, dims); # construct a rigorous entanglement witness
@@ -85,7 +85,7 @@ true
8585
8686
## Separability certification
8787
88-
Let's consider the other case that there is more noise mixed in the state.
88+
Let us consider the other case, namely, when there is more noise mixed in the state.
8989
9090
```julia
9191
julia> d = 2; N = 2; p = 0.8; ρ = Ket.state_ghz(d, N; v = 1 - p) # with more white noise
@@ -95,14 +95,14 @@ julia> d = 2; N = 2; p = 0.8; ρ = Ket.state_ghz(d, N; v = 1 - p) # with more wh
9595
0.0-0.0im 0.0-0.0im 0.2+0.0im 0.0+0.0im
9696
0.1-0.0im 0.0-0.0im 0.0-0.0im 0.3+0.0im
9797

98-
julia> res = separable_distance(ρ, dims); # achieve the distance to the separable space
99-
Iteration Primal Dual gap #Atoms
98+
julia> res = separable_distance(ρ, dims); # compute the distance to the separable set
99+
Iteration Primal Dual gap #Atoms
100100
1 1.3600e+00 4.0000e+00 1
101101
Last 7.7981e-07 1.0612e-03 14
102102
[ Info: Stop: primal small enough
103103
```
104104
105-
For this case, ``Primal`` is much smaller than ``Dual gap``, which can not be detected as an entangled state, and also can not be confirmed by entanglement witness:
105+
Here, ``Primal`` is much smaller than ``Dual gap``, which can not be detected as an entangled state, and also cannot be confirmed by entanglement witness:
106106
107107
```julia
108108
julia> witness = entanglement_witness(ρ, res.σ, dims); # construct a rigorous entanglement witness
@@ -111,7 +111,7 @@ julia> real(dot(witness.W, ρ)) < 0 # if Tr(Wρ) > 0, then the state ρ could be
111111
false
112112
```
113113
114-
In order to certify separability, a geometric reconstruction procedure was introduced in Ref. [2] as the part of our package to build a unified toolbox for entanglement analysis:
114+
In order to certify separability, a geometric reconstruction procedure was introduced in Ref. [2] and is also provided in our package to build a unified toolbox for entanglement analysis:
115115
116116
```julia
117117
julia> sep = separability_certification(ρ, dims; verbose = 0); # certify separability by geometric reconstruction
@@ -123,9 +123,9 @@ true
123123
## Under the hood
124124
125125
The computation is based on an efficient variant of the Frank-Wolfe algorithm to iteratively find the separable state closest to the input quantum state based on correlation tensor.
126-
See this recent [review](https://arxiv.org/abs/2211.14103) for an introduction to the method and the package [FrankWolfe.jl](https://github.com/ZIB-IOL/FrankWolfe.jl) for the implementation on which this package relies.
126+
See this recent [review](https://arxiv.org/abs/2211.14103) for an introduction to the method, the [article](https://arxiv.org/abs/2506.02635) for the details on the latest improvements used in our case, and the package [FrankWolfe.jl](https://github.com/ZIB-IOL/FrankWolfe.jl) for the implementation on which this package relies.
127127
128128
## Going further
129129
130130
More examples can be found in the corresponding folder of the package.
131-
They include the application on the 10-qubit system with shortcut method and multipartite systems with different entanglement structures.
131+
They include the application on a 10-qubit system (with a shortcut method for early stop) and multipartite systems with different entanglement structures.

0 commit comments

Comments
 (0)