Artificial Intelligence

Homework #2

Exploring Prolog

Due: March 21

Please turn in a printed listing of your Prolog clauses and a sample run of the execution testing your program.  No email is necessary.

1. Write the Prolog clauses for Ackerman's function.
2.  A(m, n) n + 1 m == 0, A(m-1, 1) m > 0, n == 0 A(m-1, A(m, n-1)) otherwise

3. Design a Prolog database to represent the structure of the United States Government. It should use a vocabulary including the following:

 Constants: executive_arm legislative_arm judicial_arm president congress supreme_court vice_president senate house_of_representatives courts_of_appeal dept_of_treasury dept_of_state budget bills laws veto suits override sec_of_state sec_of_treasury Relations: head_of has_veto_power_over has_review_power_over can_override_veto_by must_initiate can_impeach can_invalidate is_apart_of reports_to

Construct Prolog queries interpreting the following questions

1. Who has review power over laws?
2. What can the House of Representatives invalidate?
3. Who is the head of the Department of Treasury?
4. Who reports to the President?

4. Design a Prolog system for basic computational geometry. Develop the following relations.  Demonstrate Points, Segments (both vertical and horizontal), Rectangles, Triangles, and Regular Rectangles.

Point(X, Y)
Seg( P1, P2 )
Vertical( Seg( P1, P2 ))
Horizontal( Seg( P1, P2 ))
Rectangle( P1, P2, P3, P4 )
Triangle( P1, P2, P3 )
Regular( R )