Я создал запись для группы. Теперь я хотел бы построить группу с n элементами (например, 10 элементов), указав таблицу групповой умножения.Как ввести n различных символов в Coq
Моя проблема в том, что мне нужны n символов, которые будут служить в качестве основного набора для моей группы. Мне понадобится Кок, чтобы знать, что эти n элементов различны.
До сих пор я понял
Inductive ground_set : Type := A : ground_set | B : ground_set.
Axiom diff: A<>B.
, который работает при п = 2. Я не знаю, как масштабировать это для многих элементов, не создавая какой-то уродливый код.
Я бы предположил, что есть лучший способ создать такой набор, но я не смог его найти.
Возможно, вам понадобится некорректность доказательства (что всегда верно в отношении предложения nat), чтобы рассуждать с такими зависимыми типами. – Vinz
Очень похожий подход заключается в использовании типа 'Fin.t', определенного в стандартной библиотеке ([' Coq.Vectors.Fin'] (https://coq.inria.fr/library/Coq.Vectors.Fin. html)): «fin n» - удобный способ представления \ 1 .. n \ ". –
Я согласен с использованием типа Fin или mathcomp 'I_n будет лучшим вариантом, поскольку вся поддержка уже здесь. Я не был уверен в этом вопросе, поэтому я попробовал наивный подход;) – Vinz