270 likes | 431 Views
CSCE 580 Artificial Intelligence Ch.12 [P]: Individuals and Relations Datalog. Fall 2009 Marco Valtorta mgv@cse.sc.edu. Acknowledgment. The slides are based on [AIMA] and other sources, including other fine textbooks
E N D
CSCE 580Artificial IntelligenceCh.12 [P]: Individuals and RelationsDatalog Fall 2009 Marco Valtorta mgv@cse.sc.edu
Acknowledgment • The slides are based on [AIMA] and other sources, including other fine textbooks • David Poole, Alan Mackworth, and Randy Goebel. Computational Intelligence: A Logical Approach. Oxford, 1998 • A second edition (by Poole and Mackworth) is under development. Dr. Poole allowed us to use a draft of it in this course • Ivan Bratko. Prolog Programming for Artificial Intelligence, Third Edition. Addison-Wesley, 2001 • The fourth edition is under development • George F. Luger. Artificial Intelligence: Structures and Strategies for Complex Problem Solving, Sixth Edition. Addison-Welsey, 2009
Databases and Recursion • Datalog is a subset of Prolog that can be used to define relational algebra • Datalog is more powerful than relational algebra: • It has variables • It allows recursive definitions of relations • Therefore, e.g., datalog allows the definition of the transitive closure of a relation. • Datalog has no function symbols: it is a subset of definite clause logic.
Relational DB Operations • A relational db is a kb of ground facts • datalog rules can define relational algebra database operations • The examples refer to the database in course.pl
Selection • Selection: • cs_course(X) <- department(X, comp_science). • math_course(X) <- department(X, math).
Union • Union: multiple rules with the same head • cs_or_math_course(X) <- cs_course(X). • cs_or_math_course(X) <- math_course(X). • In the example, the cs_or_math_course relation is the union of the two relations defined by the rules above.
Join • Join: the join is on the shared variables, e.g.: • ?enrolled(S,C) & department(C,D). • One must find instances of the relations such that the values assigned to the same variables unify • in a DB, unification simply means that the same variables have the same value!
Projection • When there are variables in the body of a clause that don’t appear in the head, you say that the relation is projected onto the variables in the head, e.g.: • in_dept(S,D) <- enrolled(S,C) & department(C,D). • In the example, the relation in_dept is the projection of the join of the enrolled and department relations.
Databases and Recursion • Datalog can be used to define relational algebra • Datalog is more powerful than relational algebra: • It has variables • It allows recursive definitions of relations • Therefore, e.g., datalog allows the definition of the transitive closure of a relation. • Datalog has no function symbols: it is a subset of definite clause logic.
Relational DB Operations • A relational db is a kb of ground facts • datalog rules can define relational algebra database operations • The examples refer to the database in course.pl
Selection • Selection: • cs_course(X) <- department(X, comp_science). • math_course(X) <- department(X, math).
Union • Union: multiple rules with the same head • cs_or_math_course(X) <- cs_course(X). • cs_or_math_course(X) <- math_course(X). • In the example, the cs_or_math_course relation is the union of the two relations defined by the rules above.
Join • Join: the join is on the shared variables, e.g.: • ?enrolled(S,C) & department(C,D). • One must find instances of the relations such that the values assigned to the same variables unify • in a DB, unification simply means that the same variables have the same value!
Projection • When there are variables in the body of a clause that don’t appear in the head, you say that the relation is projected onto the variables in the head, e.g.: • in_dept(S,D) <- enrolled(S,C) & department(C,D). • In the example, the relation in_dept is the projection of the join of the enrolled and department relations.
Recursion • Define a predicate in terms of simpler instances of itself • Simpler means: easier to prove • Examples: • west in west.pl • live in elect.pl • “Recursion is a way to view mathematical induction top-down.”
Well-founded Ordering • Each relation is defined in terms of instances that are lower in a well-founded ordering, a one-to-one correspondence between the relation instances and the non-negative integers. • Examples: • west: induction on the number of doors to the west---imm_west is the base case, with n=1. • live: number of steps away from the outside---live(outside) is the base case.
Verification of Logic Programs • Verifiability of logic programs is the prime motivation behind using semantics! • If g is false in the intended interpretation and g is proved from the KB, • Find the clause used to prove g • If some atom in the body of the clause is false in the intended interpretation, then debug it • Else return the clause as the buggy clause instance
Verifiability II • Also need to show that all cases are covered: if an instance of a predicate is true in the intended interpretation, then one of the clauses is applicable to prove the predicate. • Also need to show termination---this is in general impossible, due to semidicidability results, but it is possible in many practical situations.
Limitations • No notion of complete knowledge! • Cannot conclude that something is false. • Cannot conclude something from lack of knowledge. Example: • The relation empty_course(X) with the obvious intended interpretation cannot be defined from enrolled(S,C) relation. • The Closed World Assumption (CWA) allows reasoning from lack of knowledge.
Case Study: University Rules • univ.pl • DB of student records • DB of relations about the university • Rules about satisfying degree requirements.
Case Study: University Rules • This is an example of representing regulatory knowledge. • (Another great example: Sergot, M.J. et al., “The British Nationality Act as a Logic Program.” CACM, 29, 5 (may 1986), 370-386.) • DB of relations about the university (univ.pl) • Rules about satisfying degree requirements (univ.pl) • Lists are used (lists.pl)
Some facts • grade(St, Course, Mark) • dept(Dept,Fac) • We would say College, not Faculty • course(Course, Dept, Level) • core_courses(Dept,CC, MinPass) • CC is a list
A Rule • satisfied_degree_requirements(St,Dept) <- covers_core_courses(St,Dept) & dept(Dept, Fac) & satisfies_faculty_req(St, Fac) & fulfilled_electives(St, Dept) & enough_units(St, Dept).
More Rules • Covers_core_courses(St, Dept) <- core_courses(dept, CC, MinPass) & passed_each(CC, St, MinPass)
More Rules • passed(St, C, MinPass) <- grade(St, C, Gr) & Gr >= MinPass. • A recursive rule that traverses a list. • passed_each([], S, M). • passed_each([C|R], St, MinPass) <- passed(St, C, MinPass) & passed_each(R, St, MinPass).
More Rules • passed_one(CL, St, MinPass) <- member(C, CL) & passed(St, C, MinPass).