Constraint Solving
TechniqueConstraint solving is a foundational technique in program analysis, verification, and test generation, in which a solver is given a set of logical or arithmetic constraints over variables and asked to find concrete values that satisfy them, or to determine that no such values exist. The evidence shows constraint solving being used as the key supporting technology for symbolic execution, for template-driven architecture verification test generation in AVPGEN, for SMT-based mutation-driven compliance testing of RISC-V, for ARM instruction-stream synthesis in Examiner, and for hardware-description-driven test generation with the dedicated STCS solver. Solver strategies range from domain-reduction constraint logic programming over bit-vectors, to BDD-based methods, to SMT solvers such as Z3, Boolector, and CMSGen, and more recently to deep-learning-augmented satisfiability classifiers.
WIKI
Overview
Constraint solving is the task of determining values for the variables of a constraint system that satisfy all stated constraints, or proving that no such assignment exists. The evidence describes constraint solving as a key supporting technology for symbolic execution (DeepSover, 2020), a central mechanism inside template-driven architecture verification generators (AVPGEN, 1995; STCS, 2003), the engine used by compliance test generation tools to instantiate symbolic specifications (Herdt et al., 2020), and the back-end that turns a symbolic ASL encoding into a concrete ARM instruction stream (Examiner, 2022).
Constraint solving in symbolic execution
NEIGHBORHOOD
No graph connections found for this entity yet. It may appear in future ingestion runs.
explore full graph →