Requirements for a Constraint Server Behind an LLM Front End


The deterministic reasoning engine that keeps natural-language configuration correct, complete, and buildable across the most complex products.

 

Sanjay Mittal

Founder & CEO
Predictika.ai

 

Email: sanjay@predictika.com

 

 

Introduction: from why to how

 

In an earlier paper we argued that the configuration of complex products calls for a constraint-based approach rather than the decision trees and hand-written rules that dominate conventional CPQ. The case rested on two properties. A constraint model stays maintainable as the product grows, because relationships compose instead of multiplying. And it supports flexible, order-independent interaction — including the natural-language, out-of-order input that an LLM front end produces. That paper alluded to what the underlying engine must do to make such interaction possible, but it did not dwell on the point.

 

This paper takes up exactly that question. It sets out the essential requirements for a constraint engine — or for a server that encapsulates such an engine and exposes it as a service. We refer to both as the constraint engine unless the distinction matters. The requirements build in layers, each addressing a limitation of the one before: from checking a finished candidate, to reasoning about partial information, to staying logically consistent while doing so, and finally to cooperating with a language model as a deterministic partner. The central claim is that it is this stack of capabilities — not the mere presence of constraints — that separates a world-class constraint server from an ordinary rules engine, and that makes trustworthy, LLM-driven configuration achievable.

 

Two properties that define a solution: correctness and completeness

 

Two properties define what it means to have solved a configuration problem, and every capability discussed below serves one or both of them.

 

Constraints, by their nature, simply describe logical relations among variables — or, more richly, among object-oriented entities with attributes. Taken together, the full set of relevant constraints forms a constraint system. That system is correct when every constraint evaluates to true once the information it depends on is available. The qualifier matters: a constraint whose inputs are not yet known does not fail. It suspends, waiting until the relevant values have been supplied. Correctness, then, is the guarantee that nothing which has been decided violates any constraint that applies to it.

 

Completeness is the second property. A solution is complete if and only if every parameter marked as required has been assigned a value. The engine cannot judge this unless the modeling language carries an explicit notion of which parameters are required; given that, it can tell a partial answer from a finished one. Correctness says that nothing is wrong; completeness says that nothing required is missing. A configuration a business can act on needs both.

 

The minimum bar: validating a candidate — and why it is not enough

 

The minimum a constraint engine must do follows immediately. Given a candidate solution — the relevant parameters together with their assigned values — it must evaluate whether the constraints are satisfied. That guarantees correctness. Extend the language with the notion of required parameters, and the engine can additionally confirm completeness by checking that every required parameter has a value. An engine that does only this is already useful as a final check.

 

But it is the wrong shape for how configuration actually happens. People do not arrive with a finished candidate; they build one incrementally, a choice at a time. An LLM front end fits a finished-candidate check even less. The natural mode of language interaction is a kind of stream of consciousness: the user states what they want, in whatever order it occurs to them, and the model parses that into a partial solution which it hands to the engine. On a partial solution, most constraints cannot be evaluated at all, because their parameters have not yet been set — they suspend. A validity check over such input is therefore inconclusive, and in practice useless: it can neither approve nor reject. To be worth anything mid-stream, the engine must be able to do something with incomplete information.

 

Constraint propagation: the capability that changes everything

 

That something is constraint propagation, and it is the capability that changes everything. The idea has a long history in symbolic AI, yet it has rarely reached the mainstream of enterprise constraint servers — Selectica, and now Predictika, being notable exceptions. It is seductively simple to state and considerably harder to implement reliably.

 

The core move is this. A constraint expresses a logical relation that can only be checked once all its parameters are known — so rather than wait, propagate the parameters that are known through the expression and see what can be inferred about the ones that are not. Take the simplest possible constraint, x = y, which requires two parameters to hold the same value. If both are known, the engine checks the relation directly. If only x is known, it can infer that y must take the same value — and it can reason in either direction, from x to y, or from y to x.

 

Consider what this means for a flexible, LLM-driven session. Without propagation, the engine can do nothing until the user has supplied both x and y. But the user does not know the hidden relationship between them — in a genuinely complex product there are many such relationships no user could be expected to know — so they are likely to choose values that conflict. The engine responds with “invalid selection,” the user tries again, and configuration degrades into a guessing game that is as slow as it is frustrating. With propagation, the moment the user chooses x, the engine fixes y to the matching value and can explain why. The guessing disappears, and a decision is made for the user at no cost.

 

This is not a marginal convenience. In real business problems, our experience is that a user needs to make only a handful of key selections; the rest fall out through propagation, because real products carry enough internal structure to determine them. Propagation over a declarative model is precisely what makes “any order, any direction” more than a slogan — it is the mechanism by which the engine turns a few stated intentions into a largely settled configuration.

 

Constraint propagation: choosing a CPU forces RAM, bus, power and cooling; a contradiction at the slot backtracks to the CPU choice point

 

An expressive, propagation-friendly modeling language

 

Propagation places a demand not only on the runtime but on the modeling language itself. Not every logical or mathematical expression lends itself to inferring partial information; some operators simply cannot say anything about their unknowns from their knowns. So a capable engine requires a language whose primitives are, at once, expressive enough to model real systems and, in the main, amenable to propagation. Those two goals pull in opposite directions, and reconciling them is the hard-won craft behind a serious constraint language and an engine to reason with them.

 

