(a) A learner is a distinguisherThe reduction behind Theorem 1, run for real on a class that is learnable: linear functions fs(x) = ⟨x,s⟩ over 𝔽28. The distinguisher A wraps the learner L: it forwards L's sample requests and queries to the oracle, returns the oracle's answers, and finally tests L's hypothesis on one fresh point, accepting on agreement. Against Fs the learner's view is exactly its PAC experiment, so it predicts and the test passes; against a truly random function nothing generalizes. The gap between the two acceptance probabilities is the distinguishing advantage — so a learnable class cannot contain a PRF, which is the theorem read backwards. The general bound is (1−δ)(1−ε) − 2−ℓ − m/2n. Kerckhoffs' principle applies throughout: the family and algorithms are public, only s is secret. Reference: Kearns–Valiant, JACM 1994.
(b) The GGM tree: a function from a seedFrom a length-doubling generator G(s) = G0(s)‖G1(s), define Fs(x1⋯xn) = Gxn(⋯Gx1(s)⋯): the seed sits at the root, every node has a 0-child on the left and a 1-child on the right, and the input spells a root-to-leaf path. Toggle the four bits of x and the gold path re-routes; the values written along it are the only ones ever computed — the rest of the tree exists implicitly. One 32-bit seed determines all 24 leaves here, and in general k bits determine 2n pseudorandom values — a distinguisher for the family would break the generator. The generator used on this page is a toy integer mixer, standing in for a real G. Reference: Goldreich–Goldwasser–Micali, JACM 1986.
input x