A Memory acts like a structured partial solution where terms are regrouped by package in a dictionary. This module provides functions to manage it.
A package memory contains the potential decision and derivations that have already been made for a given package.
Initialize a Memory from a decision.
Initialize a Memory from a derivation.
Building step of a Memory from a given assignment.
Add a decision to a Memory.
Add a derivation to a Memory.
Extract all packages that may potentially be picked next to continue solving package dependencies. A package is a potential pick if there isn't an already version selected (no "decision") and if it contains at least one positive derivation term in the partial solution.
Memory is the set of all assignments previous to (including) its paired assignment in the partial solution list.
Those previous assignments are regrouped by package, making it easier to find out if a decision was made for a given package, and to list all corresponding derivations of a package.
Contrary to PartialSolution, Memory does not store derivations causes, only the terms.