SatisfyingSetLink is used to convert a predicate to a concept. That is, given a predicate that expresses truth, the SatisfyingSetLink is used to declare the set of all things that satisfy that predicate: that set becomes a new concept.
Because all atoms in the AtomSpace carry a truth value, the concept of a predicate in OpenCog is more general than that of a predicate in first-order logic. it is more closely akin to an characteristic function in probability theory, or a classifying topos in mathematical logic.
The SatisfyingSetLink is commonly used with MemberLink to explicitly indicate set membership.
The general form of the SatisfyingSetLink is
SatisfyingSetLink PredicateNode "breathe"
corresponds to the concept of all pairs of things that breathe something. There are two equivalent ways of stating that animals breath air. One way is to use the EvaluationLink, which can carry a valuation expressing the truth value of animals breathing air:
EvaluationLink PredicateNode "breathe" ListLink ConceptNode "animals" ConceptNode "air"
The valuation attached to the EvluationLink above can be understood as corresponding to the normal concept of a valuation in model theory, or a probability, in probability theory.
Another way to express this membership is to use a MemberLink:
MemberLink ListLink ConceptNode "animals" ConceptNode "air" SatisfyingSetLink PredicateNode "breathe"
For crisp true-false truth values, this membership expression is equivalent to the EvaluationLink expression. The valuation on the MemberLink can be interpreted differently: it can be taken to be a FuzzyTruthValue, indicating fuzzy set membership.
The semantics of these two can be considered to be equivalent, when the truth values are taken as crisp true/false values.
The SatisfyingSetLink merely perform a type transformation. The truth value on the SatisfyingSetLink is identical to the one on the predicate.