Zulip Chat Archive
Stream: general
Topic: sigma type mismatch
Kevin Buzzard (Mar 26 2018 at 09:59):
stalk2
below doesn't typecheck:
Kevin Buzzard (Mar 26 2018 at 10:00):
universe u variables (X : Type u) (P : set (set X)) definition stalk1 (x : X) := Σ U : {U : set X // x ∈ U ∧ P U}, ℕ definition stalk2 (x : X) := Σ (U : set X) (Hx : x ∈ U) (PU : P U), ℕ
Kevin Buzzard (Mar 26 2018 at 10:00):
red squiggle is on the sigma in stalk2
Kevin Buzzard (Mar 26 2018 at 10:00):
error is
Kevin Buzzard (Mar 26 2018 at 10:00):
type mismatch at application Σ (PU : P U), ℕ term λ (PU : P U), ℕ has type P U → Type : Type 1 but is expected to have type ?m_1 → Type : Type (max ? 1)
Kevin Buzzard (Mar 26 2018 at 10:01):
I think that I would rather work with stalk2 rather than stalk1
Kevin Buzzard (Mar 26 2018 at 10:01):
because I tend to avoid subtypes if I can
Kevin Buzzard (Mar 26 2018 at 10:02):
I am still a bit scared of all the up-arrows
Kevin Buzzard (Mar 26 2018 at 10:04):
[background : X is a topological space, P is a basis for the open sets, I'm defining the stalk of a presheaf https://stacks.math.columbia.edu/tag/009H just after 6.30.1; here's a special case https://stacks.math.columbia.edu/tag/0078 which in Lean currently looks like https://github.com/kbuzzard/lean-stacks-project/blob/16a88206397eaa664dd00cf917c78359b7119cb3/src/tag0078.lean#L9 ]
Chris Hughes (Mar 26 2018 at 10:36):
Sigma only takes two arguments. Also the type of nat doesn't depend on the set, so you may as well use prod.
Sebastian Ullrich (Mar 26 2018 at 10:42):
@Chris Hughes It's desugared to nested sigmas. But it still doesn't typecheck because P U
does not live in Type _
. I would suggest using structures in favor of nested anything.
Kevin Buzzard (Mar 26 2018 at 11:02):
@Chris Hughes -- the actual type I want to make is more complex -- the nat was just a MWE of my problem. @Sebastian Ullrich I need to make a type because I am actually interested in a quotient of the type I'm trying to construct. Your observation is that this doesn't typecheck either:
Kevin Buzzard (Mar 26 2018 at 11:02):
definition stalk2 (x : X) (U : set X) (Hx : x ∈ U) := Σ (PU : P U), ℕ
Kevin Buzzard (Mar 26 2018 at 11:03):
and I don't really understand why.
Kevin Buzzard (Mar 26 2018 at 11:03):
But at the end of the day
Kevin Buzzard (Mar 26 2018 at 11:04):
I would like some sigma type so I can put an equivalence relation on it and form the quotient type.
Kevin Buzzard (Mar 26 2018 at 11:05):
Are you suggesting I stick with the stalk1
approach?
Kevin Buzzard (Mar 26 2018 at 11:06):
Presumably you prefer A -> B -> C
to A and B -> C
, i.e. here we avoid the structure [not subtype -- sorry] and prefer the "nested" approach?
Sebastian Ullrich (Mar 26 2018 at 11:07):
No, I'm suggesting
structure stalk3 (x : X) := (U : set X) (Hx : x ∈ U) (PU : P U) (n : ℕ)
so that you don't have to worry about every component whether it should be a sigma or a prod or a pprod or ... and on top of that you get projections with meaningful names.
Kevin Buzzard (Mar 26 2018 at 11:55):
Oh, I see: and then this is still a type so I can still put an equivalence relation on it. I will try it this way! Thanks!
Kenny Lau (Mar 26 2018 at 15:17):
@Kevin Buzzard have you tried it? (if not, i’ll do it)
Kevin Buzzard (Mar 26 2018 at 15:19):
No, I've been at meetings until recently and since then I've been talking to Chris about rings
Kenny Lau (Mar 26 2018 at 15:24):
I’ll do it when i get back home then
Kenny Lau (Mar 26 2018 at 15:24):
which will happen in 15 minutes
Kevin Buzzard (Mar 26 2018 at 15:26):
I pushed as far as I got. Thanks.
Last updated: Dec 20 2023 at 11:08 UTC