Logica e Sistemi Informatici, II parte – luglio 2013
1. Definire un predicato Prolog assocmin(+L,?E) che ha successo quando L è una lista di
coppie L = [(n1 ,e1 ),(n2 ,e2 ),...], dove i primi elmenti delle coppie ni sono numeri, ed E
è uno degli ei associati al minimo valore ni . Ad esempio, assocmin([(3,a),(2,b),(4,c),
(2,d)],E) avrà successo con E=b o E=d (ovviamente, quando il secondo argomento è una
variabile, verrà istanziato ad un valore appropriato).
2. Si consideri un dominio in cui diversi robot possono raccogliere oggetti dal pavimento, poggiarli sul pavimento, metterli dentro delle scatole e toglierveli. Le azioni possibili sono
raccogli(r, x) (il robot r prende in mano l’oggetto x che sta per terra; ciascun robot può
tenere in mano un unico oggetto alla volta), lascia(r, x) (il robot r lascia sul pavimento
l’oggetto x che ha in mano; il pavimento non ha limiti di spazio); metti(r, x, b) (il robot r
mette nella scatola b l’oggetto x che ha in mano; le scatole non hanno limiti di capienza) e
togli(r, x, b) (il robot r tira fuori dalla scatola b l’oggetto x).
(a) Determinare i fluenti e gli eventuali predicati statici per la rappresentazione del dominio,
descrivendo il significato di ciascuno di essi.
(b) Scrivere (in Prolog) l’assioma delle precondizioni per l’azione metti(r, x, b).
(c) Scrivere (in Prolog) l’assioma dello stato successore per il fluente che rappresenta il fatto
che il robot r ha in mano l’oggetto x.
(d) Definire una procedura GOLOG che, quando eseguita, colloca tutti gli oggetti dentro
qualche scatola. La procedura ha successo anche quando inizialmente il tutti gli oggetti
sono già inscatolati.
3. Si consideri la formula F = 2(¬p ∨ 3q).
(a) Sviluppare un tableau completo per F e caratterizzarne l’insieme dei cammini aperti.
Numerare i nodi del tableau e usare la stessa numerazione al punto successivo.
(b) Determinare un automa di Büchi che corrisponda a F (che cioè accetti tutti e soli i
modelli di F ). Rappresentare graficamente l’automa, evidenziando l’insieme degli stati
di accettazione. Identificare un’esecuzione accettante dell’automa e una parola letta da
tale esecuzione.
4. Sia P = {p, q} e Σ l’insieme di tutti gli insiemi di assegnazioni proposizionali per P (Σ =
P
22 ) – si ricordi che un insieme di assegnazioni corrisponde a una formula. Siano inoltre
A0 = (S0 , ∆0 , I0 , L0 , Σ, F0 ) e A1 = (S1 , ∆1 , I1 , L1 , Σ, F1 ) due automi sullo stesso alfabeto Σ,
dove:
S0 = {a, b}
∆0 = {(a, b), (b, b)}
I0 = {a}
F0 = {b}
L0 (a) = p ∨ q, L0 (b) = ¬p
S1 = {1, 2, 3}
∆1 = {(1, 1), (1, 2), (2, 1), (2, 3), (3, 3)}
I1 = {1, 2}
F1 = {2, 3}
L1 (1) = ¬p, L1 (2) = q, L1 (3) = p
(a) Rappresentare graficamente gli automi A0 e A1 ; costruire l’automa intersezione B =
(S, ∆, I, L, Σ, F ) di A0 e A1 , dandone la rappresentazione grafica. Determinare se il
linguaggio accettato da B è vuoto o no, e, se non è vuoto, fornire un esempio di esecuzione
accettante e una parola letta da tale esecuzione.
(b) Se l’automa A0 rappresenta un sistema e A1 è l’automa che accetta tutte e solo le parole
che rappresentano i contromodelli di una data formula F della logica LTL (A1 è l’automa
che rappresenta ¬F ), cosa si può dedurre dalla costruzione del punto precedente?
(c) Ricordando che automi etichettati da formule (nel linguaggio P ) sono rappresentazioni compatte di automi sull’alfabeto Σ0 = 2P (insieme di tutti i sottoinsiemi di P ),
rappresentare graficamente l’automa sull’alfabeto Σ0 corrispondente a A0 .
Scarica

Logica e Sistemi Informatici, II parte – luglio 2013 1. Definire un