Distinguish the notion of multi-indices completeness and downward-closedness.
The notion of completeness and downward-closedness of MultiIndexSet
instances is now distinguished. Prior to this commit,
the notion of completeness was confused with the notion of downward-closedness (prior: "lexicographically complete"). Completeness is defined with respect to a particular polynomial degree and lp-degree, such that all indices satisfy the lp-norm condition. Downward-closedness, on the other hand, is defined for a multi-index set that does not contain lexicographical "holes", without any reference to a particular polynomial degree and lp-degree.
This distinction is reflected by two properties: is_complete
(completeness check) and is_downward_closed
(downward-closedness check).
The property is_complete
is already in the code base prior to this commit, but was a misnomer as it actually checked for downward-closedness/lexicographically complete. These properties are lazily evaluated.
This commit should resolve Issue #105 (closed).
Several additional changes:
- The utility function
minterpy.core.utils.is_lexicographically_complete()
is now renamed tominterpy.core.utils.is_downward_closed()
to be consistent with how it is used in theMultiIndexSet
property. - The utility function
minterpy.core.utils.is_complete()
is introduced for exclusively checking for completeness. The current implementation is memory intensive because it must create the whole complete set for comparison. However, this property is not crucial for Minterpy as a whole because only downward-closedness is required (say, in DDS). - Relevant occurences of
is_complete
are replaced withis_downward_closed
across the code base. - The test suite is extended to include the tests related to the utility functions as well as the new properties.
- The in-code documentation for the utility functions as well as the properties is updated.