str(e(1), [john, walks], s(_)). str(e(2), [john, loves, mary], s(_)). str(e(3), [the, man, who, walks], n(_)). str(e(4), [the, man, who, mary, loves], n(_)). str(e(5), [the, cat, sleeps], s(_)). str(e(6), [john, loves, himself], s(_)). str(e(7), [john, walks, and, mary, talks], s(_)). str(e(8), [john, walks, and, talks], s(_)). str(e(9), [john, likes, and, mary, dislikes, paris], s(_)). str(e(10), [john, respects, and, admires, mary], s(_)). str(e(11), [john, or, mary, talks], s(_)). str(e(12), [john, saw, the, saw], s(_)). str(e(13), [man, who, john, thinks, that, mary, loves], cn(_)). str(e(14), [john, gave, or, bill, sent, the, book, to, mary], s(_)). str(e(15), [john, gave, the, book, to, mary, and, the, cd, to, bill], s(_)). lex([john], n(t(s(m))), j). lex([fred], n(t(s(m))), f). lex([mary], n(t(s(f))), m). lex([bill], n(t(s(m))), b). lex([paris], n(t(s(n))), p). lex([walks], n(t(A)) bs s(t(A)), walk). % falta tiempo verbal: present lex([talks], n(t(A)) bs s(t(A)), talk). lex([sleeps], n(t(A)) bs s(t(A)), sleep). lex([loves], ( n(t(A)) bs s(t(A)) ) / n(_), love). lex([likes], ( n(t(A)) bs s(t(A)) ) / n(_), like). lex([thinks], ( n(t(A)) bs s(t(A)) ) / cp(_), think). lex([dislikes], ( n(t(A)) bs s(t(A)) ) / n(_), dislike). lex([respects], ( n(t(A)) bs s(t(A)) ) / n(_), respect). lex([admires], ( n(t(A)) bs s(t(A)) ) / n(_), admire). lex([saw], ( n(A) bs s(A) ) / n(_), see). % falta tiempo verbal: past lex([gave], ( ( n(A) bs s(A) ) / pp(_) ) / n(_), g). lex([sent], ( ( n(A) bs s(A) ) / pp(_) ) / n(_), s). lex([man], cn(t(s(m))), man). lex([book], cn(t(s(n))), k). lex([cd], cn(t(s(n))), c). lex([cat], cn(t(s(n))), cat). lex([saw], cn(t(s(n))), saw). lex([the], n(t(s(G))) / cn(t(s(G))), iota). lex([to], pp(_) / n(_), [lmd, X, X]). lex([that], cp(_)/s(_), [lmd, X, X]). lex([who], ( cn(F) bs cn(F) ) / ( n(F) bs s(F) ), [lmd, X, [lmd, Y, [lmd, Z, [and, [app, Y, Z], [app, X, Z]]]]]). lex([who], ( cn(F) bs cn(F) ) / ( s(_) / n(F) ), [lmd, X, [lmd, Y, [lmd, Z, [and, [app, Y, Z], [app, X, Z]]]]]). lex([himself], ( ( n(t(s(m))) bs s(t(s(m))) ) / n(t(s(m))) ) bs ( n(t(s(m))) bs s(t(s(m))) ), [lmd, X, [lmd, Y, [app, [app, X, Y], Y]]]). lex([and], ( s(_) bs s(_) ) / s(_), [lmd, X, [lmd, Y, [and, Y, X]]]). lex([and], ( ( n(F) bs s(F) ) bs ( n(F) bs s(F) ) ) / ( n(F) bs s(F) ), [lmd, X, [lmd, Y, [lmd, Z, [and, [app, Y, Z], [app, X, Z]]]]]). lex([and], ( ( s(_) / n(_) ) bs ( s(_) / n(_) ) ) / ( s(_) / n(_) ), [lmd, X, [lmd, Y, [lmd, Z, [and, [app, Y, Z], [app, X, Z]]]]]). lex([and], ( ( ( n(F) bs s(F) ) / n(G) ) bs ( ( n(F) bs s(F) ) / n(G) ) ) / ( ( n(F) bs s(F) ) / n(G) ), [lmd, X, [lmd, Y, [lmd, Z, [lmd, W, [and, [app, [app, Y, Z], W], [app, [app, X, Z], W] ] ] ] ] ]). lex([and], ( (( ( ( n(A) bs s(A) ) / pp(_) ) / n(_) ) bs ( n(A) bs s(A) ) ) bs (( ( ( n(A) bs s(A) ) / pp(_) ) / n(_) ) bs ( n(A) bs s(A) ) ) ) / (( ( ( n(A) bs s(A) ) / pp(_) ) / n(_) ) bs ( n(A) bs s(A) ) ), [lmd, X, [lmd, Y, [lmd, Z, [lmd, W, [and, [app, [app, Y, Z], W], [app, [app, X, Z], W]]]]]]). % Habria que hacer reglas similares para otras personas y numeros: % f(s(F)), t(p(F)), f(p(F)). Los sujetos coinciden en persona y % numero, pero no en genero. lex([or], ( ( s(t(s(F))) / ( n(t(s(F))) bs s(t(s(F))) ) ) bs ( s(t(s(G))) / ( n(t(s(G))) bs s(t(s(G))) ) ) ) / ( s(t(s(H))) / ( n(t(s(H))) bs s(t(s(H))) ) ), [lmd, X, [lmd, Y, [lmd, Z, [or, [app, Y, Z], [app, X, Z]]]]]). lex([or], ( ( ( s(_) / pp(_) ) / n(_) ) bs ( ( s(_) / pp(_) ) / n(_) ) ) / ( ( s(_) / pp(_) ) / n(_) ), [lmd, X, [lmd, Y, [lmd, Z, [lmd, W, [or, [app, [app, Y, Z], W], [app, [app, X, Z], W] ] ] ] ] ]).