$\newcommand{\RR}{{\mathbb R}} \newcommand{\RRm}{\RR^m} \newcommand{\RRmE}{\RR^{m_E}} \newcommand{\RRmI}{\RR^{m_I}} \newcommand{\RRmS}{\RR^{m_S}} \newcommand{\RRn}{\RR^n}$ SQPlab can solve a smooth nonlinear optimization problem possibly having bound contraints on the $n$ variables $x$, nonlinear inequality constraints, and nonlinear equality constraints. The problem is supposed to be written in the form:
$$ \begin{cases} \min\,f(x)\\ l_B\leq x \leq u_B\\ l_I\leq c_I(x)\leq u_I\\ c_E(x)= 0\\ c_S(x)=0. \end{cases} $$ The constraint functions are $c_I: \RRn\to \RRmI$, $c_E: \RRn\to \RRmE$, and $c_S: \RRn\to \RRmS$, which means that there are $m_I$ ($\geq0$) two-side nonlinear inequality  constraints, $m_E$ ($\geq0$) nonlinear equality  constraints, and $m_S$ ($\geq0$) nonlinear state  constraints. Lower and upper bounds can be infinite, but must verify $l_B< u_B$ and $l_I< u_I$. If the lower and upper bounds of a particular inequality constraint are both infinite, the constraint is ignored. The functions $f$, $c_I$, $c_E$, and $c_S$ are supposed smooth (at least first differentiability is required), but may be nonconvex.

The constraints $c_S(x)=0$ look like standard equality constraints, but are considered by SQPlab in a different manner. They are supposed to express state constraints  in an optimal control  setting. We mean by this that, once they are present, the variables $x$ are split in state variables  $y$ and control variables  $u$; hence $x = (y,u)$. There are as many state variables as state equations, i.e., $m_S$. In addition, it is assumed that the Jacobian of the state constraints with respect to the state variables is uniformly  nonsingular. The state constraints are then used to reduce the size of the optimization problem to $n-m_S$. SQPlab offers in fact more flexibility than in this short description; more is given in the documentation.