Zulip Chat Archive

Stream: new members

Topic: ETCS


David Michael Roberts (Oct 10 2018 at 05:32):

I might have a crack at showing that sets form a category that is a model of ETCS https://ncatlab.org/nlab/show/ETCS

David Michael Roberts (Oct 10 2018 at 05:33):

Or at least build a model of ETCS in Lean. Not sure quite what the sets of Lean are yet.

David Michael Roberts (Oct 10 2018 at 05:35):

I mean, I notice that in set_theory.zfc presets are used, but I can't tell if these are the same as Bishop-style presets (https://ncatlab.org/nlab/show/preset) and then sets are what are sometimes called setoids (https://ncatlab.org/nlab/show/equivalence+relation#setoids)

Simon Hudon (Oct 10 2018 at 05:36):

There are multiple formalizations of sets in Lean, depending on your needs. set_theory.zfc is if you're interested in (untyped) ZFC set theory, data.set formalize sets whose elements have a certain type as predicates on that type and data.finset formalizes finite sets whose elements also have a given type.

Simon Hudon (Oct 10 2018 at 05:37):

In set_theory.zfc there is pSet but there's also Set which might be more useful

Mario Carneiro (Oct 10 2018 at 05:42):

I think that pSet is indeed a preset in the nLab sense

David Michael Roberts (Oct 10 2018 at 05:42):

Yes, I could show that ZFC-sets give a model of ETCS, but it would be more interesting to show that one could build the category of "sets" directly, without knowing a well-founded \in-tree structure on them.

Mario Carneiro (Oct 10 2018 at 05:43):

although of course there is an equality relation on pSet, since it is a type; this equality is too fine for ZFC and Set is a quotient of this by set extensionality

David Michael Roberts (Oct 10 2018 at 05:43):

So I guess: is there a way to talk about sets native to Lean, as there is in HoTT, for instance? (where there is the type of hSets)

Mario Carneiro (Oct 10 2018 at 05:43):

hSet = Type in lean

David Michael Roberts (Oct 10 2018 at 05:43):

Oh, cool!

Mario Carneiro (Oct 10 2018 at 05:43):

all types are "sets" in the HoTT sense, because of proof irrelevance

David Michael Roberts (Oct 10 2018 at 05:44):

So, in principle, one could try to show that Type is (the objects of) a category—perhaps this is done already—and then show it is a term of type ETCS, once that is defined.

Mario Carneiro (Oct 10 2018 at 05:45):

yes, that should not be difficult

Simon Hudon (Oct 10 2018 at 05:45):

There is a category of types in category_theory.types

Scott Morrison (Oct 10 2018 at 05:45):

The category structure on Type is at https://github.com/leanprover/mathlib/blob/master/category_theory/types.lean

Mario Carneiro (Oct 10 2018 at 05:45):

also ^ that

Simon Hudon (Oct 10 2018 at 05:46):

@Scott Morrison not fast enough!

Scott Morrison (Oct 10 2018 at 05:46):

:-)

Scott Morrison (Oct 10 2018 at 05:46):

I was running a longer race. :-)

Simon Hudon (Oct 10 2018 at 05:47):

Now you understand why some of my code snippets have small type errors in them :P

David Michael Roberts (Oct 10 2018 at 05:50):

OK, cool, thanks :-)

Mario Carneiro (Oct 10 2018 at 05:50):

What's more, I think there is a model of ETCS in Type

Mario Carneiro (Oct 10 2018 at 05:51):

i.e. a suitably large inductive type can give you all the types you need to interpret the operations of ETCS

David Michael Roberts (Oct 10 2018 at 05:51):

As an aside: is there a handy chart that details the various unicode autocompletion shortcuts? and/or LaTeX : autocompl shortcut table?

Mario Carneiro (Oct 10 2018 at 05:51):

If you want the full list you should look at the vscode extension file

Mario Carneiro (Oct 10 2018 at 05:52):

but it is quite large and likely auto-populated with a bunch of things from LaTeX

Bryan Gin-ge Chen (Oct 10 2018 at 05:52):

You can also paste in symbols from this page and hover over them to see what the completion is.

David Michael Roberts (Oct 10 2018 at 05:52):

Which lives...? (thanks, btw)

David Michael Roberts (Oct 10 2018 at 05:52):

@Bryan Gin-ge Chen cool, thanks

Mario Carneiro (Oct 10 2018 at 05:52):

https://github.com/leanprover/vscode-lean/blob/master/translations.json

Bryan Gin-ge Chen (Oct 10 2018 at 05:52):

Here's the vscode file

David Michael Roberts (Oct 10 2018 at 05:54):

:+1:

Mario Carneiro (Oct 10 2018 at 05:55):

The maintainer of the extension (Gabriel Ebner) is quite receptive to adding new symbols if you spot one in high unicode that you like

