An optimal-component is the least costly instance of a component class. To evaluate this relation will require making some kind of closed-world assumption over possible components.
(<=> (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)))))
(=> (Optimal-Component $X $Y) (Component-Class $Y)) (=> (Optimal-Component $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)))))