1. A method of running a global production rule on data distributed over a plurality of machines, comprising: receiving a local production rule that can run on each of the plurality of machines to jointly accomplish a global computation specified in a global production rule; deploying the local production rule to each of the plurality of machines, said each of the plurality of machines storing a portion of the data and running an instance of a rules engine that can run the local rule; allowing communicating between the plurality of machines, intermediate data produced by the instance of the rules engine running the local production rule on said each of the machines; and allowing coordinating between the plurality of machines to synchronize one or more local computations performed locally according to the local production rule on said each machine.