-
-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
rflの解説について #7
Comments
ありがとうございます たしかに また現状で「定義そのまま」になっている一言説明も,「反射性を示す」など反射性という言葉を使った方がよさそうですね. 修正方針に問題ありませんので,よろしければPR を出していただきたいです。 |
私自身も勘違いしていたのですが,
|
全然知りませんでした.ありがとうございます.
確かに Mathlib 依存のタクティクも紹介していますが,Mathlib 等のライブラリに依存するタクティクはそれを明示するというルールで今まで運用してきました.したがって, かといって Mathlib 依存の挙動を無視すると「Mathlib のDocumentの記述と違う!」という混乱を招きます. 両方に触れるしかないと思います. rfl の挙動が変わることを示す MWE を提供していただけると助かります. |
参照される関数が不適切だったため前の返信を修正しました.
一方importを外すと下の証明にエラーが発生します.
|
ありがとうございます.Mathlib 側の rfl の方が真に強く,Mathlib なしの rfl で示せることは Mathlib ありでも示せるという認識で相違ないでしょうか?(つまり,import 文を追加することによりコンパイルが通らなくなる現象は起きない) もしそうであれば,いまある ext タクティクも「タクティク使用に必要なライブラリ」と「タクティクで示せる命題を増やすのに必要なライブラリ」が異なっているので,ext の記述に似せて修正するといいかと思いました. |
ところで相談なのですが,下記のコードは通らないようです.参照先のタクティクの違いというより,@[refl] がついているレンマのうち必要なものがインポートされているかどうかで,通るかどうかが変わってきているのではないでしょうか…? import Mathlib.Tactic.Relation.Rfl
example (n : Nat) : n ≤ n := by rfl |
そのように理解しています.
以下の例は import Mathlib.Tactic.Relation.Rfl
inductive MyEq {α : Type u} : α → α → Prop
| refl (a : α) : MyEq a a
attribute [refl] MyEq.refl
example (n : ℕ) : MyEq n n := by rfl |
ありがとうございます.そろそろ PR を作ってみます. |
現在の記述 https://lean-ja.github.io/tactic-cheetsheet/rfl.html では
rfl
は項のdefinitional equalityを証明するもののように書かれていますが, ドキュメント https://leanprover-community.github.io/mathlib4_docs//Mathlib/Tactic/Relation/Rfl.html によるとこれは refl attributeのついた定理を用いて関係の反射性を示すといったほうが正確ではないかと思います。例えば以下のように順序の反射性を証明することが可能です.The text was updated successfully, but these errors were encountered: