Zulip Chat Archive

Stream: new members

Topic: Help with a weird lambda


Brendan Seamas Murphy (Jul 22 2019 at 00:23):

Can someone give me a hand with proving the goal from hAgree?

α : Type u,
_inst_1 : topological_space α,
F : presheaf_of_ab_groups α,
U : opens α,
OC : covering U,
si : Π (i : OC.γ), (sheafification.pre F) (OC.Uis i),
p : α,
i j : OC.γ,
hp1 : p  OC.Uis i,
hp2 : p  OC.Uis j,
a : (sheafification.pre F) (OC.Uis i),
b : (sheafification.pre F) (OC.Uis j),
hAgree :
  (λ (p : α) (h : p  (OC.Uis i).val  (OC.Uis j).val, _⟩), a.val p _) =
    λ (p : α) (h : p  (OC.Uis i).val  (OC.Uis j).val, _⟩), b.val p _
 a.val p hp1 = b.val p hp2

The details of what sheafification.pre is shouldn't matter, other than that it's a subtype of Π (p ∈ U), stalk_of_ab_groups F p

Brendan Seamas Murphy (Jul 22 2019 at 00:23):

I've been trying for like half an hour but nothing has helped

Brendan Seamas Murphy (Jul 22 2019 at 00:25):

Also p ∈ ⟨(OC.Uis i).val ∩ (OC.Uis j).val, _⟩ is definitionally equal to p ∈ (OC.Uis i).val ∩ (OC.Uis j).val, and those are just sets

Kevin Buzzard (Jul 22 2019 at 00:29):

Try dsimp at hAgree?

Kevin Buzzard (Jul 22 2019 at 00:31):

Oh the functions are equal so you can evaluate them both at p maybe

Mario Carneiro (Jul 22 2019 at 00:31):

yes this is the solution

Kevin Buzzard (Jul 22 2019 at 00:31):

You could use congr_arg or congr_fun

Brendan Seamas Murphy (Jul 22 2019 at 00:31):

dsimp doesn't work (neither does simp or dsimp *). Is there a good way to get lean to evaluate both sides of a goal?

Brendan Seamas Murphy (Jul 22 2019 at 00:31):

ah

Kevin Buzzard (Jul 22 2019 at 00:32):

I forget which one you want

Mario Carneiro (Jul 22 2019 at 00:32):

congr_fun (congr_fun hAgree p) hp1 should work

Kevin Buzzard (Jul 22 2019 at 00:32):

Feed it hAgree

Kevin Buzzard (Jul 22 2019 at 00:32):

Yeah that

Kevin Buzzard (Jul 22 2019 at 00:32):

Or something like that

Mario Carneiro (Jul 22 2019 at 00:32):

the fact that hp1 and hp2 are not defeq seems a bit sketchy

Mario Carneiro (Jul 22 2019 at 00:34):

Oh I think you need to apply it to a proof that it's in the intersection, so congr_fun (congr_fun hAgree p) <hp1, hp2>

Mario Carneiro (Jul 22 2019 at 00:34):

then the two underscore proofs applied to this should reduce to hp1 and hp2 respectively

Brendan Seamas Murphy (Jul 22 2019 at 00:35):

That worked, thanks

Johan Commelin (Jul 22 2019 at 00:57):

@Brendan Seamas Murphy Did you already know about subtypes before learning about sheafification?

Johan Commelin (Jul 22 2019 at 00:58):

Otherwise this seems to be a pretty hardcore way of learning Hartshorne (-;

Brendan Seamas Murphy (Jul 22 2019 at 00:58):

Yes

Brendan Seamas Murphy (Jul 22 2019 at 00:59):

I have formal verification background, I'm just rusty

Johan Commelin (Jul 22 2019 at 01:01):

Aha... well it's certainly a nice use of those old skills.

Brendan Seamas Murphy (Jul 22 2019 at 01:02):

There's so many little details to keep track of with sheaves that I figured I might as well try and have a computer keep track of them

Kevin Buzzard (Jul 22 2019 at 09:14):

There has been some talk here about how best to implement sheaves in type theory and in some sense we still don't know the answer.


Last updated: Dec 20 2023 at 11:08 UTC