Search papers, labs, and topics across Lattice.
This paper introduces Narcissus, a novel program synthesizer that leverages context-aware approximations of large language model (LLM) proposals to improve the synthesis of syntactically correct programs. By maintaining the structure of proposals as syntax trees and scoring expansions based on contextual relevance, Narcissus effectively navigates the search space while ensuring that incorrect proposals do not obscure potential solutions. The results demonstrate a significant performance improvement, with Narcissus solving 40% of ARC tasks compared to just 13% with raw LLM proposals, all without requiring additional LLM calls during the search process.
Narcissus achieves a remarkable leap in program synthesis efficiency, solving complex tasks an order of magnitude faster than traditional methods without relying on LLM calls.
Large language models (LLMs) excel at programming, but not when the task fixes the target language: prompted with a grammar rare in their training data, their programs usually break the grammar or fail the given specification. Enumerative synthesizers search the space of syntactically correct programs systematically guided by LLMs; the state of the art guides them by approximating LLM proposals into rule frequencies, which loses where each construct belongs and prunes every rule the proposals miss, exactly when the proposals are wrong. We present Narcissus, a synthesizer that keeps the proposals as syntax trees and scores each expansion of a candidate program in its context: does a proposal with the same surrounding structure continue the same way, and does the expansion rebuild a fragment the proposals repeat? A regularization term keeps every rule reachable, so wrong proposals delay the solution but cannot hide it. Across five domains and two search backends, Narcissus beats static guidance at every budget and consistently outperforms re-prompting the LLM to fix its own proposals; it reaches proposal-like programs an order of magnitude sooner and solves $40\%$ of ARC tasks where the raw proposals solve $13\%$, all without a single LLM call during search.