Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Module Soteria_std.Compo_res
This module defines a three-way result type for compositional symbolic execution. Unlike standard Result.t which has two cases (Ok/Error), this type adds a third case Missing for bi-abduction scenarios where anti-frame inference is needed, or more generally to represent incompletenesses in the engine.
When performing a function call, the current state may not contain all resources needed by the callee. Rather than immediately failing, we can infer what's missing (the "anti-frame") and continue analysis.
Three Cases:
Ok: Operation succeeded, resources matched
Error: Definite error found (e.g., null dereference, assertion failure)
Missing: Resources needed but not present; includes fixes. Missing contains a list of fixes, providing different ways to resolve the missing resources; for instance, when accessing a location in memory, two options are possible: either the location is allocated, or the location has been freed.
This module also provides a functor to lift this result type into any monadic context.