View the step-by-step solution to:

Simple Prolog: If possible, write as much comment as you can - I really need to understand this material. Thank you for your time.

Simple Prolog: Please, find the assignment in the file attached. If possible, write as much comment as you can - I really need to understand this material. Thank you for your time.

PROLOG
Due 7/10
NOTE: For your homework, you are not allowed to use the builtin
predicate
definitions.  If, for example, you want to use member/2, create you own
version called mymember/2 (or something).  Same for append, reverse,
sort, and many others.You may use any builtin numeric operators, 'is',
the '[' ']'
brackets for lists, fail, not, and maybe some others
(5) In Prolog, implement the predicate cube/2.  This predicate will
relate a list of numbers to a list of numbers that, for each number in
the first list, contains the number, the square of the number, and the
cube of the number.  The only modes for this predicate are: cube(+,-),
and cube(+,+).  E.g.,
?- cube([2,1,4],A).
A = [2,4,8,1,1,1,4,16,64]
?- cube([],[]).
yes.
?- cube([5],[5,25,125]).
yes.
?- cube([2,3],[2,3,4]).
no.
(5) In Prolog, implement the predicate dotProduct/3.  This predicate
will relate two vectors (represented as lists) to their dot product.
 The only modes for this predicate are: dotProduct(+,+,-), and
dotProduct(+,+,+).  E.g.,
?- dotProduct([1,2,3],[5,5,5],A).
A = 30
?- dotProduct([2],[12],24).
yes.
?- dotProduct([],[0],0).
yes.
?- dotProduct([2,3],[2,3,4],17).
no.
(45) In Prolog, create an ADT for Sets.  Each Set will be represented
as a list of unique atoms.  Assume the same semantics as in Hw3.
(5) setAddElt(E,S1,S2).
S2 = S1 Union {E} 
Assume modes: setAddElt(+,+,-), and SetAddElt(+,+,+).
(5) setDelElt(E,S1,S2).
S2 = S1 - {E}
Assume modes: setDelElt(+,+,-), and SetDelElt(+,+,+).
(5) setMember(E,S).
return E element-of S
Assume any mode.
(10) setEqual(S1,S2).
return S1 == S2 (in Prolog)
Assume modes: setEqual(+,+).
(10) SetUnion(S1,S2,S3).
S3 = S1 Union S2
Assume modes: setUnion(+,+,-), and SetUnion(+,+,+).
(10) Set Intersect(S1,S2,S3).
S3 = S1 Intersection S2
Assume modes: setIntersect(+,+,-), and SetIntersect(+,+,+).
(20) Because Prolog's search engine has the ability to backtrack to find
a solution, Prolog can easily be used to implement a top-down parser.
Assume the following Context-Free-Grammar (CFG) for Boolean Expressions,
with start symbol E.
E --> A or E | A
A --> B and A | B
B --> not B | C
C --> '(' E ')' | true | false
Using Prolog, construct a top-down parser that can be used to parse and
evaluate arbitray Boolean expressions. e.g.,
?- parse(['(',true,and,false,')',or true],V).
V = true.
?- parse([true,or,true,and,false],V).
V = true.
?- parse([true,or,or,true,or,false],V).
No.
Hint: Create a different predicate for each nonterminal in the grammar.
(25) Assume, you only have the numbers 1, 2, 3, and 4.  Further assume
that you only have the operators '+' and '*'.  Lastly, assume that you
can only use a number once.
Using Prolog, determine the number of arithmetic expressions that can be
create to equate to the numbers 30, 31, 32, 33, 34, and 35.  
For example, there are 44 equations that equal 20, e.g.,
?- findExpr(20,E).
E = [1, *, [4, *, [2, +, 3]]] ;
E = [1, *, [4, *, [3, +, 2]]] ;
E = [1, *, [[2, +, 3], *, 4]] ;
E = [1, *, [[3, +, 2], *, 4]] ;
E = [4, *, [2, +, 3]] ;
E = [4, *, [2, +, [1, *, 3]]] ;
E = [4, *, [2, +, [3, *, 1]]] ;
E = [4, *, [3, +, 2]] ;
...
Hint: Use the following as a starting place.
findExpr(N,E):-
    generateExpr(...),
    computeValue(...).

This question was asked on May 09, 2010.

Recently Asked Questions

Why Join Course Hero?

Course Hero has all the homework and study help you need to succeed! We’ve got course-specific notes, study guides, and practice tests along with expert tutors and customizable flashcards—available anywhere, anytime.

-

Educational Resources
  • -

    Study Documents

    Find the best study resources around, tagged to your specific courses. Share your own to gain free Course Hero access or to earn money with our Marketplace.

    Browse Documents
  • -

    Question & Answers

    Get one-on-one homework help from our expert tutors—available online 24/7. Ask your own questions or browse existing Q&A threads. Satisfaction guaranteed!

    Ask a Question
  • -

    Flashcards

    Browse existing sets or create your own using our digital flashcard system. A simple yet effective studying tool to help you earn the grade that you want!

    Browse Flashcards