6. Concerning your second question: What you saw (with a special argument for 2) is on the same Page 21 of the above-mentioned Eilenberg--Moore
On Fri, 22 Jun 2012 01:32:10 +0200, George Janelidze wrote, inter alia: paper.
The argument was used to prove that every epimorphism of groups is surjective with no mention of regular monomorphisms, but in fact they prove that, for every homomorphism
j : H --> G, there exist two homomorphisms
k, l : G --> P with k(g) = L(g) only when g is in j(H).
This also appears as Exercise 5 of Section 5 of Chapter I in Mac Lane's "Categories for the Working Mathematician", with very precise hints.
What the origins of the argument Mac Lane outlines here are, I don't know. I do seem to recall that I first saw more or less such an argument in a graduate course Sammy gave at Columbia during the "golden era" 1958-1963, and that Sammy himself, probably at a Bowdoin NSF summer semester on categories, revealed his deft trick by which to convert the argument for the "index greater than 2" case to a uniform argument ignoring the subgroup's index. Let me record that argument here. Given are a group G, a subgroup H of G, and an element a in G \ H. P is to be the group of permutations of the underlying set of the left G-set got by forming the coproduct G/H + 1 of the principal left G-set G/H of left cosets xH of H in G (x ∈ G) with a (trivial) terminal left G-set 1 = {*} (assume * ∉ G/H): P = perm(|G/H| ∪ {*}) = (|G/H| ∪ {*})! . One permutation in particular is to be singled out for attention: the transposition t ∈ P interchanging * with the coset H itself. Let me use r: G --> P for the result of composing the regular representation of G by left action (g, xH) |-> (gx)H on the cosets of H with the obvious injection of (|G/H|)! into (|G/H| ∪ {*})! -- thus: [r(g)](xH) = (gx)H , [r(g)](*) = * . And let me write s: G --> P for the result of conjugating by t the various assorted values of r -- thus: [s(g)](xH) = t([r(g)](t(xH))) , [s(g)](*) = t([r(g)](t(*))) = t([r(g)](H)) = t(gH) . The end-game strategy is now this: (i) for h ∈ H: r(h) = s(h) ; yet (ii) for g = a, [r(a)](*) = * but [s(a)](*) = aH (whence r ≠ s). Details: Bear in mind that if, for x in G and h in H, we have (hx)H = H, we must have hx in H, whence also x in H so that xH = H. Then for (i): (a) if xH ≠ H -- [s(h)](xH) = t([r(h)](xH)) = t((hx)H) = (hx)H = [r(h)](xH) ; (b) if xH = H -- [s(h)](H) = t([r(h)](*)) = t(*) = H = [r(h)](H) ; (c) and at * -- [s(h)](*) = t([r(h)](H)) = t(H) = * = [r(h)](*) . And bear in mind also that aH ≠ H because a ∉ H; thus: for (ii) -- [s(a)](*) = t([r(a)](H)) = t(aH) = aH ≠ * = [r(a)](*) . By the way, if the subgroup H had index 3 or more in G, one need not require recourse to any external element * as above -- one could let any coset other than H and aH (when there are such) play the role of *, and, with but a few additional wrinkles (unless I am mistaken (which is always possible :-) )), I believe that is essentially how the proof George cites from Mac Lane's exercise works. Cheers, -- Fred [NB: I'm writing ∈ for an element symbol, ∉ for a crossed-out element symbol, ∪ for a union symbol, and ≠ for a crossed-out equal sign. With luck these HTML glyph constructs will simply display as the glyphs they're meant to represent; and if not, they're no more painful to decipher than their TeX counterparts, which HTML can't display as glyphs.] [For admin and other information see: http://www.mta.ca/~cat-dist/ ]