Мне трудно понять, что именно вы хотите, поэтому я постараюсь написать ответ на то, что я делаю.
У вас есть тип цвета:
Inductive color :=
| red
| green
| blue.
Затем вы хотите получить список натуральных чисел из него. Таким образом, вы связываете число с каждым цветом:
Definition nat_of_color (c : color) : nat :=
match c with
| red => 0
| green => 1
| blue => 2
end.
Теперь, если вы должны использовать тип list
, предоставленный coq, вам нужна следующая функция:
Definition nat_list_of_color_list (l : list color) : list nat :=
List.map nat_of_color l.
InДругими словами, List.map nat_of_color
- это функция, которую вы, похоже, желаете.
Обратите внимание, что алгоритм сортировки и счетчик совпадений, вероятно, можно сделать более универсальным для работы с цветами сразу же.