Jesse Michael Han (Oct 13 2018 at 04:14):

@David Michael Roberts Nice seeing you here!

Type is indeed a model of ETCS; function extensionality should correspond to well-pointedness, working in classical, we have choice, Prop is the subobject classifier, and the NNO is nat.

David Michael Roberts (Oct 13 2018 at 04:22):

Sure, but is it _proved_ to be a model of ETCS? And, if I use the constructive fragment, do I get a model of the constructive version (a la I guess Mike Shulman's "material and structural set theories" paper)

David Michael Roberts (Oct 13 2018 at 04:22):

Oh, and thanks, @Jesse Michael Han :-)

David Michael Roberts (Oct 13 2018 at 04:23):

Also, one could go the whole hog and show without using even Prop that Type is some kind of predicative topos...

David Michael Roberts (Oct 13 2018 at 04:24):

That said, this is just to get me wet behind the ears and play around with stuff that I care about.

Mario Carneiro (Oct 13 2018 at 04:24):

Do you know what that should mean?

David Michael Roberts (Oct 13 2018 at 04:26):

There is a constructive version of well-pointedness, that doesn't force Booleanness. just that "a global element of the subobject classifier is false if and only if it is not true." (from https://ncatlab.org/nlab/show/well-pointed+topos)

David Michael Roberts (Oct 13 2018 at 04:27):

And as far as predicative stuff, one could show directly that Type is a Pi-W-pretopos satisfying some version of WISC (??? not sure about that one), following eg Benno van den Berg

David Michael Roberts (Oct 13 2018 at 04:29):

