Zulip Chat Archive

Stream: general

Topic: invalid 'calc': transitivity rule


Kenny Lau (Apr 16 2018 at 01:50):

invalid 'calc' expression, transitivity rule is not defined for current step

Kenny Lau (Apr 16 2018 at 01:51):

I am using in calc as in here

Kenny Lau (Apr 16 2018 at 01:51):

why does it give me this error?

Kenny Lau (Apr 16 2018 at 01:51):

mathlib:

lemma group_equiv_left_cosets_times_subgroup {s : set α} (hs : is_subgroup s) :
  nonempty (α ≃ (left_cosets s × s)) :=
⟨calc α ≃ (@set.univ α) :
    (equiv.set.univ α).symm
  ... ≃ (⋃t∈left_cosets s, t) :
    by rw [←hs.Union_left_cosets_eq_univ]; simp
  ... ≃ (Σt:left_cosets s, t) :
    equiv.set.bUnion_eq_sigma_of_disjoint hs.pairwise_left_cosets_disjoint
  ... ≃ (Σt:left_cosets s, s) :
    equiv.sigma_congr_right $ λ⟨t, ht⟩, classical.choice $ hs.left_cosets_equiv_subgroup ht
  ... ≃ (left_cosets s × s) :
    equiv.sigma_equiv_prod _ _⟩

Kenny Lau (Apr 16 2018 at 01:51):

why can mathlib use it but gives me error when I use it

Kenny Lau (Apr 16 2018 at 02:00):

oh my god

Kenny Lau (Apr 16 2018 at 02:01):

it is a totally unrelated error caused by having higher priority than ×

Mario Carneiro (Apr 16 2018 at 02:02):

the priority of ≃ is a bit dumb, I know

Mario Carneiro (Apr 16 2018 at 02:03):

but it's hard to be both equality like and also lower than most type operators

Kenny Lau (Apr 16 2018 at 02:03):

theorem orbit_stab : nonempty ((orbit G X x × stab G X x) ≃ G) :=
nonempty.elim (orbit_equiv_stab_cosets G X x) $ λ F1,
nonempty.elim (is_subgroup.group_equiv_left_cosets_times_subgroup $ stab.is_subgroup G X x) $ λ F2,
nonempty.intro $
(equiv.prod_congr F1 (equiv.refl $ stab G X x)).trans
F2.symm

Kenny Lau (Apr 16 2018 at 02:03):

orbit-stabilizer theorem done :D

Mario Carneiro (Apr 16 2018 at 02:04):

does it have to be nonempty? Can't you give the equiv itself?

Kenny Lau (Apr 16 2018 at 02:04):

ask group_equiv_left_cosets_times_subgroup

Kenny Lau (Apr 16 2018 at 02:04):

https://github.com/leanprover/mathlib/blob/master/group_theory/coset.lean#L146

Kenny Lau (Apr 16 2018 at 02:05):

hey group_equiv_left_cosets_times_subgroup, why are you nonempty?

Mario Carneiro (Apr 16 2018 at 02:05):

probably because of the choice in the middle

Mario Carneiro (Apr 16 2018 at 02:06):

you can't constructively pick an element from each coset

Kenny Lau (Apr 16 2018 at 02:06):

I see

Mario Carneiro (Apr 16 2018 at 02:06):

does that generalize to your theorem?

Kenny Lau (Apr 16 2018 at 02:07):

well I used that theorem so it has to be nonempty

Mario Carneiro (Apr 16 2018 at 02:09):

Maybe your application is constructive though

Kenny Lau (Apr 16 2018 at 02:10):

well then it is noncomputable def at most?

Kenny Lau (Apr 16 2018 at 02:10):

don't quite see the difference between that and just nonempty

Mario Carneiro (Apr 16 2018 at 02:10):

I think orbit_equiv_stab_cosets gives you a way to select an element from each coset

Mario Carneiro (Apr 16 2018 at 02:10):

I think it is computable

Kenny Lau (Apr 16 2018 at 02:11):

