Efficient NIZKs for Algebraic Sets