# Concepts

### @definitionlist-present <a href="#definitionlist-present" id="definitionlist-present"></a>

* no parameters
* see also: @has-definition

Returns `true` if at least one definition-list is present in the document. This function, together with `@has-definition`, allows you check whether some defined term has a definition attached to it.

{% hint style="info" %}
Note that this function will also return true when the only definition list that is currently present, happens to be a non-exhaustive definition list in which only certain terms are currently visible.
{% endhint %}

### @has-autonomous-definition <a href="#has-autonomous-definition" id="has-autonomous-definition"></a>

* first parameter: a #concept
* returns: true or false

Like `@has-definition`, but only returns true if the defined term has an “autonomous” definition assigned to it, i.e. a real definition that will separately show up in the definition list, as opposed to some regular clause that simulatenously acts as a definition.

Tip: you can easily invert the behaviour of this special function: `not(@has-autonomous-definition(#employee))` will return true if no autonomous definition is assigned to concept *employee*.

### @has-definition <a href="#has-definition" id="has-definition"></a>

* first parameter: a #concept
* returns: true or false

Returns true if the specified concept currently has any kind of definition assigned to in the document/binder (i.e., either an integrated definition or an autonomous definition).

For example, `@has-definition(#employee)` will return `true` if some definition has been assigned to concept “employee” through the terms-pane of Assemble Document. Note that this function will also return `true` when a definition has been assigned, but no definition-list is currently present in the document/binder — if this possibility exists, then you should also check for `@definitionlist-present`.

Tip: you can easily invert the behaviour of this special function: `not(@has-definition(#employee)`) will return true if no definition is assigned to concept *employee*.

### @has-integrated-definition <a href="#has-integrated-definition" id="has-integrated-definition"></a>

* first parameter: a #concept
* returns: true or false

Like `@has-definition`, but returns true if the defined term has an integrated definition assigned to it, i.e. a regular clause that contains, and simulatenously acts as, a definition — as opposed to a real definition that will separately show up in the definition list.

{% hint style="info" %}
Tip: you can easily invert the behaviour of this special function: `not(@has-integrated-definition(#employee))` will return true if no integrated definition is assigned to concept *employee*.
{% endhint %}

### @implemented <a href="#implemented" id="implemented"></a>

* parameter: `#concept` or `§cross-tag`
* returns true or false

Returns true if the specified #concept or §cross-tag is implemented in the document, i.e. if some clause is present that textually represents this concept or cross-tag. (This will technically be the case when some clause contains an “implements” link towards the concept, respectively contains that cross-tag.)

Tip: you can easily invert the behaviour of this special function: `not(@implemented(#concept))` will return true if clause is currently implementing that concept.

### @implemented-all <a href="#implemented-all" id="implemented-all"></a>

* parameters: one or more #concepts or §cross-tags
* returns `true` or `false`

Returns true if *all* of the #concepts or §cross-tags mentioned as parameters have been implemented. Returns false if @implemented is false for *any* of those.

Tip: you can easily invert the behaviour of this special function: `not(@implemented-all(#employee, #contract, #started))` will return true if any of those three concepts is not implemented by a clause.

### @implemented-any <a href="#implemented-any" id="implemented-any"></a>

* parameters: one or more #concepts or §cross-tags
* returns `true` or `false`

Returns `true` if *any* of the concepts of §cross-tags mentioned as parameters have been implemented. Returns false if `@implemented` is false for *all* of those.

Tip: you can easily invert the behaviour of this special function: `not(@implemented-any(#employee, #contract, #started))` will return true if none of those three concepts is implemented by a clause.

### @ref-if

* parameter: #concept
* returns a reference, or nothing

Returns a reference if the concept is implemented, otherwise results in nothing. Calling `@ref-if(#concept)` is largely similar to calling `{@implemented(#concept): §#concept}`, but will not result in an error message if the concept would happen to not be implemented.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.clause9.com/special-functions/concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
