• Non ci sono risultati.

Fondamenti Logici dell’Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti Logici dell’Informatica"

Copied!
45
0
0

Testo completo

(1)

Fondamenti Logici dell’Informatica

Corso di Laurea Magistrale in Informatica Logica e Verifica

Ugo Dal Lago

Anno Accademico 2017-2018

(2)

La Verifica di Programmi e Sistemi — I

I In condizioni normali, i programmi e i sistemi hardware concorrenti e distribuiti non sono sottoposti a verifica, ma solo a testing.

I Quando, però, il sistema in questione è mission critical, ossia le conseguenze di un suo eventuale malfunzionamento risulterebbero devastanti, si può ricorrere ad una parziale o totale verifica.

I Esempi di sistemi mission critical:

I Avionica.

I Centrali Nucleari.

I Transazioni Bancarie.

I Ma cosa significa verificare la correttezza di un sistema?

I Data la descrizione di un sistema S e una proprietà P che descriva il comportamento atteso, occorre verificare che S effettivamente soddisfi P .

(3)

La Verifica di Programmi e Sistemi — I

I In condizioni normali, i programmi e i sistemi hardware concorrenti e distribuiti non sono sottoposti a verifica, ma solo a testing.

I Quando, però, il sistema in questione è mission critical, ossia le conseguenze di un suo eventuale malfunzionamento risulterebbero devastanti, si può ricorrere ad una parziale o totale verifica.

I Esempi di sistemi mission critical:

I Avionica.

I Centrali Nucleari.

I Transazioni Bancarie.

I Ma cosa significa verificare la correttezza di un sistema?

I Data la descrizione di un sistema S e una proprietà P che descriva il comportamento atteso, occorre verificare che S effettivamente soddisfi P .

(4)

La Verifica di Programmi e Sistemi — I

I In condizioni normali, i programmi e i sistemi hardware concorrenti e distribuiti non sono sottoposti a verifica, ma solo a testing.

I Quando, però, il sistema in questione è mission critical, ossia le conseguenze di un suo eventuale malfunzionamento risulterebbero devastanti, si può ricorrere ad una parziale o totale verifica.

I Esempi di sistemi mission critical:

I Avionica.

I Centrali Nucleari.

I Transazioni Bancarie.

I Ma cosa significa verificare la correttezza di un sistema?

I Data la descrizione di un sistema S e una proprietà P che descriva il comportamento atteso, occorre verificare che S effettivamente soddisfi P .

(5)

La Verifica di Programmi e Sistemi — I

I In condizioni normali, i programmi e i sistemi hardware concorrenti e distribuiti non sono sottoposti a verifica, ma solo a testing.

I Quando, però, il sistema in questione è mission critical, ossia le conseguenze di un suo eventuale malfunzionamento risulterebbero devastanti, si può ricorrere ad una parziale o totale verifica.

I Esempi di sistemi mission critical:

I Avionica.

I Centrali Nucleari.

I Transazioni Bancarie.

I Ma cosa significa verificare la correttezza di un sistema?

I Data la descrizione di un sistema S e una proprietà P che descriva il comportamento atteso, occorre verificare che S effettivamente soddisfi P .

(6)

La Verifica di Programmi e Sistemi — II

I L’informatica si è interessata fin dalla sua nascita al problema della verifica di correttezza di programmi e sistemi.

I Cosa succede se si insiste sul fatto che la verifica debba essere fatta in modo automatico?

I Quasi sempre lo scenario è rappresentabile come segue:

S

F A

o ∈ {yes, no, maybe}

I Il fatto che tra le possibili risposte di A ci sia anche maybe dipende dal fatto che il problema di verificare se S soddisfa P è spesso indecidibile.

I In tal caso non si può fare altro che risolvere un’approssimazione del problema.

(7)

La Verifica di Programmi e Sistemi — II

I L’informatica si è interessata fin dalla sua nascita al problema della verifica di correttezza di programmi e sistemi.

I Cosa succede se si insiste sul fatto che la verifica debba essere fatta in modo automatico?

I Quasi sempre lo scenario è rappresentabile come segue:

S

F A

o ∈ {yes, no, maybe}

I Il fatto che tra le possibili risposte di A ci sia anche maybe dipende dal fatto che il problema di verificare se S soddisfa P è spesso indecidibile.

I In tal caso non si può fare altro che risolvere un’approssimazione del problema.

(8)

La Verifica di Programmi e Sistemi — II

I L’informatica si è interessata fin dalla sua nascita al problema della verifica di correttezza di programmi e sistemi.

I Cosa succede se si insiste sul fatto che la verifica debba essere fatta in modo automatico?

I Quasi sempre lo scenario è rappresentabile come segue:

S

F A

o ∈ {yes, no, maybe}

I Il fatto che tra le possibili risposte di A ci sia anche maybe dipende dal fatto che il problema di verificare se S soddisfa P è spesso indecidibile.

I In tal caso non si può fare altro che risolvere un’approssimazione del problema.

(9)

Il Model Checking

I Nel model checking, si fa verifica considerando la proprietà P come una formula di una opportuna logica e il sistema come un’interpretazione per essa.

I Graficamente:

S F

A

o ∈ {yes, no, maybe}

S |= F ?

I Bisogna però capire:

I In che senso un sistema o programma possa essere visto come un’interpretazione.

I Quale sia la logica adatta a specificare le proprietà d’interesse.

(10)

Il Model Checking

I Nel model checking, si fa verifica considerando la proprietà P come una formula di una opportuna logica e il sistema come un’interpretazione per essa.

I Graficamente:

S F

A

o ∈ {yes, no, maybe}

S |= F ?

I Bisogna però capire:

I In che senso un sistema o programma possa essere visto come un’interpretazione.

I Quale sia la logica adatta a specificare le proprietà d’interesse.

(11)

Il Model Checking

I Nel model checking, si fa verifica considerando la proprietà P come una formula di una opportuna logica e il sistema come un’interpretazione per essa.

I Graficamente:

S F

A

o ∈ {yes, no, maybe}

S |= F ?

I Bisogna però capire:

I In che senso un sistema o programma possa essere visto come un’interpretazione.

I Quale sia la logica adatta a specificare le proprietà d’interesse.

(12)

Il Model Checking

I Nel model checking, si fa verifica considerando la proprietà P come una formula di una opportuna logica e il sistema come un’interpretazione per essa.

I Graficamente:

S F

A

o ∈ {yes, no, maybe}

S |= F ?

I Bisogna però capire:

I In che senso un sistema o programma possa essere visto come un’interpretazione.

I Quale sia la logica adatta a specificare le proprietà d’interesse.

(13)

Le Strutture di Kripke

I Supponiamo che AP sia un insieme di proposizioni atomiche, che catturino le proprietà di interesse di uno stato, magari astraendo sullo stato stesso.

I Una struttura di Kripke su AP è una quadrupla M = (S, S0, R, L) dove:

I S è un insieme di stati.

I S0⊆ S è l’insieme degli stati iniziali.

I R ⊆ S × S è la relazione di transizione, che supponiamo totale: per ogni s ∈ S esiste t ∈ S con (s, t) ∈ R.

I L : S → P(AP ) è una funzione di etichettatura.

I L’insieme degli stati si suppone spesso essere finito, questo per garantire la decidibilità.

I La funzione di etichettatura ha il ruolo di dire quale proposizione atomiche valgono in ogni stato.

(14)

Le Strutture di Kripke

I Supponiamo che AP sia un insieme di proposizioni atomiche, che catturino le proprietà di interesse di uno stato, magari astraendo sullo stato stesso.

I Una struttura di Kripke su AP è una quadrupla M = (S, S0, R, L) dove:

I S è un insieme di stati.

I S0⊆ S è l’insieme degli stati iniziali.

I R ⊆ S × S è la relazione di transizione, che supponiamo totale: per ogni s ∈ S esiste t ∈ S con (s, t) ∈ R.

I L : S → P(AP ) è una funzione di etichettatura.

I L’insieme degli stati si suppone spesso essere finito, questo per garantire la decidibilità.

I La funzione di etichettatura ha il ruolo di dire quale proposizione atomiche valgono in ogni stato.

(15)

Le Strutture di Kripke

I Supponiamo che AP sia un insieme di proposizioni atomiche, che catturino le proprietà di interesse di uno stato, magari astraendo sullo stato stesso.

I Una struttura di Kripke su AP è una quadrupla M = (S, S0, R, L) dove:

