Suppl: A Flexible Language for Policies

  • Robert Dockins
  • Andrew Tolmach
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8858)


We present the Simple Unified Policy Programming Language (Suppl), a domain-neutral language for stating, executing, and analyzing event-condition-action policies. Suppl uses a novel combination of pure logic programming and disciplined imperative programming features to make it easy for non-expert users to express common policy idioms. The language is strongly typed and moded to allow static detection of common programming errors, and it supports a novel logic-based static analysis that can detect internally inconsistent policies. Suppl has been implemented as a compiler to Prolog and used to build several network security applications in a Java framework.


Policy Language Logic Programming Primitive Function Event Handler Suppl Policy 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Barrett, C., Conway, C.L., Deters, M., Hadarean, L., Jovanović, D., King, T., Reynolds, A., Tinelli, C.: CVC4. In: Gopalakrishnan, G., Qadeer, S. (eds.) CAV 2011. LNCS, vol. 6806, pp. 171–177. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  2. 2.
    Bobot, F., Conchon, S., Contejean, E., Iguernelala, M., Lescuyer, S., Mebsout, A.: The Alt-Ergo automated theorem prover (2008),
  3. 3.
    Bobot, F., Conchon, S., Contejean, E., Lescuyer, S.: Implementing Polymorphism in SMT solvers. In: Intl. Workshop on Satisfiability Modulo Theories (SMT). ACM International Conference Proceedings Series, vol. 367, pp. 1–5 (2008)Google Scholar
  4. 4.
    Bobot, F., Filliâtre, J.C., Marché, C., Paskevich, A.: Why3: Shepherd your herd of provers. In: Boogie 2011: Workshop on Intermediate Verification Languages, Wrocław, Poland, pp. 53–64 (August 2011)Google Scholar
  5. 5.
    Boyer, J., Mili, H.: Agile Business Rule Development. Springer (2011)Google Scholar
  6. 6.
    Chomicki, J., Lobo, J., Naqvi, S.: Conflict resolution using logic programming. IEEE Trans. on Knowl. and Data Eng. 15(1), 244–249 (2003)CrossRefGoogle Scholar
  7. 7.
    Clark, K.L.: Negation as failure. In: Logic and Data Bases, pp. 293–322 (1977)Google Scholar
  8. 8.
    Damianou, N., Dulay, N., Lupu, E., Sloman, M.: The Ponder policy specification language. In: Sloman, M., Lobo, J., Lupu, E.C. (eds.) POLICY 2001. LNCS, vol. 1995, pp. 18–38. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  9. 9.
    DARPA: Safety On Untrusted Network Devices (SOUND) (2011), Mission-oriented Resilient Clouds (MRC) program: DARPA-BAA-11-55Google Scholar
  10. 10.
    Dayal, U., Hanson, E.N., Wisdom, J.: Active database systems. In: Modern Database Systems. ACM (1994)Google Scholar
  11. 11.
    Denti, E., Omicini, A., Ricci, A.: Multi-paradigm Java-Prolog integration in tuProlog. Sci. Comput. Program. 57(2), 217–250 (2005)MathSciNetCrossRefGoogle Scholar
  12. 12.
    Dunlop, N., Indulska, J., Raymond, K.: Methods for conflict resolution in policy-based management systems. In: Intl. Conf. on Enterprise Distributed Object Computing. IEEE (2003)Google Scholar
  13. 13.
    Frazier, G., Duong, Q., Wellman, M.P., Petersen, E.: Incentivizing responsible networking via introduction-based routing. In: McCune, J.M., Balacheff, B., Perrig, A., Sadeghi, A.-R., Sasse, A., Beres, Y. (eds.) TRUST 2011. LNCS, vol. 6740, pp. 277–293. Springer, Heidelberg (2011)Google Scholar
  14. 14.
    Garcia de la Banda, M., Stuckey, P.J., Harvey, W., Marriott, K.: Mode checking in HAL. In: Lloyd, J. (ed.) CL 2000. LNCS (LNAI), vol. 1861, pp. 1270–1284. Springer, Heidelberg (2000)CrossRefGoogle Scholar
  15. 15.
    Hinrichs, T.L., Gude, N.S., Casado, M., Mitchell, J.C., Shenker, S.: Practical declarative network management. In: Workshop on Research on Enterprise Networking, WREN 2009, pp. 1–10. ACM (2009)Google Scholar
  16. 16.
    Jajodia, S., Samarati, P., Subrahmanian, V.S.: A logical language for expressing authorizations. In: IEEE Symp. on Security and Privacy. IEEE (1997)Google Scholar
  17. 17.
    JBoss Drools Team: Drools documentation (2014),
  18. 18.
    Kowalski, R., Kuehner, D.: Linear resolution with selection function. Artificial Intelligence 2, 227–260 (1971)MathSciNetCrossRefzbMATHGoogle Scholar
  19. 19.
    Lobo, J., Bhatia, R., Naqvi, S.: A policy description language. In: AAAI Conf. on Artificial Intelligence. American Association for Artificial Intelligence (1999)Google Scholar
  20. 20.
    Milner, R.: A theory of type polymorphism in programming. J. Comput. Syst. Sci. 17, 348–375 (1978)MathSciNetCrossRefzbMATHGoogle Scholar
  21. 21.
    de Moura, L., Bjørner, N.: Z3: An efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  22. 22.
    Somogyi, Z., Henderson, F., Conway, T.: The execution algorithm of Mercury: An efficient purely declarative logic programming language. Journal of Logic Programming 29(1-3), 17–64 (1996)CrossRefzbMATHGoogle Scholar
  23. 23.
    Trieu, A., Dockins, R., Tolmach, A.: Conflict analysis for Suppl (in preparation, 2014)Google Scholar
  24. 24.
    Voellmy, A., Kim, H., Feamster, N.: Procera: A language for high-level reactive network control. In: HotSDN (2012)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2014

Authors and Affiliations

  • Robert Dockins
    • 1
  • Andrew Tolmach
    • 1
  1. 1.Dept. of Computer SciencePortland State University PortlandOregonUSA

Personalised recommendations