Multi-paradigm declarative programming (tutorial)