ushumpei’s blog

生活で気になったことを随時調べて書いていきます。

Lean4 学習3

Quantifiers and Equality の演習にて、床屋のパラドックスを示す問題があった。これは排中律を使用すればすぐに解けるのだが、検索してみると構成的証明があるとのことで、やってみると解けた。

  variable (men : Type) (barber : men)
  variable (shaves : men → men → Prop)

  example (h : ∀ x : men, shaves barber x ↔ ¬ shaves x x) : False := 
    let p := shaves barber barber
    have _ : p ↔ ¬p := h barber 
    have _ : ¬p := fun _ : p => ((‹p ↔ ¬p›).mp ‹p›) ‹p›  
    have _ : p := (‹p ↔ ¬p›).mpr ‹¬p› 
    ‹¬p› ‹p›

新たに覚えた french quotation marks を使った書き方で解いていくと、どこかで見た命題を証明していることに気がついた。前章 Propositions and Proofs の最後の一文に Prove ¬(p ↔ ¬p) without using classical logic. とあるのを見つけた、自分は without using classical logic の部分を見落としていたようだった。

感想

  • 排中律¬p ∨ p
  • 無闇に必要だと決めつけてはいけない
  • French quotation marks を使った証明は読みやすい気もするが、入力しにくい問題がある
  • 数学記号で書いたコードは検索しにくい問題もある
  • 数学用キーボードがあるといい?
  • 他の言語と違い、型を明示して変数名を隠す方が読みやすい?
  • 証明以外まだ書いていないのでなんとも言えないけど