I S è un insieme di stati.

I S0⊆ S è l’insieme degli stati iniziali.

I R ⊆ S × S è la relazione di transizione, che supponiamo totale: per ogni s ∈ S esiste t ∈ S con (s, t) ∈ R.

I L : S → P(AP ) è una funzione di etichettatura.

I L’insieme degli stati si suppone spesso essere finito, questo per garantire la decidibilità.

I La funzione di etichettatura ha il ruolo di dire quale proposizione atomiche valgono in ogni stato.

(16)

Programmi Concorrenti come Strutture

I Consideriamo il seguente programma concorrente:

(`1 : x ← 0 ; `2: y ← 1) || (`3: y ← 0 ; `4 : x ← 1)

I L’insieme degli stati di questo programma può essere visto come l’insieme

{`1, `2, •} × {`3, `4, •} × {0, 1} × {0, 1}

mentre l’unico stato iniziale potrebbe essere (`1, `3, 1, 1).

I La relazione di transizione corrisponde a quella intuitiva, ed è costruita usando il principio dell’interleaving.

(17)

Programmi Concorrenti come Strutture

(`

1

, `

3

, 1, 1) (`

2

, `

3

, 0, 1)

(`

1

, `

4

, 1, 0)

(`

2

, `

4

, 0, 0) (`

1

, •, 1, 0) (•, `

3

, 0, 1)

(`

2

, •, 0, 0) (•, •, 0, 1)

(•, `

4

, 0, 0) (•, •, 1, 0)

(•, `

4

, 0, 1) (`

2

, •, 1, 0) (•, •, 1, 1)

(•, •, 1, 1)

(18)

Programmi Concorrenti come Strutture

I L’insieme AP potrebbe per esempio contenere le seguenti proposizioni:

I Una proposizione chiamata null, che modella il fatto che entrambe le variabili x e y valgono 0.

I Una proposizione chiamata stop, che modella la terminazione del programma.

I Fromalmente,

I null ∈ L(S) se e solo se le ultime due componenti di S sono entrambe 0.

I stop ∈ L(S) se e solo se le prime due componenti di S sono entrambe •.

I Ciò non toglie che AP possa contenere anche tante altre proposizioni atomiche, come per esempio x = 0, y = 1, `1, il cui significato è intuitivo.

(19)

Programmi Concorrenti come Strutture

I L’insieme AP potrebbe per esempio contenere le seguenti proposizioni:

I Una proposizione chiamata null, che modella il fatto che entrambe le variabili x e y valgono 0.

I Una proposizione chiamata stop, che modella la terminazione del programma.

I Fromalmente,

I null ∈ L(S) se e solo se le ultime due componenti di S sono entrambe 0.

I stop ∈ L(S) se e solo se le prime due componenti di S sono entrambe •.

I Ciò non toglie che AP possa contenere anche tante altre proposizioni atomiche, come per esempio x = 0, y = 1, `1, il cui significato è intuitivo.

(20)

Programmi Concorrenti come Strutture

I L’insieme AP potrebbe per esempio contenere le seguenti proposizioni:

I Una proposizione chiamata null, che modella il fatto che entrambe le variabili x e y valgono 0.

I Una proposizione chiamata stop, che modella la terminazione del programma.

I Fromalmente,

I null ∈ L(S) se e solo se le ultime due componenti di S sono entrambe 0.

I stop ∈ L(S) se e solo se le prime due componenti di S sono entrambe •.

