triz_feasibility
Decide whether a TRIZ function model meets its resource budget: compute minimal resource vectors, return feasible, infeasible, or undecided verdicts, and suggest budget or capability raises.
Instructions
Monotone co-design feasibility (Censi 2015) from declared box feasibility rows: each row provides a level per output port against the levels it requires per input port and an operating cost, read monotonically (providing less never needs more; more resources never hurt). The product boxes' rows are the demand. An output port feeding several functions meets the largest of their demands on an intensive carrier (the default: one shared level) and their sum on a carrier declared quantity: extensive. Composes the rows along non-harmful functions, including feedback loops, by Kleene's ascent from nothing demanded to the least fixpoint, and returns the minimal resource vectors (fixed costs of every box plus the chosen rows' operating costs), each with its rows and demanded levels. Verdict against the model's budget: feasible; infeasible (reason over-budget, with the binding dimensions every minimal vector exceeds, or unprovidable, naming the port no row can serve); or undecided (missing-feasibility, no-budget, unbudgeted, circular-resource-support). A bounded source-support closure from zero provision must ground a selected affordable witness; steadyState reports the separate balance verdict. With trim and absorb (as triz_behavior takes them), apply the trim and decide the trimmed model; the baseline is solved only to report each absorber's added resources. When carriers declare levels (thresholds reading amounts as declared values), levels reports each feasibility row, of a box that also declares behaviour, whose named amounts read as values no matching behaviour row gives (value-mismatch) or at inputs the behaviour rules out (no-behavior-row). Fails closed on ill-typed or dominated rows, a requirement no non-harmful function supplies, an extensive input fed by several functions (extensive-fan-in: model a merge box), and past the caps. No polynomial bound is claimed. The verdict holds for the rows as declared; the absorber's new harms are not modelled. An infeasible verdict also carries relaxation: over-budget results list the nondominated minimal budget raises that would make the model affordable, each with its row-selection witness (budget_feasible_iff), and the cheapest raise of any single dimension that suffices alone; unprovidable results list the smallest per-port capability raises. Raises advise; the budget stays the caller's declaration.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| trim | No | Boxes to trim; with it, decide whether the remaining boxes provide what the trim leaves them within budget | |
| model | Yes | ||
| absorb | No | With trim: function wire id → absorber output port; default: the first absorber triz_trim lists | |
| max_antichain | No | Cap on antichain elements per step (default and maximum 1000) | |
| max_iterations | No | Cap on Kleene steps (default and maximum 1000) |