Distributed systems theory