Expressing that a specific subset of X's have property Y in core.logic

Viewed 3197

I want to:

  1. Describe a fact about a subset of a class of objects.
  2. Declare that an object has a property that consists of other properties.

Take the following as an example:

Red robotic birds are only composed of buttons, cheese, and wire.

I want to express that a class of birds, birds that are red and robotic, have a property. This property is that they are composed only of buttons, cheese, and wire. There are no restrictions on the type of wire cheese or buttons. Also as a result, it should be deducible that there are no red robotic birds that are composed of paper. Also, these birds can be composed of a subset of the items buttons, cheese, and wire.

In clojure/core.logic.prelude, there are relations and facts using defrel and fact. However, I can't come up with a combination to explain this fact.

2 Answers
Related