I Ciò non toglie che AP possa contenere anche tante altre proposizioni atomiche, come per esempio x = 0, y = 1, `1, il cui significato è intuitivo.

(21)

Come Speficare Proprietà di Sistemi?

I Un’idea ovvia e anche abbastanza interessante consiste nell’utilizzare come linguaggio in cui specificare le proprietà dei sistemi nient’altro che la logica proposizionale in cui le proposizioni atomiche sono gli atomi.

I In questo modo possiamo parlare del sistema in senso statico, ossia della struttura di Kripke e di un suo stato.

I Ad esempio potremmo concludere che:

M, (`1, `3, 0, 0) |= null ∧ ¬stop M, (•, •, 1, 1) |= null → stop

I Al limite, si potrebbe per esempio scrivere M |= F se solo se M, S |= F per ogni S ∈ S0.

I Manca però completamente l’aspetto dinamico. Come esprimere proprietà relative all’evoluzione del sistema?

I Ad esempio: reachability, safety, etc.

(22)

Come Speficare Proprietà di Sistemi?

I Un’idea ovvia e anche abbastanza interessante consiste nell’utilizzare come linguaggio in cui specificare le proprietà dei sistemi nient’altro che la logica proposizionale in cui le proposizioni atomiche sono gli atomi.

I In questo modo possiamo parlare del sistema in senso statico, ossia della struttura di Kripke e di un suo stato.

I Ad esempio potremmo concludere che:

M, (`1, `3, 0, 0) |= null ∧ ¬stop M, (•, •, 1, 1) |= null → stop

I Al limite, si potrebbe per esempio scrivere M |= F se solo se M, S |= F per ogni S ∈ S0.

I Manca però completamente l’aspetto dinamico. Come esprimere proprietà relative all’evoluzione del sistema?

I Ad esempio: reachability, safety, etc.

(23)

Come Speficare Proprietà di Sistemi?

I Un’idea ovvia e anche abbastanza interessante consiste nell’utilizzare come linguaggio in cui specificare le proprietà dei sistemi nient’altro che la logica proposizionale in cui le proposizioni atomiche sono gli atomi.

I In questo modo possiamo parlare del sistema in senso statico, ossia della struttura di Kripke e di un suo stato.

I Ad esempio potremmo concludere che:

M, (`1, `3, 0, 0) |= null ∧ ¬stop M, (•, •, 1, 1) |= null → stop

I Al limite, si potrebbe per esempio scrivere M |= F se solo se M, S |= F per ogni S ∈ S0.

I Manca però completamente l’aspetto dinamico. Come esprimere proprietà relative all’evoluzione del sistema?

I Ad esempio: reachability, safety, etc.

(24)

Logiche Temporali

I Le logiche temporali possono essere viste come estensioni della logica proposizionale ottenute dotando quest’ultima di operatori modali che permettano di esprimere:

I In che senso una formula vale nel futuro.

I Il fatto che certe formule valgano in alcune esecuzioni nondeterministiche, oppure in tutte.

I Operatori Temporali

I Potremmo per esempio voler dire che una certa formula F vale ora e rimane valida nel futuro, e in tal caso scriviamo (G F ).

I Altra cosa è dire che una certa formula F vale dopo la prossima transizione di stato, formalmente (X F ).

I Infine, potremmo voler dire che una formula F vale in un certo istante inefinito del futuro, formalmente (F F ).

I Quantificatori sui Cammini

I Potremmo voler dire che una formula F vale

indipendentemente dal nondeterminismo, oppure che vale per almeno una scelta nondeterministica. Scriveremo, rispettivemente, A F e E F .

(25)

La Logica Temporale CTL

: Sintassi

I Gli operatori temporali producono formule da valutare su cammini di esecuzione, mentre i quantificatori sui cammini vengono valutati su stati.

I Formule di Stato su AP .

FS, GS ::= P

|

FS∧GS

|

FS∨GS

|

¬FS

|

E FP

|

A FP. dove P è una proposizione atomica in AP .

I Formule di Cammino su AP .

FP, GP ::=FS

|

FP ∧ GP

|

FP ∨ GP

|

¬GP

|

X FP

|

F FP

|

G FP

|

FP U GP

|

FP R GP

(26)

La Logica Temporale CTL

: Sintassi

I Gli operatori temporali producono formule da valutare su cammini di esecuzione, mentre i quantificatori sui cammini vengono valutati su stati.

I Formule di Stato su AP .

FS, GS ::= P

|

FS∧GS

|

FS∨GS

|

¬FS

|

E FP

|

A FP. dove P è una proposizione atomica in AP .

I Formule di Cammino su AP .

FP, GP ::=FS

|

FP ∧ GP

|

FP ∨ GP

|

¬GP

|

X FP

|

F FP

|

G FP

|

FP U GP

|

FP R GP

(27)

La Logica Temporale CTL

: Semantica

I Un cammino π in un struttura di Kripke

M = (S, S0, R, L) è una sequenza infinita di stati

s0s1s2. . . ∈ Sω tale che (sn, sn+1) ∈ R per ogni naturale n.

I Dato un cammino π e un naturale n, indicheremo con πn l’n-esimo suffisso di π, anch’esso cammino.

I Una formula di stato FS su AP è vera in una struttura di Kripke M su AP e in uno stato s di M. In tal caso scriveremo

M, s |= FS.

I Una formula di cammino FP su AP è vera in una struttura di Kripke M su AP e in un cammino π in M. In tal caso scriveremo

M, π |= FP.

(28)

La Logica Temporale CTL

: Semantica

I Un cammino π in un struttura di Kripke

M = (S, S0, R, L) è una sequenza infinita di stati

s0s1s2. . . ∈ Sω tale che (sn, sn+1) ∈ R per ogni naturale n.

I Dato un cammino π e un naturale n, indicheremo con πn l’n-esimo suffisso di π, anch’esso cammino.

I Una formula di stato FS su AP è vera in una struttura di Kripke M su AP e in uno stato s di M. In tal caso scriveremo

M, s |= FS.

I Una formula di cammino FP su AP è vera in una struttura di Kripke M su AP e in un cammino π in M. In tal caso scriveremo

M, π |= FP.

(29)

La Logica Temporale CTL

: Semantica

I Un cammino π in un struttura di Kripke

M = (S, S0, R, L) è una sequenza infinita di stati

s0s1s2. . . ∈ Sω tale che (sn, sn+1) ∈ R per ogni naturale n.

I Dato un cammino π e un naturale n, indicheremo con πn l’n-esimo suffisso di π, anch’esso cammino.

I Una formula di stato FS su AP è vera in una struttura di Kripke M su AP e in uno stato s di M. In tal caso scriveremo

M, s |= FS.

I Una formula di cammino FP su AP è vera in una struttura di Kripke M su AP e in un cammino π in M. In tal caso scriveremo

M, π |= FP.

(30)

CTL

: Semantica delle Formule di Stato

I I connettivi ¬, ∧ e ∨ sono interpretati in modo standard.

I Le proposizioni atomiche si interpretano facendo riferimento alla struttura di Kripke:

(S, S0, R, L), s |= P se e solo se P ∈ L(s).

I I quantificatori sui cammini fanno ovviamente riferimento alla semantica delle formule di cammino:

M, s |= (E FP) sse M, π |= FP

per almeno un cammino π che inizi in s;

M, s |= (A FP) sse M, π |= FP

per tutti i cammini π che iniziano in s.

(31)

CTL

: Semantica delle Formule di Cammino

I I connettivi ¬, ∧ e ∨ sono interpretati in modo standard.

I Le formule di stato si valutano nel primo stato del cammino:

M, π |= FS sse M, s |= FS.

I I quantificatori sui cammini fanno ovviamente riferimento alla semantica delle formule di cammino:

M, π |= (X FP) sse M, π1|= FP

M, π |= (F FP) sse M, πi |= FP per almeno un i; M, π |= (G FP) sse M, πi|= FP per tutti gli i; M, π |= (FP U GP) sse esiste k naturale

con M, πk |= GP e M, πj |= FP per ogni 0 ≤ j < k; M, π |= (FP R GP) sse per ogni j naturale,

se per ogni i < j, M, πi 6|= FP, allora M, πj |= GP.

(32)

CTL

: Semantica delle Formule di Cammino

I I connettivi ¬, ∧ e ∨ sono interpretati in modo standard.

I Le formule di stato si valutano nel primo stato del cammino:

M, π |= FS sse M, s |= FS.

I I quantificatori sui cammini fanno ovviamente riferimento alla semantica delle formule di cammino:

M, π |= (X FP) sse M, π1|= FP

M, π |= (F FP) sse M, πi |= FP per almeno un i;

M, π |= (G FP) sse M, πi|= FP per tutti gli i;

M, π |= (FP U GP) sse esiste k naturale

con M, πk|= GP e M, πj |= FP per ogni 0 ≤ j < k;

M, π |= (FP R GP) sse per ogni j naturale,

se per ogni i < j, M, πi 6|= FP, allora M, πj |= GP.

(33)

Due Frammenti di CTL

I La Logica CTL.

I Ogni operatore temporale deve essere immediatamente preceduto da un quantificatore sui cammini.

I In altre parole, la grammatica per le formule di cammino diventa molto più semplice:

FP, GP ::= X FS

|

F FS

|

G FS

|

FS U GS

|

FS R GS

I La Logica LTL.

I Le uniche formule considerate sono le formule di cammino, che però vengono implicitamente quantificate con il quantificatore A ·.

I In altre parole, le formule diventano:

FP, GP ::=P

|

FP∧ GP

|

FP ∨ GP

|

¬FP

|

X FP

|

F FP

|

G FP

|

FP U GP

|

FP R GP

(34)

Due Frammenti di CTL

I La Logica CTL.

I Ogni operatore temporale deve essere immediatamente preceduto da un quantificatore sui cammini.

I In altre parole, la grammatica per le formule di cammino diventa molto più semplice:

FP, GP ::= X FS

|

F FS

|

G FS

|

FS U GS

|

FS R GS I La Logica LTL.

I Le uniche formule considerate sono le formule di cammino, che però vengono implicitamente quantificate con il quantificatore A ·.

I In altre parole, le formule diventano:

FP, GP ::=P

|

FP∧ GP

|

FP ∨ GP

|

¬FP

|

X FP

|

F FP

|

G FP

|

FP U GP

|

FP R GP

(35)

Il Problema del Model Checking

I Model Checking Universale.

I Data una struttura di Kripke M = (S, S0, R, L) e una formula di stato FS, determinare se M, s |= FS per ogni s ∈ S0.

I Model Checking Esistenziale

I Data una struttura di Kripke M = (S, S0, R, L) e una formula di stato FS, determinare se esiste s ∈ S0con M, s |= FS.

Teorema

I problemi del model checking universale e esistenziale sono PSPACE-completi per CTL.

(36)

Il Problema del Model Checking

I Model Checking Universale.

I Data una struttura di Kripke M = (S, S0, R, L) e una formula di stato FS, determinare se M, s |= FS per ogni s ∈ S0.

I Model Checking Esistenziale

I Data una struttura di Kripke M = (S, S0, R, L) e una formula di stato FS, determinare se esiste s ∈ S0con M, s |= FS.

Teorema

I problemi del model checking universale e esistenziale sono PSPACE-completi per CTL.

(37)

Il Problema del Model Checking

I Model Checking Universale.

I Data una struttura di Kripke M = (S, S0, R, L) e una formula di stato FS, determinare se M, s |= FS per ogni s ∈ S0.

I Model Checking Esistenziale

I Data una struttura di Kripke M = (S, S0, R, L) e una formula di stato FS, determinare se esiste s ∈ S0con M, s |= FS.

Teorema

I problemi del model checking universale e esistenziale sono PSPACE-completi per CTL.

(38)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

(39)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

EX P

(40)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

AX P

(41)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

AF P

(42)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

AG P

(43)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

EG P

(44)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

A(P U Q)

(45)

Esempi

P

P P Q

P

P, Q P, Q

P

P, Q

P

P P P Q P P P

E(P U Q)

Riferimenti

Documenti correlati

Invece N non ha limite superiore: non c’` e nessun numero naturale che ` e diviso da tutti gli

I Questo è un corso pensato per gli studenti del primo anno della Laurea Magistrale in Informatica.. I Può anche essere seguito da studenti di altri corsi di laurea che abbiano

I Per dare concretezza alla complessità descrittiva, occorre prima di tutto capire come le interpretazioni possano essere descritte in modo compatto.. I Supponiamo di lavorare

I Nel momento in cui progettiamo un linguaggio per scrivere query, quindi, dovremmo essere sicuri che, almeno, le query possano avere questa semantica?. I Domanda importante:

Per i datori di lavoro che hanno presentato richiesta di assunzione al lavoro domestico (attraverso il decreto flussi nel dicembre 2007) e sono ancora in

Lo scopo di questa ricerca consiste nell’identificare l’elemento materiale del delitto di traffico di in- fluenze illecite. Per tale ragione, essa esamina in primo

- di non avere in corso procedimenti penali pendenti collegati ad inadempienze nell’ambito della propria attività, per effetto dei quali ne possa conseguire

Giusto in Canniccio, a Campo D'Olmo, e la metà di due pezzi di terra pratata posti nei confini del comune di Orticaria, per il prezzo di 100 fiorini d'oro e 10 lire. La vendita