Optimality conditions for bilevel programming problems | Synapse