# E4196

Compiler diagnostic name: `where_clause_reasoning_not_string`.

The `proof_reasoning` field in a `where` clause records explanatory text for
the proof. Its value must be a string literal or a multiline string literal, not
a variable or another expression.

## Erroneous example

```{literalinclude} /sources/error_codes/4196_error/top.mbt
:language: moonbit
```

## Suggestion

Use a string literal for `proof_reasoning`.

```{literalinclude} /sources/error_codes/4196_fixed/top.mbt
:language: moonbit
```
