latticeInstance

kofre.time.ArrayRanges.latticeInstance

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Self type

Members list

Value members

Concrete methods

override def decompose(a: ArrayRanges): Iterable[ArrayRanges]

Decompose a state into potentially smaller parts. Guarantees for any two states a and b that decompose(a).fold(b)(merge) == b merge a, i.e., merging the decomposed values into b has the same result as merging the full a into b (assuming b is normalized).

Decompose a state into potentially smaller parts. Guarantees for any two states a and b that decompose(a).fold(b)(merge) == b merge a, i.e., merging the decomposed values into b has the same result as merging the full a into b (assuming b is normalized).

Note that the goal here is small individual storage size at reasonable computational cost. Minimalism of returned results is not guaranteed. It is also not guaranteed that the result does not overlap. The result may be the empty sequence.

Attributes

Definition Classes
override def lteq(left: ArrayRanges, right: ArrayRanges): Boolean

Lattice order is derived from merge, but should be overridden for efficiency

Lattice order is derived from merge, but should be overridden for efficiency

Attributes

Definition Classes
override def merge(left: ArrayRanges, right: ArrayRanges): ArrayRanges

By assumption: associative, commutative, idempotent.

By assumption: associative, commutative, idempotent.

Implementation note: If it matters, assume that left is the current state and right is an added delta. All code should assume that left is the larger state (and optimize for this). If left == right, prefer to return left.

Attributes

Definition Classes

Inherited methods

def diff(state: ArrayRanges, delta: ArrayRanges): Option[ArrayRanges]

Computes delta without state. Overriding this is discouraged.

Computes delta without state. Overriding this is discouraged.

Attributes

Inherited from:
Lattice

Some types have multiple structural representations for semantically the same value, e.g., they may contain redundant or replaced parts. This can lead to semantically equivalent values that are not structurally equal. Normalize tries to fix this. Overriding this is discouraged.

Some types have multiple structural representations for semantically the same value, e.g., they may contain redundant or replaced parts. This can lead to semantically equivalent values that are not structurally equal. Normalize tries to fix this. Overriding this is discouraged.

Attributes

Inherited from:
Lattice

Extensions

Inherited extensions

extension (left: ArrayRanges)
final infix inline def <=(right: ArrayRanges): Boolean

Convenience extensions for the above.

Convenience extensions for the above.

Attributes

Inherited from:
Lattice
final inline def decomposed: Iterable[ArrayRanges]

Convenience extensions for the above.

Convenience extensions for the above.

Attributes

Inherited from:
Lattice
final infix inline def merge(right: ArrayRanges): ArrayRanges

Convenience extensions for the above.

Convenience extensions for the above.

Attributes

Inherited from:
Lattice