The Rubble language is declarative rather than imperative. Instead of listing the explicit step-by-step instructions about how to execute a program, you describe the facts of the system and the rules that govern these facts. It allows you to express the logic of a system rather than be concerned with the flow of the program, it allows you in far fewer lines to express a complex system.
Rubble can control multiple persistent processes, each encapsulating a set of facts and rules where the facts express the current state of the process. Processes can communicate with one another which allows your program to be built up of logical units to architect one large logical system. This allows Rubble to scale across multiple cores and multiple nodes and allows you to build complex systems out of small building blocks or reuse building blocks that we provide.
Rule and Inference Engine
When you run Rubble, inferences are made based on the rules that you've established. Either, they run forward, which means that new facts are determined using the rules you've set. Or, they run backwards, you start with a query, expressed as a predicate containing one or more variables, and Rubble infers any answers that can be proved using the rules. Forward- and backward chaining may also be combined, for example by using a query in the condition part of a forward chaining rule, or by using forward chaining inferences when proving a query. This can be used to establish complex rule-based systems, that can be proved and queried. For instance, a security policy that establishes which user can access what resource.
What Rubble is good for
Establish the rules that govern a system, and the Rubble platform will govern it for you — everything from validating input data, to managing business processes, to enforcing compliance rules.
Rubble code can be proved correct by using a formal mathematical method, SLD-resolution with sound negation-as-failure and unit propagation. In fact, Rubble rule execution is nothing other than an automated proof that uses this method.
Rubble is exceptional at provisioning a black box to provide deductive inference. Feed in a query and Rubble can deduce an answer.
Rubble and security
We strongly believe that logic languages could prove invaluable in information security.
Specify policies in logic statements and use deduction to resolve all possible rules in your security policy to check that it is sound.
Orchestrate the implementation
Implement policies by sending configuration to target devices. Rubble has a command and control program called "Hermes" where commands can be issued as the result of a logic program.
Keep systems secure by putting formal logic in the loop. "Hermes" includes a sentinel program that is able to relay the state of a system back to the Rubble process ensuring that the system meets the logic of the security policy.