The claim that both can be had is grounded in modeling some of the most complex commercial systems in existence. At Selectica, the language captured Cisco's switches and routers; IBM's line from PCs to mainframes; Dell's from PCs to server clusters; GE's medical-imaging systems; Disney's vacation packages; health-insurance plans; AT&T's telecom plans and provisioning logic; and comparably intricate systems for Hitachi, Juniper, ABB, and Fireman's Fund. At Predictika, the same discipline models AI data-center infrastructure. Across all of them the lesson holds: a constraint language can be designed with the expressivity to represent such products and, at the same time, operators that overwhelmingly support propagation. Part of that richness comes from modeling objects rather than bare variables — entities with attributes that inherit both parameters and constraints — so that one relationship, stated once, applies wherever the structure repeats.

 

Staying consistent: the context tree and backtracking

 

Propagation earns its power at the cost of a new obligation. Chaining inferences offers no guarantee that the result is consistent; a sequence of individually valid steps can drive the system toward a contradiction — an attempt to assign two different values to the same parameter. An engine that propagates must therefore also be able to recover.

 

Concretely, it must maintain a context tree that records the free choices made along the way, and it must be able to backtrack to the last logically consistent state the moment a contradiction is detected. This is not optional bookkeeping. The engine must never be left in a logically inconsistent state, because from a contradiction anything at all can be derived — the principle logicians call ex falso quodlibet, that a false premise entails every conclusion. An engine that can silently enter such a state is worse than one that cannot reason at all: it will assert nonsense with full confidence. Sound backtracking over a context tree is what keeps the system's inferences meaning something.

 

The core substrate: five capabilities

 

With that, the core of a proper constraint engine can be stated plainly. It must be able to:

These five capabilities are the substrate. They are what make the engine a reasoning system rather than a checker, and everything of higher value is layered on top of them.

 

The requirements as a stack: validate, judge completeness, propagate and stay consistent form the substrate, with value-added reasoning and an LLM co-pilot on top

Value-added reasoning on the substrate

 

Once the substrate is in place, a family of higher-order services follows naturally, each a different way of exercising the same machinery.

 

None of these is a separate product. Each is an operation over one declarative model and one substrate, which is why a single constraint server can offer validation, completion, optimization, and explanation without becoming a collection of disconnected tools.

 

The constraint server as an LLM co-pilot

 

The last requirement is the one that reframes everything above: the engine must be able to work cooperatively with a language model, not merely behind it. As shown in our earlier papers, hard constraints can be relaxed into soft constraints, which lets the engine serve as a reasoning co-pilot to an LLM that is being used not only to converse in natural language but also to make decisions — decisions that may be imperfect or outright hallucinated. Rather than accept or reject the model's output wholesale, the constraint server works with it, checking each step and steering the model toward an answer that is actually correct and buildable.

 

This carries a consequence that matters at the level of both strategy and cost. Because the deterministic co-pilot is doing the checking and guiding, one is not obliged to reach for the latest and most expensive frontier model. An adequate LLM — quite possibly an open-source or open-weight one — can suffice, because the correctness does not live in the model; it lives in the engine. That lowers cost, increases control over the stack, and removes dependence on any single frontier vendor. The fluency comes from the language model; the guarantees come from the constraint server; and the combination is more reliable, and more affordable, than either alone.

 

A language model proposes steps and a constraint server checks, propagates and repairs them, iterating until the answer is correct, complete and buildable

Conclusion

 

Assembled, the requirements describe what a world-class constraint server actually is. It is not a rules engine, and not a validity checker bolted onto a configuration form. It is a reasoning system that guarantees correctness and completeness; that propagates partial information so users make only the decisions that genuinely matter; that stays logically consistent by backtracking over a context tree; that offers completion, optimization, explanation, and audit as services over a single declarative model; and that cooperates with a language model as a deterministic co-pilot.

 

For the most complex configuration problems — and for the LLM-driven interfaces now placed in front of them — this stack is the requirement, not a luxury. It is what turns a language model's fluency into configurations a business can build, price, and stand behind.

 


 

 

Suggested Further Reading

 

Complex Product Configuration Requires a Constraint Based Approach

 

Logic Engines to Guide LLMs for Accurate and Reliable Reasoning

 

Guiding AI Agents to Reason Correctly

 

Accuracy Is Not Consistency

 

Where Is AGI?

 

EU Travel Compensation Bot

 

U.S. Patents in Conversational AI, Symbolic Reasoning, and LLM Governance (granted 2023–2024)

 

About Predictika

 

Predictika builds a patented constraint-based configuration engine for complex products, pairing a declarative modeling language with a logic core whose lineage runs from foundational AI research at Xerox PARC to proven, large-scale enterprise configuration at Selectica. The company applies that engine both as a configuration core for complex products and as a deterministic validation layer beneath AI-driven assistants, giving natural-language systems the soundness that high-cost-of-error domains require.

 

About the author

 

Dr. Sanjay Mittal is the founder and CEO of Predictika and the architect of its constraint-based reasoning engine. He began his career as a research scientist at Xerox PARC (1982–1990), with pioneering work in artificial intelligence and constraint reasoning. He went on to found Selectica, which defined enterprise sales configuration (CPQ) for large organizations, building it from inception to a $5 billion IPO in 2000 and serving customers such as IBM, Cisco, Dell, GE, Hitachi, Disney, AT&T, and Reliance. Dr. Mittal was the inventor of Selectica’s industry-leading configuration engine and holds six patents from that work. At Predictika he has carried the constraint-based approach into the era of large language models, with further patents — including U.S. Patents 11,544,475 and 11,914,970 — covering the deterministic validation of AI-driven systems. He holds a B.Tech. from IIT Kanpur and a Ph.D. from Ohio State University.

 



Copyright © Predictika Inc. 2026