that one isn't computable either

Kenny Lau (Apr 16 2018 at 02:11):

there's no computable inverse

Kenny Lau (Apr 16 2018 at 02:11):

I am not using quotient

Mario Carneiro (Apr 16 2018 at 02:11):

Maybe the problem is that you have to deal with cosets then

Kenny Lau (Apr 16 2018 at 02:12):

well maybe https://github.com/leanprover/mathlib/blob/master/group_theory/coset.lean could use quotients instead of sets

Kenny Lau (Apr 16 2018 at 02:12):

then our lives will be easier

Kenny Lau (Apr 16 2018 at 02:12):

they even have the equivalence relation set up

Mario Carneiro (Apr 16 2018 at 02:17):

I think you are right...

Kevin Buzzard (Apr 16 2018 at 06:44):

You need the axiom of choice to pick coset representatives, i.e. if G is a group (even an abelian group) and H is a subgroup then you need the axiom of choice to choose a subset S of G containing precisely one element of each coset. One perhaps rather convoluted way of seeing this is that if G is the reals and H the rationals then if you can choose S then you can build a non-measurable subset of the reals; however there is a model of ZF (no C) in which every set is measurable.

Kevin Buzzard (Apr 16 2018 at 06:46):

Apply this to the action of G on the cosets of H and you see that an explicit bijection would give you S, you look at the image of (orbit x {1})

Kenny Lau (Apr 16 2018 at 06:47):

what is this a response to?

Mario Carneiro (Apr 16 2018 at 06:50):

I think he is arguing that the orbit stabilizer theorem is also necessarily nonconstructive (in the infinite case)

Kevin Buzzard (Apr 16 2018 at 06:51):

does it have to be nonempty? Can't you give the equiv itself?

Kenny Lau (Apr 16 2018 at 06:52):

it's nonconstructive, but can't we use noncomputable def instead of nonempty

Kevin Buzzard (Apr 16 2018 at 06:55):

I'm not sure I understand the question yet. I think that out of everyone in this conversation I'm the least well placed to answer it anyway. I just wanted to tell you (Kenny) the argument I came up with yesterday which convinced me that some form of nonconstructive maths was provably needed to choose coset reps.

Kenny Lau (Apr 16 2018 at 06:57):

we three all agree with that

Mario Carneiro (Apr 16 2018 at 07:06):

You can always extract an equiv from a nonempty equiv using choice, which makes it a noncomputable def. Doing this before or after makes little difference

Kevin Buzzard (Apr 16 2018 at 07:07):

we three all agree with that

yes, but I gave a proof ;-)

Patrick Massot (Apr 16 2018 at 07:28):

It's a complete mystery to me: why mathlib doesn't use a quotient to talk about quotient of a group by a (non-normal) subgroup?

Kenny Lau (Apr 16 2018 at 07:28):

well "mathlib" isn't a person

Kenny Lau (Apr 16 2018 at 07:29):

and the person you seek is @Scott Morrison

Kenny Lau (Apr 16 2018 at 07:29):

and this thing is just here 5 days ago

Patrick Massot (Apr 16 2018 at 07:29):

I'm sure it's older

Patrick Massot (Apr 16 2018 at 07:29):

When Johannes proved Lagrange

Kenny Lau (Apr 16 2018 at 07:30):

nvm what i said is bs

Kenny Lau (Apr 16 2018 at 07:30):

right, @Johannes Hölzl proved it in March 6

Johannes Hölzl (Apr 16 2018 at 07:35):

The answer is simple: I didn't think about quotients of a group to prove Lagrange. I just wanted to show a property about the orbit of a group.

Patrick Massot (Apr 16 2018 at 07:52):

But the orbit of a point is canonically the quotient of the group by the stabilizer of the point

Kenny Lau (Apr 16 2018 at 07:52):

cardinalities don't interact well with quotients

Patrick Massot (Apr 16 2018 at 07:53):

(deleted)


Last updated: Dec 20 2023 at 11:08 UTC