cottax.consumers.architectures.interface module¶
Interface for the architectures.
How a problem is placed: ModelReading, three questions, registered per condition class
How a group of cuts is closed: Closing, chosen
``` ModelReading not_implicit(graph, problem) why it is not an implicit model: refusals, none if it is
body(graph, problem) the function nodes that are its own: boxed with it, never cut combines_as(condition) the kind whose + folds it (Combine), or None
- Closing __call__(cycle, group) the op closing a group of cuts on a cycle
bound_at(cycle, group) the node name of the problem that op binds
A problem is asked by its node name in the graph handed; the answer is found by its condition’s class, a driven node’s through its condition (condition_of).
- class ModelReading[source]¶
Bases:
AnswerHow a problem reads as a model:
Whether it is an implicit model
Its body, the function nodes that are its own
How it combines with other problems
- about¶
alias of
ConditionalNode
- abstractmethod not_implicit[N: Label, V: Place](graph: NestingGraph[N, V], problem: N)[source]¶
Why the problem bound at problem is no implicit model in its language; nothing if it is.
- Return type:
Iterable[Violation]
- class Closing[N: Label, V: Place][source]¶
Bases:
Frozen,Choice,Generic[N,V]How a group of cuts is closed: the op closing it, and the name of the problem that op binds. (i.e. conventionally a fixed point cut)
Handed in as:
MDF(GaussSeidel(), cx.closing, top), an architecture’s second argument; or CloseFunctionalCycles(GaussSeidel(), cx.closing).