a set of polynomial constraints over an execution trace. Think of the execution trace as a spreadsheet where each row represents one step of the computation and each column represents one register (variable).