Zulip Chat Archive
Stream: maths
Topic: Transfer homomorphism
Kenny Lau (Jun 15 2018 at 16:15):
Let G be a group and H a subgroup of finite index. Then, pick a set-theoretic section s:G/H->G where G/H is the right cosets. Then, the transfer homomorphism G^ab -> H^ab is defined by sending [[g]] to prod[x in G/H] s(x) g s(xg)^-1.
Kenny Lau (Jun 15 2018 at 16:15):
The wonderful thing about this homomorphism is that it is independent of the section s
Kenny Lau (Jun 15 2018 at 16:16):
but this also means that I will be lifting arbitrarily many quotients.
Kenny Lau (Jun 15 2018 at 16:16):
How should I do that?
Mario Carneiro (Jun 15 2018 at 16:16):
using choice
Kenny Lau (Jun 15 2018 at 16:16):
but it will be noncomputable
Mario Carneiro (Jun 15 2018 at 16:17):
obviously
Kenny Lau (Jun 15 2018 at 16:17):
can I make it computable?
Mario Carneiro (Jun 15 2018 at 16:17):
nothing about what you said sounds remotely computable
Kenny Lau (Jun 15 2018 at 16:17):
it seems computable to me
Kenny Lau (Jun 15 2018 at 16:17):
the map is independent of s
Kenny Lau (Jun 15 2018 at 16:17):
there is only finitely many choices to make
Mario Carneiro (Jun 15 2018 at 16:17):
How do you even know such a function s
exists?
Kenny Lau (Jun 15 2018 at 16:18):
you don't need the function s. you just need to lift finitely many quotients
Kenny Lau (Jun 15 2018 at 16:18):
obviously s is noncomputable
Kenny Lau (Jun 15 2018 at 16:18):
but the transfer homomorphism should be computable
Mario Carneiro (Jun 15 2018 at 16:18):
How is G^ab defined
Kenny Lau (Jun 15 2018 at 16:18):
G quotient G commutator
Kenny Lau (Jun 15 2018 at 16:18):
G/[G,G]
Mario Carneiro (Jun 15 2018 at 16:19):
And in what sense is G/H finite
Kenny Lau (Jun 15 2018 at 16:19):
in the sense that H is a finite-index subgroup of G
Kenny Lau (Jun 15 2018 at 16:19):
so G/H is a fintype
Mario Carneiro (Jun 15 2018 at 16:20):
I mean, how are you expressing "finite index"
Kenny Lau (Jun 15 2018 at 16:20):
[fintype G/H]
Mario Carneiro (Jun 15 2018 at 16:21):
And how do you construct a section?
Kenny Lau (Jun 15 2018 at 16:21):
I don't
Mario Carneiro (Jun 15 2018 at 16:21):
Any section at all
Kenny Lau (Jun 15 2018 at 16:22):
section is noncomputable
Kenny Lau (Jun 15 2018 at 16:22):
but the transfer homomorphism is independent of section
Kenny Lau (Jun 15 2018 at 16:22):
so I need finitely many lifts
Mario Carneiro (Jun 15 2018 at 16:22):
Even ignoring the lifts
Kenny Lau (Jun 15 2018 at 16:22):
I can't construct any section computably
Kenny Lau (Jun 15 2018 at 16:23):
if that's what you mean
Mario Carneiro (Jun 15 2018 at 16:24):
I think I see what you mean with iterating lifts, that might be possible
Kenny Lau (Jun 15 2018 at 16:24):
hmm
Kenny Lau (Jun 15 2018 at 16:24):
but it will be very hard
Mario Carneiro (Jun 15 2018 at 16:24):
But you will have to redo the work of finset.pi
Kenny Lau (Jun 15 2018 at 16:24):
each element of the product is not well-defined
Kenny Lau (Jun 15 2018 at 16:24):
it is the product itself which is well-defined
Mario Carneiro (Jun 15 2018 at 16:24):
You have a single quotient in the output
Mario Carneiro (Jun 15 2018 at 16:25):
or even a trunc
, if you express the section property in a subtype
Mario Carneiro (Jun 15 2018 at 16:26):
Do you have decidable equality on G/H?
Kenny Lau (Jun 15 2018 at 16:26):
is that necessary?
Kenny Lau (Jun 15 2018 at 16:26):
I feel that it is already computable
Mario Carneiro (Jun 15 2018 at 16:26):
it comes up in the construction of the functions
Kenny Lau (Jun 15 2018 at 16:27):
how would you do it?
Mario Carneiro (Jun 15 2018 at 16:28):
I am reminded of a discussion with @Gabriel Ebner about generalizing the quotient axioms to allow for indexed families of quotients
Kenny Lau (Jun 15 2018 at 16:29):
but everything is finite here
Kenny Lau (Jun 15 2018 at 16:29):
the axioms should be enough
Mario Carneiro (Jun 15 2018 at 16:29):
But it's provable in the finite case, and that's what I would prove
Kenny Lau (Jun 15 2018 at 16:29):
hmm
Kenny Lau (Jun 15 2018 at 16:29):
this is very hard
Kenny Lau (Jun 15 2018 at 16:29):
can I even do this in 3 days
Mario Carneiro (Jun 15 2018 at 16:29):
It's less than 100 lines for sure
Mario Carneiro (Jun 15 2018 at 16:31):
Also, decidable equality is definitely necessary for constructing sections
Kenny Lau (Jun 15 2018 at 16:31):
I don't want to construct any section
Mario Carneiro (Jun 15 2018 at 16:31):
You do, that's the whole point
Mario Carneiro (Jun 15 2018 at 16:31):
You are lifting stuff from a quotient but that's not so important
Kenny Lau (Jun 15 2018 at 16:32):
hmm
Mario Carneiro (Jun 15 2018 at 16:33):
Are you suggesting that there is a way to define the transfer that avoids reference to any section?
Kenny Lau (Jun 15 2018 at 16:33):
If I do a product indexed by a fintype do I need decidable equality?
Mario Carneiro (Jun 15 2018 at 16:33):
I assume you have to make coordinated choices in order to define the sums
Kenny Lau (Jun 15 2018 at 16:33):
but everything is finite
Mario Carneiro (Jun 15 2018 at 16:35):
No, products of elements in a commutative group over a finset does not require decidable_eq
Kenny Lau (Jun 15 2018 at 16:35):
then why do I need it now
Kenny Lau (Jun 15 2018 at 16:35):
even if the choice is coordinated
Kenny Lau (Jun 15 2018 at 16:35):
it's still finite
Mario Carneiro (Jun 15 2018 at 16:35):
to define the section that coordinates the choices
Kenny Lau (Jun 15 2018 at 16:35):
but everything is well-defined
Mario Carneiro (Jun 15 2018 at 16:36):
How are you going to remember your finitely many choices if not with a function? And how is that function indexed?
Kenny Lau (Jun 15 2018 at 16:36):
isn't it the philosophy of quotient that if your choices are well-defined then you are computable?
Mario Carneiro (Jun 15 2018 at 16:36):
That's not the problem
Mario Carneiro (Jun 15 2018 at 16:36):
You want a function G/H -> G
Kenny Lau (Jun 15 2018 at 16:37):
list.rec is computable
Kenny Lau (Jun 15 2018 at 16:37):
multiset.rec is computable
Mario Carneiro (Jun 15 2018 at 16:37):
that means distinguishing elements of G/H when they are sent to different members of G
Kenny Lau (Jun 15 2018 at 16:37):
finset.rec is computable
Kenny Lau (Jun 15 2018 at 16:39):
hmm
Mario Carneiro (Jun 15 2018 at 16:55):
Here's a way to state the section property without groups:
def choices {ι : Type*} [fintype ι] {α : ι → Type*} (R : ∀ i, α i → α i → Prop) (f : ∀ i, quot (R i)) : quot (λ (a b : Π i, α i), ∀ i, R i (a i) (b i)) := sorry
Kenny Lau (Jun 15 2018 at 16:56):
I only have one quotient though
Kenny Lau (Jun 15 2018 at 16:56):
it's just G/H
Mario Carneiro (Jun 15 2018 at 16:57):
That doesn't make too much of a difference
Mario Carneiro (Jun 15 2018 at 16:58):
The point here is the interchanging of pi and quot
Kenny Lau (Jun 15 2018 at 16:58):
I see
Mario Carneiro (Jun 15 2018 at 17:00):
It seems reasonable to have that function as a computable axiom, this is what Gabriel and I discussed
Kenny Lau (Jun 15 2018 at 17:00):
I see
Mario Carneiro (Jun 15 2018 at 17:00):
because it has an obvious VM interpretation
Kenny Lau (Jun 15 2018 at 17:01):
but is it provable?
Mario Carneiro (Jun 15 2018 at 17:01):
but you can only prove it for I finite
Mario Carneiro (Jun 15 2018 at 17:01):
and even then I believe it implies decidable equality of I
Kevin Buzzard (Jun 15 2018 at 17:14):
Kenny, if you are under time constraints, why not just make it noncomputable, make sure everything else is done, and come back to it later if you have time?
Mario Carneiro (Jun 15 2018 at 17:16):
I will look into this theorem, and report back if I can prove it. Feel free to assume it
Reid Barton (Jun 15 2018 at 17:17):
This version is not quite right though, because for example one of the R i
could be the empty relation, and then the "product relation" is also empty
Reid Barton (Jun 15 2018 at 17:19):
You need to assume the R i
are at least reflexive, or build the "product relation" differently, like the Cartesian product of graphs
Mario Carneiro (Jun 15 2018 at 17:21):
That's fine, quot
implicitly takes the equivalence closure of the given relation
Mario Carneiro (Jun 15 2018 at 17:21):
quotient
is the variant that explicitly assumes the relation is an equivalence already
Reid Barton (Jun 15 2018 at 17:22):
But, say, R 1
might be nontrivial, while R 2
is empty, and then λ (a b : Π i, α i), ∀ i, R i (a i) (b i)
is empty, so we haven't made any identifications in \a 1 \x \a 2
Reid Barton (Jun 15 2018 at 17:23):
then we'd have a map quot (R 1) \to \a 1
. Or is that okay?
Mario Carneiro (Jun 15 2018 at 17:24):
I see, yes that's bad
Mario Carneiro (Jun 15 2018 at 17:25):
So maybe just replacequot
with quotient
everywhere
Mario Carneiro (Jun 15 2018 at 17:25):
although then I have to show that the pi of equivalences is an equivalence
Mario Carneiro (Jun 15 2018 at 17:39):
Here's the noncomputable version:
instance pi_setoid {ι : Type*} {α : ι → Type*} [∀ i, setoid (α i)] : setoid (Π i, α i) := { r := λ a b, ∀ i, a i ≈ b i, iseqv := ⟨ λ a i, setoid.refl _, λ a b h i, setoid.symm (h _), λ a b c h₁ h₂ i, setoid.trans (h₁ _) (h₂ _)⟩ } noncomputable def quotient.choice {ι : Type*} {α : ι → Type*} [S : ∀ i, setoid (α i)] (f : ∀ i, quotient (S i)) : @quotient (Π i, α i) (by apply_instance) := ⟦λ i, (f i).out⟧ theorem quotient.choice_eq {ι : Type*} {α : ι → Type*} [∀ i, setoid (α i)] (f : ∀ i, α i) : quotient.choice (λ i, ⟦f i⟧) = ⟦f⟧ := quotient.sound $ λ i, quotient.mk_out _
Mario Carneiro (Jun 15 2018 at 19:24):
Let G be a group and H a subgroup of finite index. Then, pick a set-theoretic section s:G/H->G where G/H is the right cosets. Then, the transfer homomorphism G^ab -> H^ab is defined by sending [[g]] to prod[x in G/H] s(x) g s(xg)^-1.
Shouldn't there be a [[]] in the definition there somewhere?
Kenny Lau (Jun 15 2018 at 19:24):
by sending [[g]] to [[prod[x in G/H] s(x) g s(xg)^-1]].
Mario Carneiro (Jun 15 2018 at 19:24):
Does [[g h]] = [[g]][[h]]
?
Kenny Lau (Jun 15 2018 at 19:25):
yes
Mario Carneiro (Jun 15 2018 at 19:25):
Then don't the s(x)
parts cancel?
Kenny Lau (Jun 15 2018 at 19:25):
@Kevin Buzzard
Mario Carneiro (Jun 15 2018 at 19:26):
[[prod[x in G/H] s(x) g s(xg)^-1]] = (prod[x in G/H] [[s(x)]]) (prod[x in G/H] [[g]]) (prod[x in G/H] [[s(xg)]]^-1)
Mario Carneiro (Jun 15 2018 at 19:26):
and prod[x in G/H] [[s(xg)]]^-1 = prod[x in G/H] [[s(x)]]^-1
by reindexing
Kenny Lau (Jun 15 2018 at 19:26):
oh you can't do that, g is not in H
Kenny Lau (Jun 15 2018 at 19:27):
s(x) g s(xg)^-1 is in H
Mario Carneiro (Jun 15 2018 at 19:27):
I know, but they should still be equal as members of G
Kenny Lau (Jun 15 2018 at 19:27):
no, because H^ab is H/[H,H]
Mario Carneiro (Jun 15 2018 at 19:46):
Okay, I think I have something close to a proof that decidable_eq of the coset relation is necessary. Suppose you know fintype G/H
. Ignoring quotients for a moment, thinking "computationally", this is essentially a list of elements of G which chooses exactly one element of every coset (or, if you prefer, a bijection (not an equiv) from fin n to G/H). Now that looks like the section we want, but the problem is the computation of s(xg) that we need later. The function x |-> xg is a permutation of G/H which corresponds to a permutation of the list s, but computationally it's not that easy since if we take our representative s(x) and multiply by g we get s(x)g, which is in the same coset as s(xg) but is not usually the same. So we need a way of searching our list s to find the value that is in the same coset as s(x)g, and there is no way to do this from the given data.
Kenny Lau (Jun 15 2018 at 21:17):
I see. Then I'll just come up with a section noncomputably then.
Mario Carneiro (Jun 15 2018 at 21:19):
Here's the computable version of that theorem:
def quotient.fin_choice_aux {ι : Type*} [decidable_eq ι] {α : ι → Type*} [S : ∀ i, setoid (α i)] : ∀ (l : list ι), (∀ i ∈ l, quotient (S i)) → @quotient (Π i ∈ l, α i) (by apply_instance) | [] f := ⟦λ i, false.elim⟧ | (i::l) f := begin refine quotient.lift_on₂ (f i (list.mem_cons_self _ _)) (quotient.fin_choice_aux l (λ j h, f j (list.mem_cons_of_mem _ h))) _ _, exact λ a l, ⟦λ j h, if e : j = i then by rw e; exact a else l _ (h.resolve_left e)⟧, refine λ a₁ l₁ a₂ l₂ h₁ h₂, quotient.sound (λ j h, _), by_cases e : j = i; simp [e], { subst j, exact h₁ }, { exact h₂ _ _ } end theorem quotient.fin_choice_aux_eq {ι : Type*} [decidable_eq ι] {α : ι → Type*} [S : ∀ i, setoid (α i)] : ∀ (l : list ι) (f : ∀ i ∈ l, α i), quotient.fin_choice_aux l (λ i h, ⟦f i h⟧) = ⟦f⟧ | [] f := quotient.sound (λ i h, h.elim) | (i::l) f := begin simp [quotient.fin_choice_aux, quotient.fin_choice_aux_eq l], refine quotient.sound (λ j h, _), by_cases e : j = i; simp [e], subst j, refl end def quotient.fin_choice {ι : Type*} [fintype ι] [decidable_eq ι] {α : ι → Type*} [S : ∀ i, setoid (α i)] (f : ∀ i, quotient (S i)) : @quotient (Π i, α i) (by apply_instance) := quotient.lift_on (@quotient.rec_on _ _ (λ l : multiset ι, @quotient (Π i ∈ l, α i) (by apply_instance)) finset.univ.1 (λ l, quotient.fin_choice_aux l (λ i _, f i)) (λ a b h, begin have := λ a, quotient.fin_choice_aux_eq a (λ i h, quotient.out (f i)), simp [quotient.out_eq] at this, simp [this], let g := λ a:multiset ι, ⟦λ (i : ι) (h : i ∈ a), quotient.out (f i)⟧, refine eq_of_heq ((eq_rec_heq _ _).trans (_ : g a == g b)), congr' 1, exact quotient.sound h, end)) (λ f, ⟦λ i, f i (finset.mem_univ _)⟧) (λ a b h, quotient.sound $ λ i, h _ _) theorem quotient.fin_choice_eq {ι : Type*} [fintype ι] [decidable_eq ι] {α : ι → Type*} [∀ i, setoid (α i)] (f : ∀ i, α i) : quotient.fin_choice (λ i, ⟦f i⟧) = ⟦f⟧ := begin let q, swap, change quotient.lift_on q _ _ = _, have : q = ⟦λ i h, f i⟧, { dsimp [q], exact quotient.induction_on (@finset.univ ι _).1 (λ l, quotient.fin_choice_aux_eq _ _) }, simp [this], exact setoid.refl _ end
Kenny Lau (Jun 15 2018 at 21:19):
:o
Kevin Buzzard (Jun 16 2018 at 10:24):
Canceling s -- [[]] is being used for both the map G->Gab and H->Hab so they don't cancel. Spending the weekend in a field without much internet so don't expect too much from me until sun pm
Last updated: Dec 20 2023 at 11:08 UTC