Вы правы. То, что вы здесь используете, называется шаблонами вступления .
intros [|n].
эквивалентно
intro n. destruct n as [|n].
В основном вы даете имена различным аргументам конструкторов, используя |
для разделения указанных конструкторов. Для натуральных чисел у вас есть конструкторы O
и S
. У первого нет аргументов, а у второго он есть, и мы называем его n
.
Если бы у вас был логический тип, вы могли бы использовать [|]
, поскольку ни true
, ни false
не принимают аргументов. Обратите внимание, что intros []
также возможен и соответствует intro h. destruct h.
без именования переменных. В более общем смысле вам не нужно быть исчерпывающим в именовании переменных. intros [|].
, intros []
или intros [|?]
работают так же хорошо для натуральных чисел (?
позволяет вам указать, что есть переменная, которую вы не будете называть, coq выдаст ее автоматически).