Zulip Chat Archive
Stream: new members
Topic: axiom schemas in Lean?
Chris M (Apr 12 2020 at 04:46):
In set theory, we have the axiom schema of specification: Let ϕ(u, p) be a formula. Then there is an axiom ∀X ∀p ∃Y ∀u (u ∈ Y ↔ u ∈ X ∧ ϕ(u, p)).
It seems like in CoIC we can formalize this as: ∀(φ : Set → Set → Prop) , ∀X, ∀p, ∃S, (∀u, u ε S ↔ u ε X ∧ φ u p)
, where I'm interpreting ε
as $\in$. However, it seems to me that strictly speaking, this is stronger than the axiom schema as used in set theory, since φ : Set → Set → Prop does not have to correspond to any first-order formula. It could be a binary property that cannot be represented in (first-order) logic.
How do we more faithfully represent axiom schemas in Lean?
Kenny Lau (Apr 12 2020 at 04:53):
first formalize a theory of FOL (first order languages), then build a model of ZFC, and then verify that the model satisfies the axioms
Chris M (Apr 12 2020 at 04:54):
lol, I hope you're joking
Andrew Ashworth (Apr 12 2020 at 05:06):
have fun: https://github.com/leanprover-community/mathlib/tree/master/src/set_theory
Chris M (Apr 12 2020 at 05:14):
Isn't there a simple way that one can formalize axiom schema's in Lean?
Mario Carneiro (Apr 12 2020 at 05:28):
@Chris M What you described is the way we represent schemas. Yes, this is a second order formulation, and it's not exactly equivalent, but it is the version that plays well with everything else. The quantifier ranges over all formulas that can be described in lean, which is more important for formalization in lean. This is strictly more than the set of formulas that can be described in FOL, because Lean is has access to higher order quantifiers, and if you want to capture all and only the first order formulas you have to define what a first order formula is, which requires a definition of FOL as kenny said.
Mario Carneiro (Apr 12 2020 at 05:30):
you don't have to build a model of ZFC though
Kenny Lau (Apr 12 2020 at 05:39):
can you evaluate a FOL formula?
Mario Carneiro (Apr 12 2020 at 05:39):
sure
Mario Carneiro (Apr 12 2020 at 05:40):
not computably, but you can define a function from formula
to (nat -> Prop) -> Prop
or something like that
Kenny Lau (Apr 12 2020 at 05:41):
oh right, Prop is impredicative
Mario Carneiro (Apr 12 2020 at 05:41):
Impredicativity isn't needed here, i.e. you could do the same in Type
if the model also lives in Type
Mario Carneiro (Apr 12 2020 at 05:42):
actually the type of the eval should be formula -> (nat -> A) -> Prop
Mario Carneiro (Apr 12 2020 at 05:43):
where the function is providing elements of the model A
for every free variable
Chris M (Apr 12 2020 at 05:44):
When you say "define what a FOL formula is", does that mean you can no longer use the ∀(φ : Set → Set → Prop)
approach, because a formula
is now no longer a function to Prop
, but a normal structure like any other structure we'd want to formalize?
Kenny Lau (Apr 12 2020 at 05:44):
yeah
Mario Carneiro (Apr 12 2020 at 05:44):
The quantifier would range over formula
, and then you would replace phi
with eval2 phi : Set -> Set -> Prop
Mario Carneiro (Apr 12 2020 at 05:45):
You can restrict attention to two variable formulas, or set variables out of range to a default value
Mario Carneiro (Apr 12 2020 at 05:46):
If you use a quantifier ∀(φ : Set → Set → Prop)
, then it's a higher order quantifier so you get those "indescribable" formulas
Reid Barton (Apr 12 2020 at 12:49):
Chris M said:
lol, I hope you're joking
https://github.com/flypitch/flypitch/
Last updated: Dec 20 2023 at 11:08 UTC