Ket is a toolbox for quantum information, nonlocality, and entanglement written in the Julia programming language. All its functions are designed to work with generic types, allowing one to use Int64
or Float64
for efficiency, or arbitrary precision types when needed. Wherever possible they can be also used for optimization with JuMP. And everything is optimized to the last microsecond.
Highlights:
- Work with multipartite Bell inequalities, computing their local bounds and Tsirelson bounds with
local_bound
andtsirelson_bound
, and transforming between Collins-Gisin, probability, and correlator representations withtensor_collinsgisin
,tensor_probability
, andtensor_correlation
. - Work with bipartite entanglement by computing the relative entropy of entanglement, random robustness, or Schmidt number via
entanglement_entropy
,random_robustness
, andschmidt_number
. Under the hood these functions use the DPS hierarchy, which is also available in isolation via_dps_constraints!
. - Generate MUBs and SIC-POVMs through
mub
andsic_povm
. - Generate uniformly-distributed random states, unitaries, and POVMs with
random_state
,random_unitary
, andrandom_povm
. - Generate well-known families of quantum states, such as the Bell states, the GHZ state, the W state, and the super-singlet via
state_bell
,state_ghz
,state_w
, andstate_supersinglet
. - Work with multilinear algebra via utility functions such as
partial_trace
,partial_transpose
, andpermute_systems
. - Generate kets with
ket
.
For the full list of functions see the documentation.
Ket is a registered Julia package, so it can be installed by typing
]add Ket
into the Julia REPL.