For instance "the category of Bishop sets in Martin-Löf type theory is a predicative topos" (https://ncatlab.org/nlab/show/predicative+topos)

Mario Carneiro (Oct 13 2018 at 05:12):

I'm not sure about WISC, seems like any version of the axiom of choice is likely to be false without choice, but I checked the proof that epis are surjective in lean:

universe u
theorem epi {α β : Type u} (f : α  β)
  (H :  (γ : Type u) (g h : β  γ), g  f = h  f  g = h) (y : β) :  x, f x = y :=
let g (y : β) : ulift.{u} Prop := ⟨∃ x, f x = y,
    h (y : β) : ulift.{u} Prop := true in
have g = h, from H _ g h (funext $ λ x,
  congr_arg ulift.up $ eq_true_intro $ by exact ⟨_, rfl),
by injection congr_fun this y; exact cast eq_true h_1

and it looks like you need Prop and propext essentially (you can't prove it using trunc, and you certainly can't prove it "constructively" i.e. with a sigma)

Mario Carneiro (Oct 13 2018 at 05:24):

Actually I find this to be an interesting example of a "nonconstructive" constructive exists, in the sense that you can't upgrade the exists to a data type even though the proof does not use choice.

Mario Carneiro (Oct 13 2018 at 06:02):

I am almost certain that WISC is not provable, although I don't think there is an easy proof of this. I don't think Asaf Karagila's proof https://arxiv.org/pdf/1212.4396.pdf is much affected by the presence of inaccessible cardinals, so it should be independent of lean as well by simulation in ZFC + omega inaccessibles (below the first inaccessible because we are working in Type).

David Michael Roberts (Oct 13 2018 at 07:11):

Well, I did prove (on paper) that WISC isn't provable from the axioms of an elementary topos, by constructing a topos where it fails :-)

Mario Carneiro (Oct 13 2018 at 07:13):

I suppose that's also an option... I guess lean has a bit more structure though, so maybe you have to do that with pi-W-toposes? Is that a thing?

Jesse Michael Han (Oct 13 2018 at 19:19):

@David Michael Roberts I'm not sure if

a global element of the subobject classifier is false if and only if it is not true

holds without invoking classical. Without being able to take a filterquotient of Prop, it's just a massive Heyting algebra, and even with excluded middle, if Lean knows that p¬p \vdash p \vee \neg p, it does not necessarily decide if pp is true or false.

Lean is also not quite a topos over Set\mathbf{Set}, for it lacks externally indexed colimits (while Σ\Sigma-types and quotient types give all internally indexed colimits).

Mario Carneiro (Oct 13 2018 at 23:40):

@Jesse Michael Han Could you unpack what that statement about the subobject classifier should mean? I assume Prop is a subobject classifier for Type even without choice (but assuming propext), because every monomorphism in Type is an injection, and so it factors through the subtype on the range.

Actually, I see another problem: If f : A -> X is a monomorphism and g : X -> Prop is the function g x = \ex a, f x = a, then we want a pullback square with the true : unit -> Prop function. But the subtype is a pullback, and A is not constructively isomorphic to the subtype, so I don't think it holds. That is, Prop isn't even a subobject classifier.

Jesse Michael Han (Oct 14 2018 at 00:56):

That's interesting. (I assume you mean g x = \ex a, f a = x.) Why is the image of an injection not constructively isomorphic to its domain?

Mario Carneiro (Oct 14 2018 at 01:16):

There are a few ways to look at it. My favorite is to think in terms of what is "data" vs "erased" stuff, which corresponds to stuff that the computer could actually execute or manipulate. If you have a function f : A -> X where A and X are both data types, then f is a real function, something that transforms one kind of representation into another. There is no guarantee that this transformation is invertible, and in particular assuming that f is injective does not supply you with such an inverse. (This is why equiv contains an explicit inverse function, and bijection is a weaker notion.) So defining a function from A to {x // x \in range f} is easy by restricting the codomain of f, but you don't have enough data for the converse function.

In set theory you would use the exists assumption to give the value, but since this is a Prop, it is "not data" and can't be turned into data. If you use a Type-valued equivalent, like trunc {a // f a = x}, then it would be constructively bijective, but in this case I'm not sure it's a pullback.

Jesse Michael Han (Oct 14 2018 at 01:25):

If that's the case, when maybe one does need 'classical' to show that Prop (which is then bool) is a subobject classifier after all.

Could you explain why couldn't we do something like, take the collection of pairs (a,f(a))(a, f(a)) and flip the pairs to get an inverse?

Mario Carneiro (Oct 14 2018 at 01:26):

Ah, here's another way to show choiceless Type is not a topos:

Corollary 4.2. C\mathbf{C} is balanced, i.e., a morphism in C\mathbf{C} is an isomorphism iff it is both monic and epic. (https://ncatlab.org/nlab/show/subobject+classifier)

This is not true in Type, since as I said monic means injective and epic means surjective, and the conjunction of these is bijective which is not the same as equiv which is isomorphism.

Mario Carneiro (Oct 14 2018 at 01:27):

Actually unique choice is enough to prove that a bijection is an equiv

Mario Carneiro (Oct 14 2018 at 01:27):

so you can still get this property without collapsing Prop = bool

Mario Carneiro (Oct 14 2018 at 01:29):

Could you explain why couldn't we do something like, take the collection of pairs (a,f(a))(a, f(a)) and flip the pairs to get an inverse?

because that's not how functions are defined in type theory. In type theory every function is given by a term that has a free variable for the argument

Mario Carneiro (Oct 14 2018 at 01:29):

That is, "functions" and "functional relations" are not the same

Mario Carneiro (Oct 14 2018 at 01:30):

a definition like that one would give a functional relation, but proving that a functional relation induces a function requires unique choice

Mario Carneiro (Oct 14 2018 at 01:31):

By the way, this kind of thing comes up even in "real math". For example, the derivative of a function is a functional relation, not a function

Mario Carneiro (Oct 14 2018 at 01:32):

You can of course use choice to upgrade it to a function but it's not quite natural and lean will make it feel a little awkward

Jesse Michael Han (Oct 14 2018 at 01:34):

Right, I see.

Ah, here's another way to show choiceless Type is not a topos:

Corollary 4.2. C\mathbf{C} is balanced, i.e., a morphism in C\mathbf{C} is an isomorphism iff it is both monic and epic. (https://ncatlab.org/nlab/show/subobject+classifier)

This is not true in Type, since as I said monic means injective and epic means surjective, and the conjunction of these is bijective which is not the same as equiv which is isomorphism.

This is what one usually uses to show that the image of a mono is isomorphic to its domain, so that makes sense.

David Michael Roberts (Oct 14 2018 at 01:51):

Well, that was the informal explanation. The real definition is Def 4.1 in Shulman's https://arxiv.org/pdf/1808.05204.pdf and is stated in the context of a Heyting category, so no subobject classifier necessary.

David Michael Roberts (Oct 14 2018 at 01:52):

Also, I wouldn't naively take Prop to be the subobject classifier. What about 1 -> Prop?

Mario Carneiro (Oct 14 2018 at 01:54):

Prop and 1 -> Prop are isomorphic

David Michael Roberts (Oct 14 2018 at 01:55):

Ah, well... :-/

David Michael Roberts (Oct 14 2018 at 01:57):

Looking at

Def 4.1 in Shulman's https://arxiv.org/pdf/1808.05204.pdf

part a) gives me pause. The other parts b)-d) seem ok (Epis are surjective, "every function 1-> U \cup V factors through U or V" and 1->0 is empty).

Mario Carneiro (Oct 14 2018 at 01:59):

I guess (b) isn't obvious to me, mostly because I'm learning the terminology as I go

Mario Carneiro (Oct 14 2018 at 02:02):

But (a) does indeed look to be false. If m : A -> X is bijective, then for every x : X (add 1 -> if you like) there exists y : A such that f x = y, but it is not necessarily an isomorphism

David Michael Roberts (Oct 14 2018 at 02:03):

By Remark 4.2 b) is equiv to epis are surjective, which you proved above.

