Search papers, labs, and topics across Lattice.
This paper introduces DateSAT, a novel framework for expressing and solving satisfiability constraints involving dates and calendar periods, addressing the lack of native date support in existing program analysis tools. They formalize an input language, define semantics for date/period arithmetic, and implement five distinct solving strategies based on SMT reductions using Z3. Empirical evaluation on a dataset of 450 synthesized DateSAT constraints demonstrates the effectiveness of the proposed solving strategies.
Reasoning about dates and times in code just got easier: DateSAT offers the first framework for solving satisfiability constraints involving dates and calendar periods.
Dates and calendar periods (i.e., days, months, years) appear frequently in tasks involving analysis of software, data, and documents. Prior research has shown that computer logic involving dates and calendrical calculations is error-prone due to tricky rules (e.g., irregularly sized months), ambiguities (e.g., scheduling one month from "Jan 31st"), and edge cases (e.g., leap years). However, existing program analysis and verification tools do not provide native support for dates, making it hard to reason about operations involving calendrical arithmetic symbolically. This paper presents DateSAT, the first framework for expressing and solving satisfiability constraints involving dates and calendar periods. The paper first formalizes an input language and the semantics of date and period arithmetic. The paper then presents five separate strategies for solving DateSAT constraints based on reductions to SMT formulas involving integers, which we have implemented using Z3 as a backend. We curate a dataset of 450 DateSAT constraints synthesized using LLM prompting, grammar-based sampling, and mining legal documents, and then present an empirical evaluation of DateSAT solver performance.