(Inherited-Facet-Value Slot-Cardinality
Vt-Component
Component.Cost
1)
(Inherited-Facet-Value Slot-Value-Type
Vt-Component
Component.Cost
Cost-Quantity)
(<= (Has-Parameter-Slot $X Component.Cost) (Vt-Component $X))
(Inherited-Slot-Value Vt-Component Has-Parameter-Slot Component.Cost)
(=> (Vt-Component ?Component)
(And (Value-Type ?Component Has-Constraint Vt-Constraint)
(Has-Parameter-Slot ?Component Component.Cost)
(Value-Type ?Component Component.Cost Cost-Quantity)
(Value-Cardinality ?Component Component.Cost 1)))
(=> (Component.Cost $X $Y) (Cost-Quantity $Y))
(=> (Component.Cost $X $Y) (Component $X))
(<=> (Optimal-Component ?Comp ?Component-Class)
(And (Component ?Comp)
(Component-Class ?Component-Class)
(Instance-Of ?Comp ?Component-Class)
(=> (Instance-Of ?Other-Component ?Component-Class)
(=< (Component.Cost ?Comp)
(Component.Cost ?Other-Component)))))