Вопросы по теме 'coq'
Сохранение информации при использовании индукции?
Я использую Coq Proof Assistant для реализации модели (небольшого) языка программирования (расширение реализации Featherweight Java Бруно Де Фрайне, Эриком Эрнстом, Марио Зюдхолтом). Одна вещь, которая постоянно возникает при использовании тактики...
3534 просмотров
schedule
12.05.2022
Параметр подмножества
У меня есть набор в качестве параметра:
Parameter Q:Set.
Теперь я хочу определить еще один параметр, который является подмножеством Q. Что-то вроде:
Parameter F: subset Q.
Как я могу это определить? Я думаю, что я могу добавить...
1022 просмотров
schedule
26.05.2022
Как делать кейсы с индуктивным типом в Coq
Я хочу использовать тактику destruct , чтобы доказать утверждение случаями. Я прочитал пару примеров в Интернете, и я запутался. Может кто-нибудь объяснить это лучше?
Вот небольшой пример (есть и другие способы решения, но попробуйте...
4286 просмотров
schedule
21.11.2022
Использовать функцию после сгенерированной извлечением из Coq в Ocaml
У меня есть папка tmp , которая создается после извлечения из coq в ocaml.
~/tmp/cpf0.ml cpf0.mli cpf0.o cpf0.cmi cpf0.cmx cpf0.cmo
main.ml - это файл, который я использую для вызова одной функции в cpf0 :
let prf = Cpf0.proof;;...
200 просмотров
schedule
03.04.2024
экзистенциальный квантификатор: как обращаться к экземпляру
У меня есть теорема, в которой я показываю, что существует объект, обладающий некоторым свойством. Я доказал эту теорему, построив объект. Затем, в другом доказательстве, я хотел бы сослаться на объект, определенный в первой теореме в формулировке...
621 просмотров
schedule
20.05.2022
функции в Coq
Я должен доказать некоторые формализованные вещи. Есть две функции: получает несколько строк и массив строк, сравнивает, если есть совпадение, и возвращает bool. Я хочу проверить их обе в лемме и проверить ее. В программировании функции выглядят...
1138 просмотров
schedule
15.06.2022
как использовать модули, чтобы скрыть леммы в coq?
У меня есть теорема T, ее доказательство и бесчисленное количество лемм, использованных при ее доказательстве.
Я хотел бы скрыть леммы и сделать доступной только теорему - главным образом потому, что я не хочу думать о хороших, глобальных именах...
234 просмотров
schedule
31.01.2023
Отделение данных, которыми нужно манипулировать, от доказательств того, что манипуляции оправданы.
У меня есть тип списков, головы и хвосты которых должны быть в определенном смысле "совместимы":
Inductive tag := A | B. (* Just an example *)
Inductive element : tag -> tag -> Set :=
| AA : element A A
| AB : element A B
| BB :...
77 просмотров
schedule
02.12.2022
Абстрагирование приводит к некорректно набранному, но хорошо напечатанному термину
На какое-то время я застрял в проблеме, для которой я привел небольшой автономный пример:
Axiom f : nat -> Set.
Goal forall (n : nat) (e : n = n) (x : f n),
match e in _ = _n return f _n -> Prop with
| Logic.eq_refl => fun v : f n...
823 просмотров
schedule
15.04.2023
Другой способ индукции списков, требующих доказательства
Я дал индуктивное определение списков (называемых listkind ), чтобы облегчить мне доказательство конкретной теоремы индукцией по listkind , а не по списку.
Inductive listkind {X}: list X -> Prop :=
| l_nil : listkind []
| l_one : forall a:X,...
591 просмотров
schedule
17.04.2022
Двойная индукция в Coq
По сути, я хотел бы доказать это следующим результатом:
Lemma nat_ind_2 (P: nat -> Prop): P 0 -> P 1 -> (forall n, P n -> P (2+n)) ->
forall n, P n.
это рекуррентная схема так называемой двойной индукции.
Я два раза...
1404 просмотров
schedule
12.02.2023
Спросите о времени работы программы
Я пишу программу синтаксического анализатора (написанную на OCaml), которая принимает входные данные в формате xsd, а затем генерирует их в файл Coq. Но потребовалось много времени (~: 0m.0152s) для генерации в терминале. Я хотел бы знать некоторые...
85 просмотров
schedule
07.08.2022
Coq: Как добавить содержательные подсказки?
Я новичок в Coq и, возможно, делаю совершенно неправильный путь. Мне кажется, что мне нужно выбирать между написанием аксиом / теорем, которые хорошо читаются человеком, и аксиомами / теоремами, которые полезны в качестве подсказок, поскольку в...
1238 просмотров
schedule
13.04.2023
Тип Cong, subst и равенство в языках программирования с зависимой типизацией
В теории зависимо типизированных типов есть тип равенства. Обычно при определении этого типа вводится ряд утилит, а именно cong и subst. Насколько они выразительны? Можно ли выразить все, что можно, с помощью элиминатора на равенство с ними?
242 просмотров
schedule
18.06.2023
Теорема plus_n_n_injective, упражнение
Нужна помощь с упражнением от Software Foundations . Это теорема:
Theorem plus_n_n_injective : ∀n m,
n + n = m + m →
n = m.
Proof.
Я получаю n = 0 в качестве цели и n + n = 0 в качестве гипотезы. Как двигаться дальше?
995 просмотров
schedule
13.06.2022
Директива Coq Arguments
Я читаю книгу Основы программного обеспечения и наткнулся на команду, которая объявляет параметры как неявные :
Arguments nil {X}.
где, например:
Inductive list (X:Type) : Type :=
| nil : list X
| cons : X -> list X -> list X....
897 просмотров
schedule
21.08.2022
Проверить теоремы coq в скрипте сборки?
Я использую coq для изучения метатеории языка программирования.
Составление и проверка теорем в интерактивном режиме в среде IDE — это хорошо, но мне нужно автоматизировать (повторную) проверку. Я вижу справочные страницы, но нигде не вижу...
151 просмотров
schedule
28.07.2023
Не удается загрузить плагин CoqIDE для vim
Я пытаюсь использовать плагин CoqIDE для vim, который нашел на этой странице.
Я поместил файл coq_IDE.vim в папку ~ / .vim / ftplugin. Мой текущий файл .vimrc:
set showcmd
set number
imap hl <Esc>
filetype plugin on
Но когда я...
796 просмотров
schedule
29.05.2022
применение функции с другим полем
Есть ли способ применить гипотез к нашей цели в Coq?
Например:
Гипотеза:
1 subgoal
a : nat
l1 : list nat
l2 : list nat
H : Prefix (a :: l1) l2
IHl1 : Prefix l1 l2 -> sum l1 <= sum l2
Цель...
146 просмотров
schedule
24.06.2023
Файловый ввод/вывод в Coq через ynot
У кого-нибудь есть небольшой рабочий фрагмент кода для чтения строк из файла в Coq (похоже, это делает библиотека ynot, но я не могу понять)?
Ynot можно найти здесь: http://ynot.cs.harvard.edu/ Дистрибутив содержит Каталог IO в примерах,...
464 просмотров
schedule
19.11.2022