in figs/fig_4.py [0:0]
def A_contains_xstar(xstar, A, perm):
d = len(xstar)
D = A.shape[0]
Acon = np.zeros((d, D))
Acon[:d, :d] = np.diag(np.ones(d))
# Shuffle columns, to place true embedding on columns perm
Acon = Acon[:, perm]
Q = A @ np.linalg.pinv(A) - np.eye(D)
A_eq = np.vstack((Acon, Q))
b_eq = np.hstack((xstar, np.zeros(D)))
c = np.zeros(D)
x = cp.Variable(D)
prob = cp.Problem(
cp.Minimize(c.T * x),
[
A_eq @ x == b_eq,
x >= -1,
x <= 1,
],
)
prob.solve(solver=cp.ECOS)
if prob.status == cp.OPTIMAL:
has_opt = True
elif prob.status == cp.INFEASIBLE:
has_opt = False
else:
raise ValueError(prob.status)
return has_opt, prob