Я согласен с проницательными замечаниями Доминика Унру. Однако я хотел бы упомянуть, что теорема, которая отражает идею, лежащую в основе теоремы, которую вы пытаетесь доказать, уже существует в исходном коде основной библиотеки Isabelle / HOL. Фактически, он существует как минимум в двух разных форматах: позвольте мне назвать их традиционным форматом Isabelle / HOL и каноническим форматом FuncSet
. Относительно первого см. Теорему bij_betw_iff_bijections
:
"bij_betw f A B ⟷ (∃g. (∀x ∈ A. f x ∈ B ∧ g(f x) = x) ∧ (∀y ∈ B. g y ∈ A ∧ f(g y) = y))"
С FuncSet
дело обстоит немного сложнее. Похоже, что не существует ни одной теоремы, отражающей эту идею. Однако вместе теоремы bij_betwI
, bij_betw_imp_funcset
и inv_into_funcset
почти эквивалентны теореме, которую вы пытаетесь сформулировать. Позвольте мне представить набросок того, как можно выразить эту теорему способом, который можно было бы считать вполне каноническим в FuncSet
смысле (попробуйте доказать это сами):
lemma bij_betw_iff:
shows "bij_betw f A B ⟷
(
∃g.
(∀x. x∈A ⟶ g (f x) = x) ∧
(∀y. y∈B ⟶ f (g y) = y) ∧
f ∈ A → B ∧
g ∈ B → A
)"
sorry
Я также хотел бы повторить совет Доминика Унру и сделать несколько дополнительных замечаний:
Моя рекомендация: сначала попробуйте доказательство с помощью bij вместо bij_betw.
Действительно, это очень хорошая идея. В общем, пытаясь ограничить проблему явно определенными наборами A
и B
, вместо того, чтобы работать напрямую с типами, вы затронули тему, которая в логике известна как релятивизация. Для мягкого введения непрофессионала см, например, https://leanprover.github.io/logic_and_proof/first_order_logic.html [1], более подробное введение в контексте теории множеств см. в [2, глава 12]. Как вы, наверное, уже заметили, релятивизировать теоремы в Isabelle / HOL не так просто, и это требует дополнительных усилий по доказательству. Однако существует расширение Isabelle / HOL, которое позволяет автоматизировать процесс релятивизации теорем. Для получения дополнительной информации об этом расширении см. Статью Ондржея Кунчара и Андрея Попеску От типов к множествам по определению локального типа в логике высокого порядка [3]. Также существует крупномасштабный пример применения фреймворка [4]. Независимо от этого, я работаю над тем, чтобы сделать это расширение более удобным для пользователя и очень медленно приближаюсь к завершающим этапам в своих усилиях: см. https://gitlab.com/user9716869/tts_extension. Таким образом, в принципе, если вы знаете, как использовать типы-множества и принимаете его аксиомы, то достаточно доказать теорему с помощью bij
, например,
"bij f ⟷ (∃g. (∀x. g (f x) = x) ∧ (∀y. f (g y) = y))"
,
Затем теоремы, подобные bij_betw_iff_bijections
и bij_betw_iff
, могут быть синтезированы автоматически бесплатно одним нажатием кнопки (почти ...).
Наконец, для полноты, позвольте мне предложить свой собственный совет относительно ваших вопросов (хотя, как я уже упоминал, я согласен со всем, что сказал Доминик Унру)
как расширить соответствующие определения, а затем упростить их с помощью функциональных приложений. Я следил за некоторыми примерами / учебными пособиями Isabelle (2021) как о применении simp-стиля, так и о доказательстве Isar в структурированном стиле, но не мог свободно использовать доказательство Isar. Как только я запустил команду доказательства, я не знаю, как упростить или продвинуться дальше.
Я считаю, что лучший способ узнать то, что вы пытаетесь изучить, - это выполнять упражнения из книги Конкретная семантика Тобиаса Нипкова и Гервина Кляйна [5]. Кроме того, я бы также просмотрел Помощник по проверке логики высшего порядка Тобиаса Нипкоу и др. [6] (он немного устарел, но я нашел его полезным специально для изучения сценариев в стиле apply
/ прямое применение правил). Между прочим, я в основном самоучился Изабель из этих книг без какого-либо предшествующего опыта в формальных методах.
Исар использует новый способ предполагает ... показывает ... для формулировки теоремы. Есть ли аналогичная поддержка для доказательства iff (⟷), как в примере выше? Без него нет доступа к assms и т. Д., И нужно ли во время доказательства предполагать все, кроме заключения.
Я сделаю совет Доминика Унру более ясным: используйте для этого rule iffI
или intro iffI
.
Изменить. Когда вы используете rule iffI
(или аналогичный) для запуска структурированного доказательства Isar, вам необходимо явно указать свои предположения для каждой подцели (используя парадигму assume ... show ...
). Однако есть инструмент, который может автоматически сгенерировать такой шаблонный код Isar. Он называется Sketch-and-Explore, и вы можете найти его в каталоге HOL/ex
основной библиотеки Isabelle / HOL. В этом случае все, что вам нужно сделать, это ввести sketch(rule iffI)
, и парадигма _23 _ / _ 24_ будет сгенерирована автоматически для каждой подцели.
Ссылки
- Авигад Дж., Льюис Р. Я. и ван Дорн Ф. Логика и доказательство.
- Jech T. Теория множеств. 3-е изд. Гейдельберг: Спрингер; 2006. (Чистая и прикладная математика, серия монографий и учебников).
- Кунчар О., Попеску А. От типов к множествам с помощью определения локального типа в логике высокого порядка. Журнал автоматизированных рассуждений. 2019; 62 (2): 237–60.
- Иммлер Ф., Жан Б. Гладкие многообразия и типы множеств для линейной алгебры в Изабель / HOL. В: 8-я Международная конференция ACM SIGPLAN по сертифицированным программам и доказательствам. Нью-Йорк: ACM; 2019. стр. 65–77. (CPP 2019).
- Нипков Т., Кляйн Г. Конкретная семантика с Изабель / HOL. Гейдельберг: Springer-Verlag; 2017 г. (http://concrete-semantics.org/)
- Нипкоу Т., Полсон Л.К., Венцель М. Помощник по доказательству логики высокого порядка. Гейдельберг: Springer-Verlag; 2017 г.
person
user9716869
schedule
16.04.2021
restrict
необходимо импортироватьHOL-Library.FuncSet
. - person Dominique Unruh   schedule 17.04.2021