answer set programming conclusion dlv database database system database theory deductive database jack minker logic logic programming magic sets algorithm premise prolog query language recursion sql secpal semantic web rule language stanford university xsb