## 7.8 Reflection

The result of a reflective procedure depends on the current state of the constraint store and is non-deterministic.

`reflect.card`

  > > `{FS.reflect.card *M ?Spec}`

  returns a description Spec of the current information on the cardinality of M.

`reflect.lowerBound`

  > > `{FS.reflect.lowerBound *M ?Spec}`

  Returns a specification of the greatest lower bound that is currently known about the set M.

`reflect.upperBound`

  > > `{FS.reflect.upperBound *M ?Spec}`

  Returns a specification of the least upper bound that is currently known about the set M.

`reflect.unknown`

  > > `{FS.reflect.unknown *M ?Spec}`

  Returns a specification of the set of elements that are neither known to be included in M nor excluded from M.

`reflect.lowerBoundList`

  > > `{FS.reflect.lowerBoundList *M ?Spec}`

  Returns an expanded specification (i. e., every individual element is represented) of the greatest lower bound that is currently known about the set M.

`reflect.upperBoundList`

  > > `{FS.reflect.upperBoundList *M ?Spec}`

  Returns an expanded specification (i. e., every individual element is represented) of the least upper bound that is currently known about the set M.

`reflect.unknownList`

  > > `{FS.reflect.unknownList *M ?Spec}`

  Returns an expanded specification (i. e., every individual element is represented) of the set of elements that are neither known to be included in M nor excluded from M.

`reflect.cardOf.lowerBound`

  > > `{FS.reflect.cardOf.lowerBound *M ?I}`

  Returns the cardinality of the current greatest lower bound for M.

`reflect.cardOf.upperBound`

  > > `{FS.reflect.cardOf.upperBound *M ?I}`

  Returns the cardinality of the current greatest lower bound for M.

`reflect.cardOf.unknown`

  > > `{FS.reflect.cardOf.unknown *M ?I}`

  Returns the number of elements that are currently not known to be included or excluded from M.