cottax.relational.consumers.architectures module

Registers how an architecture places a relational condition (ModelReading), with why one is no implicit model; offers its closing, FixedPointClosing, each group of cuts closed by a FixedPointCut.

class RelationalModel[source]

Bases: ModelReading

An implicit model where it states equalities alone, each condition written by a function node and every unknown read by one of them; its body those functions, a closed cut beside them changing nothing, the copy converging to what it copies; folded by its +.

not_implicit(graph, problem)[source]

Why the problem bound at problem is no implicit model in its language; nothing if it is.

body(graph, problem)[source]

The function nodes that are its own, in binding order: what an architecture boxes with it, and never cuts inside.

combines_as(condition)[source]

The kind whose + folds it (Combine’s kind), or None: it is folded into nothing.

class FixedPointClosing[N: Label, V: Place](copies: PlaceToPlace[V], at: At[N, V])[source]

Bases: Closing[N, V], Generic[N, V]

One group closed as one problem: a copy per variable, named by copies, and the closure bound where at says.

copies: PlaceToPlace[V]
at: At[N, V]
bound_at(cycle: tuple[N, ...], group: ToCut[N, V])[source]

Where that op binds the problem closing group.

Return type:

N

class NotEqualities(problem: str)[source]

Bases: Violation

problem: str
template: AbstractClassVar[str] = '{problem} is not an implicit model: it states an objective or an inequality, so it is a design and not a model -- name it as the top, or leave it out'

e.g. ‘output {place!r} is owned by both {other!r} and {node!r}’

Type:

Wording

class ConditionOffBody(problem: str, conditions: tuple)[source]

Bases: Violation

problem: str
conditions: tuple
template: AbstractClassVar[str] = '{problem} is not an implicit model: {conditions!r} not owned by a function node -- a loop closed through another problem is one solve written as several; `Combine` them first'

e.g. ‘output {place!r} is owned by both {other!r} and {node!r}’

Type:

Wording

class UnknownUnread(problem: str, unknowns: tuple)[source]

Bases: Violation

problem: str
unknowns: tuple
template: AbstractClassVar[str] = '{problem} is not an implicit model: its body does not read {unknowns!r} -- a residual computed through a chain is not a discipline; make the chain its body'

e.g. ‘output {place!r} is owned by both {other!r} and {node!r}’

Type:

Wording