# _forced


Forced-argument analysis helpers for datatype constructors; consumed by datatype elaboration and tests that inspect recoverable constructor fields.

## `forcedFieldNames`

_McBride-forced subset of a constructor's fields: a field is forced iff its sentinel marker occurs in `targetIdx prevFull` or in `fieldTyOf f_j prev_<j` for some j > i. Returns field names in declaration order._

```
{ fields : [Field]; targetIdx : Prev -> Hoas; fieldTyOf : ?Field -> Prev -> Hoas } -> [String]
```

## `forcedFieldSet`

_forcedFieldNames re-keyed as `{ <name> = true; }` for O(1) membership._

```
{ fields; targetIdx; fieldTyOf? } -> { <name> = true; }
```

## `isFieldForced`

_Predicate form: whether the named field appears in the forced set._

```
{ fields; targetIdx; fieldTyOf? } -> String -> Bool
```

## `mentionsOf`

_Collect `_signatureField` marker names occurring in a HOAS term. Binder bodies are descended by applying their closure to a `forced-probe` sentinel._

```
Hoas -> [String]
```

