[D] I just found the earliest description of the GAN idea – in the context of genetic algorithms
Danny Hillis “Co-evolving parasites improve simulated evolution as an optimization procedure “, 1990.
…there are two independent gene pools, each evolving according to the selection/mutation/recombination sequence outlined above. One population, the “hosts”, represents sorting networks, while the other population, the “parasites”, represents test cases. (These two populations might also be considered as “prey” and “predator”, since their evolution rates are comparable.) Both populations evolve on the same grid, and their interaction is through their fitness functions. The sorting networks are scored according to the test cases provided by the parasites at the same grid location. The parasites are scored according to how well they find flaws in sorting networks. Specifically, the phenotype of each parasite is a group of 10 to 20 test cases, and its score is the number of these tests that the corresponding sorting network fails to pass. The fitness functions of the host sorting networks and the parasitic sets of test patterns are complementary in the sense that a success of the sorting network represents a failure of the test pattern and vice versa.