constrained decoding