package structured
 Alphabetic
 Public
 All
Type Members
 class ApplyComponent [Value] extends ProblemComponent[Value]

class
AtomicComponent
[Value] extends ProblemComponent[Value]
Problem components for atomic elements.
 sealed abstract class Bounds extends AnyRef

class
ChainComponent
[ParentValue, Value] extends ExpandableComponent[ParentValue, Value]
A problem component created for a chain element.

class
ComponentCollection
extends AnyRef
A collection of problem components.
A collection of problem components. This data structure manages all the components being used in the solution of a toplevel problem and its nested subproblems. Every element exists in at most one component. To create a new component for an element, you need to say what problem it belongs to.
This class is intended for models that do not use chain function memoization recursively; for this purpose, use
RecursiveComponentCollection
. 
abstract
class
ExpandableComponent
[ParentValue, Value] extends ProblemComponent[Value]
A problem component that provides an expand method.

class
IncrementingCollection
extends ComponentCollection
Component collections for models that recursively use chain function memoization.
Component collections for models that recursively use chain function memoization. This works by incrementing depth at every expansion. Thus, if the maximum depth of expansion is d, then there can be up to d copies of each expansion.

class
MakeArrayComponent
[Value] extends ExpandableComponent[Int, FixedSizeArray[Value]]
A problem component for a MakeArray element.

class
MinimalIncrementingCollection
extends ComponentCollection
Component collections for models that recursively use chain function memoization.
Component collections for models that recursively use chain function memoization. When expanding a subproblem, this works by computing the least depth that does not create a cycle in the graph of subproblems.
This maintains the invariant that if an expansion exists at depth d > 1, then an expansion also exists at depth d  1. Furthermore, the expansion at depth d  1 directly or indirectly uses the expansion at depth d. This invariant makes it possible to find the least depth that does not create a cycle by performing exponential search.
 class NestedProblem [T] extends Problem

class
Problem
extends AnyRef
A Problem defines an inference problem to be solved.
A Problem defines an inference problem to be solved. It includes a set of components directly contained in the problem. These components might have nested subproblems. It also refers to global components that are outside of this problem. The targets are elements that appear in this problem that are visible outside. They might be newly defined in this problem or they might be defined previously, but either way, they should not be eliminated.
 class ProblemComponent [Value] extends AnyRef

class
SelectiveIncrementingCollection
extends ComponentCollection
Component collections for models that recursively use chain function memoization.
Component collections for models that recursively use chain function memoization. This works by incrementing depth at as few edges as possible in the graph of expansions. The collection maintains a graph of expansions that can use each other without incrementing the depth of recurison. Expansions are greedily added to this graph until one creates a cycle. Such an edge is instead recorded as an edge along which we must increment the depth when expanding.