Theory DG_State
theory DG_State
imports "Voblint_Domain.State_Concretization"
begin
section ‹The value a D/G unknown carries›
text ‹An analysis chooses a flow-sensitive answer domain ‹D› and a
flow-insensitive side-effect domain ‹G›. The framework keeps them opaque and
stores them in separate components of ‹dg_state›; it never copies a global
component into a local answer.
This theory is that carrier and its order, and nothing else: no address, no
solver tree, no transfer. Everything above it only projects and repacks the
two components, which is what makes those constructions independent of the
concrete domains.›
subsection ‹A lattice copy type for D-times-G unknown values›
text ‹
The solver's single value type must order local and global halves
componentwise. Raw pairs cannot: this repository loads
‹HOL-Library.Product_Lexorder›, so every ‹'l * 'g› in scope already
carries the lexicographic order, and a componentwise instance for the same
type would clash with it. ‹dg_state› is a distinct carrier so that both
orders can coexist.
›