# compute-value-restriction [*Function*]

## Purpose

The **compute-value-restriction** function computes the value restriction of a given concept on a given relation.

## Syntax

**compute-value-restriction** *concept relation* `&key` *return-a-list-p*

## Arguments

The *concept* argument is a concept.
The *relation* argument is a relation.

If the *return-a-list-p* argument is **t**, then a list of the concepts which constitute the value restriction will be returned, rather than a single concept that represents the conjunction of those concepts.

## Value

The value restriction of *concept* is the type of all fillers of the *relation* role in instances of *concept*. Depending on *return-a-list-p*, **compute-value-restriction** returns either a list of the concepts which make up this type, or a concept which is the unification of all the concepts in the type.

## Examples

(defconcept A :implies (:and (:all r B) (:all r C)))
(defconcept C :implies D)
(defrelation r :range E)
(compute-value-restriction (fc A) (fr r)) ==> |C|B&C&D&E
(compute-value-restriction (fc A) (fr r) :return-a-list-p t) ==>
(|C|B |C|C |C|D |C|E)

## See Also

Last modified: Jun 1 1995