 Question 

Suppose there is a bijection between the underlying sets of two finite groups $G, H$, such that every subgroup of $G$ corresponds to a subgroup of $H$, and that every subgroup of $H$ corresponds to a subgroup of $G$. Does this imply that $G, H$ are isomorphic? Note that we do not require the bijection to actually be the isomorphism.

 Motivation 

The question is interesting to me because I am considering maps of groups which aren't homomorphisms but preserve the subgroup structure in some sense - given a group, we can forget the multiplication operation and look only at the closure operator that maps a subset of $G$ to the subgroup generated by it. If the question is resolved in the affirmative, then the forgetful functor from the usual category $Grp$ to this category won't create any new isomorphisms. (Note that I didn't precisely specify the morphisms this new category -- you could just use the usual definition of a homomorphism, and say that if the mapping commutes with the closure operator, then its a morphism. The definition I actually care about is, a morphism of this category is a mapping such that every closed set in the source object is the preimage of a closed set of the target object. It doesn't make much difference as far as this question is concerned, the isomorphisms of both categories are the same.)

I asked a friend at Mathcamp about this a few weeks ago, he said a bunch of people started thinking about it but got stumped after a while. The consensus seems to have been that it is probably false, but the only counter examples may be very large. I don't really have any good ideas / tools for how to prove it might be true, I mostly wanted to just ask if anyone knew offhand / had good intuition for how to find a finite counterexample. 



Edit (YCor): (a) the question has reappeared in the following formulation: does the hypergraph structure of the set of subgroups of a (finite) group determine its isomorphism type? A hypergraph is a set endowed with a set of subsets. The hypergraph of subgroups is the data of the set of subgroups, and therefore to say that groups $G,H$ have isomorphic hypergraphs of subgroups means that there's a bijection $f:G\to H$ such that for every subset $A\subset G$, $f(A)$ is a subgroup of $H$ if and only $A$ is a subgroup of $G$. Several answers, complementing the one given here, have been provided in this question.

(b) There a weaker well-studied notion for groups, namely to have isomorphic subgroup lattices. Having isomorphic hypergraphs of subgroups requires such an isomorphism to be implemented by a bijection (this is not always the case: take two groups of distinct prime order). 

The answer is no in general. I.e, there are finite non-isomorphic groups G and H such that there exists a bijection between their elements which also induces a bijection between their subgroups.

For this, I used two non-isomorphic groups which not only have the same subgroup lattice (which certainly is necessary), but also have the same conjugacy classes. There are two such groups of size 605, both a semidirect product $(C_{11}\times C_{11}) \rtimes C_5$ (see this site for details on the construction). In the small group library of GAP, these are the groups with id [ 605, 5 ] and. [ 605, 6 ]. These are provably non-isomorphic (you can construct the groups as described in the reference I gave, and then use GAPs IdSmallGroup command to verify that the groups described there are the same as the ones I am working with here). With a short computer program, one can now construct a suitable bijection.

First, let us take the two groups:

gap> G:=SmallGroup(605, 5);    
<pc group of size 605 with 3 generators>
gap> H:=SmallGroup(605, 6);
<pc group of size 605 with 3 generators>


The elements of these groups are of order 1, 5 or 11, and there are 1, 484 and 120 of each. We will sort them in a "nice" way (that is, we try to match each subgroup of order 5 to another one, element by element) and obtain a bijection from this. First, a helper function to give us all elements in "nice" order:

ElementsInNiceOrder := function (K)
    local elts, cc;
    elts := [ One(K) ];
    cc := ConjugacyClassSubgroups(K, Group(K.1));
    Append(elts, Concatenation(List(cc, g -> Filtered(g,h->Order(h)=5))));
    Append(elts, Filtered(Group(K.2, K.3), g -> Order(g)=11));
    return elts;
end;;


Now we can take the elements in the nice order and define the bijection $f$:

gap> Gelts := ElementsInNiceOrder(G);;
gap> Helts := ElementsInNiceOrder(H);;
gap> f := g -> Helts[Position(Gelts, g)];;


Finally, we compute the sets of all subgroups of $G$ resp. $H$, and verify that $f$ induces a bijection between them:

gap> Gsubs := Union(ConjugacyClassesSubgroups(G));;          
gap> Hsubs := Union(ConjugacyClassesSubgroups(H));;
gap> Set(Gsubs, g -> Group(List(g, f))) = Hsubs;
true


Thus we have established the claim with help of a computer algebra system. From this, one could now obtain a pen & paper proof for the claim, if one desires so. I have not done this in full detail, but here are some hints.

Say $G$ is generated by three generators $g_1,g_2,g_3$, where $g_1$ generates the $C_5$ factor and $g_2,g_3$ generate the characteristic subgroup $C_{11}\times C_{11}$. We choose a similar generating set $h_1,h_2,h_3$ for $H$. We now define $f$ in two steps: First, for $0\leq n,m <11$ it shall map $g_2^n g_3^m$ to $h_2^n h_3^m$. 

This covers all elements of order 1 or 11, so in step two we specify how to map the remaining elements, which all have order 5. These are split into four conjugacy classes: $g_1^G$, $(g_1^2)^G$, $(g_1^3)^G$ and $(g_1^4)^G$. We fix any bijection between $g_1^G$ and $h_1^H$ and extend that to a bijection on all elements of order 5 by the rule $f((g_1^g)^n)=f(g_1^g)^n$. With some effort, one can now verify that this is a well-defined bijection between $G$ and $H$ with the desired properties. You will need to determine the subgroup lattice in each case; linear algebra helps a bit, as well as the fact that all subgroups have order 1, 5, 11, 55, 121 (unique) or 605. I'll leave the details to the reader, as I myself am happy enough with the computer result. 

UPDATE: as pointed out in another answer below by @dvitek (explained by @Ian Agol in comments), there is actually a much simpler example, which I somehow overlooked when I did my computer search. Credit to them, but just in case people want to reproduce their example with GAP, here is an input session doing just that:

gap> G:=SmallGroup(16,5);; StructureDescription(G);
"C8 x C2"
gap> H:=SmallGroup(16,6);; StructureDescription(H);
"C8 : C2"
gap> Gelts := ListX([1..8],[1,2],{i,j}->G.1^i*G.2^j);;
gap> Helts := ListX([1..8],[1,2],{i,j}->H.1^i*H.2^j);;
gap> f := g -> Helts[Position(Gelts, g)];;
gap> Gsubs := Union(ConjugacyClassesSubgroups(G));;
gap> Hsubs := Union(ConjugacyClassesSubgroups(H));;
gap> Set(Gsubs, g -> Group(List(g, f))) = Hsubs;
true

