(=> (Has-Constraint $X $Y) (Object-Constraint $Y))
(=> (Has-Constraint $X $Y) (Component $X))
(<=> (Constraint-On $Arg1 $Arg2) (Has-Constraint $Arg2 $Arg1))
(Inverse Constraint-On Has-Constraint)
(Forall (?Constraint)
(=> (Has-Constraint ?Component ?Constraint)
(Satisfies-Constraint ?Component ?Constraint)))
(<=> (Valid-Component ?Component)
(And (Component ?Component)
(Forall (?Constraint)
(=> (Has-Constraint ?Component ?Constraint)
(Satisfies-Constraint ?Component ?Constraint)))
(Forall (?Part-Slot)
(=> (Has-Subcomponent ?Component ?Part-Slot)
(Valid-Component (Value ?Part-Slot ?Component))))))