Managing complex computer networks while ensuring that certain high level goals such as security are met is a complicated process. This is evidenced by the recent Internet outages caused by operators misconfiguring Internet Border Gateway Protocol (BGP) routers. A significant proportion of these failures have been caused due to human operators working at very low level details. Along with the need for high level tools that can automate the configuration process, there has been an ever growing need to separate the high level goals/policies from the low level mechanisms that implement the various services. In this book, we describe a declarative framework for specifying and enforcing high level policies in networks. The declarative framework offers both flexibility in terms of specifying the higher level goals rather than focusing on the lower level mechanisms employed in the implementation, as well as robustness in terms of recovering from failures.