The AM program, an early attempt to mechanize learning by discovery, has recently been expanded and extended to several other task domains. AM's ultimate failure apparently was due to its inability to discover new, powerful, domain-specific heuristics for the various new fields it uncovered. At that time, it seemed straight-forward to simply add ‘Heuristics’ as one more field in which to let AM explore, observe, define, and develop. That task—learning new heuristics by discovery—turned out to be much more difficult than was realized initially, and we have just now achieved some successes at it. Along the way, it became clearer why AM had succeeded in the first place, and why it was so difficult to use the same paradigm to discover new heuristics. In essence, AM was an automatic programming system, whose primitive actions were modifications to pieces of LISP code, code which represented the characteristic functions of various math concepts. It was only because of the deep relationship between LISP and Mathematics that these operations (loop unwinding, recursion elimination, composition, argument elimination, function substitution, etc.) which were basic LISP mutators also turned out to yield a high ‘hit rat’ of viable, useful new math concepts when applied to previously-known, useful math concepts. But no such deep relationship existed between LISP and Heuristics, and when the basic automatic programming operators were applied to viable, useful heuristics, they almost always produced useless (often worse than useless) new rules. Our work on the nature of heuristics has enabled the construction of a new language in which the statement of heuristics is more natural and compact. Briefly, the vocabulary includes many types of conditions, actions, and descriptive properties that a heuristic might possess; instead of writing a large lump of LISP code to represent the heuristic, one spreads the same information out across dozens of ‘slots’. By employing this new language, the old property that AM satisfied fortuitously is once again satisfied: the primitive syntactic operators usually now produce meaningful semantic variants of what they operate on. The ties to the foundations of Heuretics have been engineered into the syntax and vocabulary of the new language, partly by design and partly by evolution, much as John McCarthy engineered ties to the foundations of Mathematics into LISP. The EURISKO program embodies this language, and it is described in this paper, along with its results in eight task domains: design of naval fleets, elementary set theory and number theory, LISP programming, biological evolution, games in general, the design of three-dimensional VLSI devices, the discovery of heuristics which help the system discover heuristics, and the discovery of appropriate new types of ‘slots’ in each domain. Along the way, some very powerful new concepts, designs, and heuristics were indeed discovered mechanically. Characteristics that make a domain ripe for AM-like exploration for new concepts and conjectures are explicated, plus features that make a domain especially suitable for EURISKO-level exploration for new heuristics.