Neben der oben angesprochenen Modifikation des zu übergebenen Constraint-Ausdrucks werden speziell für die Wissensbasis PC_Advanced.lisp einige weitere Änderungen notwendig, damit die Constraints für die Beispielkonfigurierung die ihnen zugedachte Funktionalität erfüllen können. So wird bei dem Konzept mit Namen Processor die FSB_Rate von einem Intervallwert auf diskrete Werte umgestellt:
(def-do :name Processor :oberkonzept PC_Component :parameter ((Clock {450 466 500 533 550 600 650 700 733 750 800 850}) (Type {'Sockel_7 'Slot_A 'Slot_1}) (FSB_Rate {66 100 133}) (L2_Cache {128 512}) (Icon "cpu" (non-config true)) (Price [160 578])))
Für den Parameter (FSB_Rate {66 100 133}) lässt sich auf diesem Weg ein FD-Solver verwenden, was dem Funktions-Constraint-Beispiel und dem Constraint-Netz aus Abschnitt 3.6.3 f. entspricht. Dieselbe Modifikation wird für das Konzept Mainboard notwendig:
(def-do :name Mainboard :oberkonzept PC_Component :parameter ((Type {'Sockel_7 'Slot_A 'Slot_1}) (AGP_Slot {0 1}) (PCI_Slot [3 6]) (ISA_Slot [0 2]) (FSB_Rate {66 100 133}) (Icon "mainboard" (non-config true)) (Price 350)))
Das ebenfalls benötigte Konzept Memory verfügt in seiner Ursprungsfassung bereits über diskrete Werte für den Parameter FSB_Rate:
(def-do :name Memory :oberkonzept PC_Component :parameter ((Capacity {16 32 64 128 256}(default 128)) (FSB_Rate {66 100 133}(default 133)) (Icon "simm" (non-config true)) (Price [64 560])))
Die jeweiligen Unterkonzepte der genannten Konzepte benötigen keine Anpassung, da hier bereits jeweils ein diskreter Wert vorliegt. Die eigentliche Constraint-Relation mit dem zugehörigen konzeptuellen Constraint stellt sich demnach wie folgt dar:
(def-constraint-relation :name func_FSB_Rate :constraint-typ :funktion :externe-pins (MB_FSB_Rate P_FSB_Rate S_FSB_Rate) :beschraenkungs-funktion "MB_FSB_Rate = P_FSB_Rate; MB_FSB_Rate <= S_FSB_Rate; P_FSB_Rate <= S_FSB_Rate; # medium_consistency") (def-konzeptuelles-constraint :name FSB_Rate :variablen-pattern-paare ((?m :name Mainboard) (?p :name Processor) (?s :name Memory)) :constraint-aufrufe ((func_FSB_Rate (?m FSB_Rate) (?p FSB_Rate) (?s FSB_Rate))))
Während das konzeptuelle Constraint unverändert ist, wird die Constraint-Relation von einem Tupel-Constraint hin zu einem Funktions-Constraint modifiziert. In dem Constraint-Ausdruck sind drei primitive Constraints enthalten, welche die in Abschnitt 3.6.3 f. beschriebene Abhängigkeit repräsentieren. Der Constraint-Ausdruck, bestehend aus einer Konjunktion mehrerer primitiver Constraint-Ausdrücke, kann vom YACS Constraint-Parser in einem Schritt gelesen werden. Abgetrennt durch ,,#`` als Trennzeichen, wird an die Wrapper-Klasse des YACS-Frameworks der Name der zur Constraint-Verarbeitung zu nutzenden Lösungsstrategie übergeben.