### Parameters

`Domain3 : InferModules.AbstractDomain.S`
`Domain2 : InferModules.AbstractDomain.S`
`Domain1 : InferModules.AbstractDomain.S`

### Signature

`type astate````=` `{`

`uninit_vars : Domain1.astate;`
`aliased_vars : Domain2.astate;`
`prepost : Domain3.astate * Domain3.astate;`

`}```
`val (<=) : lhs:astate ‑> rhs:astate ‑> bool`
`val join : astate ‑> astate ‑> astate`
`val widen : prev:astate ‑> next:astate ‑> num_iters:int ‑> astate`
`val pp : F.formatter ‑> astate ‑> unit`