1. A computer implemented method for co-operative learning by at least a first entity supporting a first rule based system and a second entity supporting a second rule based system, the method comprising: the first entity generating a rule base from input data supplied from at least one input and having recursion data used to recursively update the rule base as a result of newly received input data; the first entity sending rule data defining at least one rule of the rule base of the first entity and associated data, including the recursion data, to the second entity; the second entity determining whether to update the rule base of the second entity using the transmitted rule data, and if so then using the recursion data to recursively determine the updated rules for its rule base.