{"ID":2876413,"CreatedAt":"2026-06-01T04:54:23.091178241Z","UpdatedAt":"2026-06-01T04:54:23.091178241Z","DeletedAt":null,"paper_url":"https://arxiv.org/abs/2509.00360","arxiv_id":"2509.00360","title":"ChopChop: a Programmable Framework for Semantically Constraining the Output of Language Models","abstract":"Language models (LMs) can generate code but cannot guarantee its correctness$\\unicode{x2014}$often producing outputs that violate type safety, program invariants, or other semantic properties. Constrained decoding offers a solution by restricting generation to only produce programs that satisfy user-defined properties. However, existing methods are either limited to syntactic constraints or rely on brittle, ad hoc encodings of semantic properties over token sequences rather than program structure. We present ChopChop, the first programmable framework for constraining the output of LMs with respect to semantic properties. ChopChop introduces a principled way to construct constrained decoders based on analyzing the space of programs a prefix represents. It formulates this analysis as a realizability problem which is solved via coinduction, connecting token-level generation with structural reasoning over programs. We demonstrate ChopChop's generality by using it to enforce (1) equivalence to a reference program and (2) type safety. Across a range of models and tasks, ChopChop improves success rates while maintaining practical decoding latency.","short_abstract":"Language models (LMs) can generate code but cannot guarantee its correctness$\\unicode{x2014}$often producing outputs that violate type safety, program invariants, or other semantic properties. Constrained decoding offers a solution by restricting generation to only produce programs that satisfy user-defined properties....","url_abs":"https://arxiv.org/abs/2509.00360","url_pdf":"https://arxiv.org/pdf/2509.00360v2","authors":"[\"Shaan Nagy\",\"Timothy Zhou\",\"Nadia Polikarpova\",\"Loris D'Antoni\"]","published":"2025-08-30T04:51:03Z","proceeding":"cs.PL","tasks":"[\"cs.PL\"]","methods":"[\"Language Model\"]","has_code":false}
