"""
Ncpol2SDPA
=====

Ncpol2SDPA package by Peter Wittek. Provides:
 1. A converter from a polynomial optimization problems of commuting and
    noncommuting variables to a semidefinite programming relaxation.
 2. Helper functions to define physics problems.

 As current version of the package available on PyPI contains minor issues, 
 original package was moved and modified to be used as a submodule of QREM package.
"""
__version__ = "1.12.3"
from .faacets_relaxation import FaacetsRelaxation
from .sdp_relaxation import SdpRelaxation
from .steering_hierarchy import SteeringHierarchy
from .moroder_hierarchy import MoroderHierarchy
from .rdm_hierarchy import RdmHierarchy
from .nc_utils import generate_operators, generate_variables, get_monomials, \
                      flatten
from .sdpa_utils import read_sdpa_out
from .physics_utils import bosonic_constraints, fermionic_constraints, \
    pauli_constraints, get_neighbors, get_next_neighbors, correlator, \
    generate_measurements, projective_measurement_constraints, \
    maximum_violation, define_objective_with_I, Probability

__all__ = ['SdpRelaxation',
           'SteeringHierarchy',
           'MoroderHierarchy',
           'FaacetsRelaxation',
           'RdmHierarchy',
           'generate_operators',
           'generate_variables',
           'bosonic_constraints',
           'fermionic_constraints',
           'projective_measurement_constraints',
           'correlator',
           'maximum_violation',
           'generate_measurements',
           'define_objective_with_I',
           'Probability',
           'flatten',
           'get_monomials',
           'get_neighbors',
           'get_next_neighbors',
           'read_sdpa_out',
           'pauli_constraints']
