Zulip Chat Archive

Stream: maths

Topic: how do I say "a sentence is a theorem of a theory" in lean?


Bulhwi Cha (Oct 28 2023 at 08:23):

Bulhwi Cha said:

A user of a Korean-speaking philosophy discussion forum said, "You didn't prove that ∃ (x : Being), isGod x ∧ inReality x is not a theorem of a theory whose axioms are the premises of St. Anselm's argument (and the axioms of Lean's type theory)."

How can I construct a theory T and state that a proposition φ is not a theorem of T in Lean?

Bulhwi Cha (Oct 28 2023 at 08:40):

Of course, the first step is "Learn proof theory and model theory."

Alistair Tucker (Oct 28 2023 at 11:46):

In your case you just need to demonstrate that for some instantiation of your class the proposition is false. E.g. for Anselm Nat with Conceivable := fun _ => True there is provably no x such that IsMax x Conceivable.

Bulhwi Cha (Oct 28 2023 at 17:50):

Thank you, Alistair Tucker. Here's my attempt:

section

local instance : Anselm  where
  conceivable := fun _  True
  inUnderstanding := fun _  True
  inReality := fun
    | .ofNat _ => True
    | .negSucc _ => False
  lt_of_inUnderstanding_not_inReality_inReality {_ _ : } := by
    repeat (first | simp | split <;> simp [not_true, not_false])
    rename_i n _ m
    calc
      -(n + 1) < (0 : ) := Int.negSucc_lt_zero n
      0  m := Int.zero_le_ofNat m
  isMax_conceivable_inUnderstanding := by simp
  exists_conceivable_and_inReality := by exists 0

private theorem not_exists_int_isGod : ¬  (a : ), isGod a := by
  intro hex
  rcases hex with god, _hcg, hleg
  have god_lt_succ_god : god < god + 1 := Int.lt_succ god
  have succ_god_le_god : god + 1  god := hleg (god + 1) trivial
  exact not_le_of_lt god_lt_succ_god succ_god_le_god

end

Last updated: Dec 20 2023 at 11:08 UTC