> For the complete documentation index, see [llms.txt](https://ampersandtarski.gitbook.io/documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ampersandtarski.gitbook.io/documentation/the-language-ampersand/syntactical-conventions/the-concept-statement.md).

# The CONCEPT statement

## Purpose:

A concept statement defines a concept in natural language. A concept is a name for similar things. For example: `Peter`, `John`, and `Barack` are things you might want to call `Person`, whereas `45-NP-88` and `KD-686-D` could be instances of the concept `LicensePlate`.

## Syntax:

```
CONCEPT <Uppercase identifier> <String> <String>?
```

This statement may occur anywhere within a context, either inside or outside a pattern.

## Semantics

This statement means that there exists a concept called `<Uppercase identifier>` in the current context.

* `<Uppercase identifier>` specifies the name of the concept.
* `String` contains a definition of the concept. This definition is used by the documentation generator, which expects it to be a grammatically correct and complete sentence.
* `String?` is an (optional) reference to the source of the definition. It is meant for traceability.

## Examples

```
CONCEPT Person "A person is a human creature." "Ventroli1997"
```

```
CONCEPT Organization "An organization is a collection of persons that work together to achieve specific objectives."
```

```
CONCEPT Criterion "A criterion is a standard on which a judgment or decision may be based." "Merriam-Webster"
```

## Miscellaneous

* The name of a concept starts with an uppercase.
* A concept should be used for immutable concepts. E.g. use a concept `Person` to express that a person will always be a person and will not change in, let us say, a table. However, don't use `Employee`, because termination of an employee's contract causes a person to be an employee no longer. So employees are not immutable. To be an employee is a dynamic property, so model it as a relation.
* The description will be printed in the functional specification, so please check that your definition is a complete sentence.
* Concepts need not be defined. If you use a concept without a definition, Ampersand defines it for you (regardless of whether you defined it or not).