Mario Carneiro (Oct 14 2018 at 02:03):

But, I think we have to be more careful about what the actual category under discussion is. Is all the metatheory being internalized to Lean?

Mario Carneiro (Oct 14 2018 at 02:04):

That is, if you prove there exists a morphism that may not mean that there is a closed term morphism

David Michael Roberts (Oct 14 2018 at 02:04):

Hmm, not sure. I was vaguely planning on formalising Mike's definitions and seeing what happened.

Mario Carneiro (Oct 14 2018 at 02:05):

I can almost imagine that knowing that every x : 1 -> X splits over m in some strong external sense implying that there is an inverse function

Mario Carneiro (Oct 14 2018 at 02:05):

but that has its own issues

Mario Carneiro (Oct 14 2018 at 02:06):

If you assume choice, then of course you get all these properties

Reid Barton (Oct 14 2018 at 02:06):

I just tuned in and I'm not really sure what is going on here, but in the opposite direction it seems that (c) could fail if you interpreted "either A or B must be ..." in a strong external sense, as well

David Michael Roberts (Oct 14 2018 at 02:07):

I can almost imagine that knowing that every x : 1 -> X splits over m in some strong external sense implying that there is an inverse function

ah, that would be quantifying over 1->X I suppose, leading to a section (?). This is the old problem that with the strong constructive quantifier the axiom of choice is simply true.

Reid Barton (Oct 14 2018 at 02:08):

Same with (b) if you interpret the statement as a Pi/Sigma rather than a forall/exists

David Michael Roberts (Oct 14 2018 at 02:08):

I just tuned in and I'm not really sure what is going on here, but in the opposite direction it seems that (c) could fail if you interpreted "either A or B must be ..." in a strong external sense, as well

I would imagine it's not meant to be exclusive or.

Reid Barton (Oct 14 2018 at 02:08):

I mean that you could interpret it as a sum type

Mario Carneiro (Oct 14 2018 at 02:08):

it's certainly exclusive or, but that's not the hard part

David Michael Roberts (Oct 14 2018 at 02:08):

@Reid Barton yes, I imagine so.

Reid Barton (Oct 14 2018 at 02:08):

rather than the propositional truncation thereof

David Michael Roberts (Oct 14 2018 at 02:09):

@Mario Carneiro but what if A=B as subobjects of X? (here I'm using Remark 4.2 again)

Reid Barton (Oct 14 2018 at 02:09):

I haven't read the preceding part of the paper so I'm not sure whether the metatheory is intended to be classical or what.

Mario Carneiro (Oct 14 2018 at 02:10):

If A = B then 1 = A \cup A, and then by pushing the unique element of 1 around you find A = 1 and hence 1 has two distinct elements, which is false

Mario Carneiro (Oct 14 2018 at 02:11):

Actually I'm not even sure why that is an axiom, seems like it should be true in the base theory

Mario Carneiro (Oct 14 2018 at 02:13):

If 1 = A \cup B then you get a distinguished element of A \cup B, and by following it you find which one is isomorphic to 1

Mario Carneiro (Oct 14 2018 at 02:13):

then again that relies on elementwise reasoning so it probably isn't true in the base theory

David Michael Roberts (Oct 14 2018 at 02:14):

Fair enough. Gotta run now, though

Reid Barton (Oct 14 2018 at 02:16):

BTW, are you allowing funext?

Mario Carneiro (Oct 14 2018 at 02:17):

I was assuming the other two axioms

Mario Carneiro (Oct 14 2018 at 02:17):

It is true that without quot.sound you have to worry about funext

Reid Barton (Oct 14 2018 at 02:17):

Okay good, otherwise I was confused about some earlier stuff.

Mario Carneiro (Oct 14 2018 at 02:18):

and in that case I'm not sure there is a good theory at all, since the category is all about equalities of morphisms which are functions

Kevin Buzzard (Oct 14 2018 at 10:15):

I love that #new users has all these questions about how @ works etc and then a huge thread about topos theory :-)

David Michael Roberts (Oct 14 2018 at 10:45):

Tbh I barely know how @ works, too, but I am coming at this top-down, which is probably the wrong way to do it.

Kevin Buzzard (Oct 14 2018 at 13:23):

I don't think there are right and wrong ways to do it. I think we're still figuring out the best ways to learn and to direct growth of Lean. I think the best way to do it is to try all the ways we can think of.

Jesse Michael Han (Oct 14 2018 at 17:55):

Re: the preceding discussion, I think one again needs unique choice to show (besides ruling out things like uninvertible bijections) that any epimorphism satisfies the universal property with respect to its kernel relation on its domain (i.e. is regular).


Last updated: Dec 20 2023 at 11:08 UTC