1. A method for using a computer to generate new productions at runtime comprising the following steps: a.) storing a list of productions on at least one memory store on the computer, wherein each production comprises a context and a consequent such that (the context)→(the consequent), and wherein the context and consequent each comprise at least one feature; b.) searching the production list for productions with contexts that match a user-provided context, and if multiple context-matching productions are found: displaying the context-matching production having the longest consequent; c.) if no context-matching production is found, i.) randomly selecting a feature or a sub-set of features from the user-provided context, ii.) selecting from the production list by uniform chance a first production with a context that matches the selected feature or feature sub-set, iii.) substituting the feature or feature sub-set with the consequent of the first production to create a first feature set, iv.) replacing features in the first feature by removing any duplicate features in the first feature set to create a second feature set, and removing features that negate each other from the second feature set to create a new feature set, and v.) displaying a new production with a context that matches the user-provided context and a consequent consisting of the same features as the new feature set; d.) moving the new production to the logical head of the production list if the new production is verified by a user; and e.) expunging a tail production from the logical tail of the production list when necessary to reclaim storage space so long as the tail production is not the sole definition for a non-terminal symbol.