В параметрическом HOAS параметр T
представляет набор переменных, которые могут встречаться в терме. Например, если вы хотите использовать термин, который использует не более двух переменных, он может иметь тип term bool
, поскольку bool
имеет двух жителей. Таким образом, закрытый член (без свободной переменной) может быть наивно набран term void
, где void
- пустой тип:
Inductive void := .
term void
оказывается эквивалентным forall A, term A
(вы можете применить функцию forall A, void -> A
в одном направлении и просто специализироваться в другом направлении). Последнее представление закрытых терминов удобнее встраивать в другие открытые термины.