 A successful learner is one who uses a procedure that is guaranteed to eventually hit on a correct grammar. For single languages, this is trivial: if the target language is L and it is generated by a grammar G, then the procedure “Always guess G” does the job, and every language is learnable. What makes the problem interesting is applying it to classes of grammars. A successful learner for a class C is one who uses a procedure that is guaranteed to succeed no matter what grammar from C is the target and no matter what the data stream is like (as long as it is complete and contains no ungrammatical examples).