20.06.2013 Visualizzazioni

Complessit`a Logica del primo ordine

Complessit`a Logica del primo ordine

Complessit`a Logica del primo ordine

SHOW MORE
SHOW LESS

Trasformi i suoi PDF in rivista online e aumenti il suo fatturato!

Ottimizzi le sue riviste online per SEO, utilizza backlink potenti e contenuti multimediali per aumentare la sua visibilità e il suo fatturato.

Complessità<br />

La procedura sopra descritta è esponenziale nella dimensione <strong>del</strong>la formula (o<br />

meglio nel numero dei simboli di proposizione distinti che occorrono in essa).<br />

Si può fare di meglio?<br />

È possibile trovare algoritmi polinomiali per T AUT e SAT ?<br />

Si può dimostrare che<br />

• SAT è NP-Completo<br />

• T AUT è CoNP-completo<br />

M. Lenzerini Richiami di logica 18<br />

<strong>Logica</strong> <strong>del</strong> <strong>primo</strong> <strong>ordine</strong><br />

In logica proposizionale il mondo è rappresentato da un insieme di fatti<br />

elementari.<br />

La logica <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> assume che nel mondo vi siano:<br />

• Oggetti: persone, case, numeri, teorie, colori, partite, aula1, ...<br />

• Predicati o relazioni: rosso, <strong>primo</strong>, corrotto. . .,<br />

fratello di, più grande di, dentro a, parte di, accaduto dopo di, possiede,<br />

precede, ...<br />

• Funzioni: padre di, secondo tempo di, inizio di ...<br />

M. Lenzerini Richiami di logica 19


Il linguaggio: i simboli logici<br />

Un linguaggio <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> L1 è costruito sui seguenti insiemi di simboli:<br />

Simboli Logici<br />

• I connettivi proposizionali: ¬,∧,∨, → e ↔<br />

• Le costanti proposizionali ⊤ e ⊥<br />

• Il simbolo di uguaglianza =, eventualmente assente<br />

• I simboli separatori ‘(’, ‘)’ e ‘,’<br />

• Un’infinità numerabile di simboli di variabile individuale x1, x2, ...<br />

• Il simbolo di quantificazione universale ∀<br />

• Il simbolo di quantificazione esistenziale ∃<br />

M. Lenzerini Richiami di logica 20<br />

Parametri<br />

Il linguaggio: i parametri<br />

• Un insieme finito o numerabile di simboli di predicato, ognuno dei quali ha<br />

associato un intero positivo n detto arità. Un predicato di arità n è detto<br />

n-ario;<br />

• Un insieme finito o numerabile di simboli di funzione, ognuno dei quali ha<br />

associato un intero positivo detto arità. Una funzione di arità n è detta<br />

n-aria;<br />

• Un insieme finito o numerabile di simboli di costante, ciascuno dei quali può<br />

essere considerato un simbolo di funzione di arità 0.<br />

M. Lenzerini Richiami di logica 21


Il linguaggio puro dei predicati:<br />

Uguaglianza: assente;<br />

Esempi – 1<br />

Simboli di predicato n-ari: P n<br />

1 ,Pn<br />

2 ,...;<br />

Simboli di costante: c1,c2,...;<br />

Simboli di funzione n-ari, n>0: nessuno.<br />

Il linguaggio <strong>del</strong>la teoria degli insiemi:<br />

Uguaglianza: presente;<br />

Simboli di predicato: un simbolo di predicato binario ∈;<br />

Simboli di costante: ∅;<br />

Simboli di funzione n-ari, n>0: nessuno.<br />

M. Lenzerini Richiami di logica 22<br />

Esempi – 2<br />

Il linguaggio <strong>del</strong>la teoria elementare dei numeri:<br />

Uguaglianza: presente;<br />

Simboli di predicato: un simbolo di predicato binario


Esempi di formule ben formate<br />

Alcuni medici sono arroganti<br />

Tutti gli operai faticano<br />

a) ∃x(Medico(x) ∧ Arrogante(x))<br />

b) ∀x(Operaio(x) → F atica(x))<br />

Tutti i pasticcieri sanno fare la pasta frolla<br />

Tutti i cuochi eccellono in almeno un piatto<br />

c) ∀x(P asticciere(x) → SaF are(x, pastafrolla))<br />

d) ∀x(Cuoco(x) →∃y(P iatto(y) ∧ Eccelle(x, y)))<br />

M. Lenzerini Richiami di logica 24<br />

Termini<br />

L’insieme Term dei termini di L1 è definito induttivamente come segue:<br />

1. Ogni simbolo di costante e di variabile è un termine;<br />

2. Se t1 ...tn sono termini e f è un simbolo di funzione n-aria, allora<br />

f(t1,...,tn) è un termine (detto termine funzionale).<br />

Esempi: x, c, f(x, y + c),. . .<br />

M. Lenzerini Richiami di logica 25


Formule atomiche<br />

L’insieme Atom degli atomi o formule atomiche è definito induttivamente come<br />

segue:<br />

1. ⊥ e ⊤ sono atomi;<br />

2. Se t1 e t2 sono termini, allora t1 = t2 è un atomo;<br />

3. Se t1,...,tn sono termini e P è un simbolo di predicato n-ario, allora<br />

P (t1,...,tn) è un atomo.<br />

Esempi: P (x), Q(x, c), R(x, f(x, y + c)),. . .<br />

M. Lenzerini Richiami di logica 26<br />

Termini:<br />

Esempi di termini e formule atomiche<br />

casaDi(Giovanni) batteriaDi(Miapolo)<br />

autoreDi(Divinacommedia)<br />

x + (2 × y) f(x, y, g(z, t + 3)) e −x<br />

Atomi:<br />

Grande(casaDi(Giovanni))<br />

P iuGrande(casaDi(Giovanni), casaDi(F ilippo))<br />

Scarica(batteriaDi(Miapolo))<br />

autoreDi(Divinacommedia) =P etrarca<br />

autoreDi(Divinacommedia) =Dante<br />

x + (2 × y) = 0 f(x, y, g(z, t + 3)) = f(x, y, w) e −x ≥ 0<br />

M. Lenzerini Richiami di logica 27


Formule<br />

L’insieme Form <strong>del</strong>le formule di L1 è definito induttivamente come segue:<br />

• Ogni atomo è una formula;<br />

• Se A è una formula, allora ¬A è una formula;<br />

• Se ◦ è un connettivo binario proposizionale, e A e B sono due formule,<br />

allora A ◦ B è una formula;<br />

• Se A è una formula, e x è una variabile, allora ∀xA e ∃xA sono formule.<br />

Esempi: P (x), ∃xQ(x, c), ∀zR(x, f(x, y + c)),. . .<br />

M. Lenzerini Richiami di logica 28<br />

Esempi di formule<br />

Grande(casaDi(Giovanni)) ∧<br />

P iuGrande(casaDi(Giovanni), casaDi(F ilippo))<br />

∀t Scarica(batteriaDi(Miapolo),t)<br />

∃x x= autoreDi(Divinacommedia) ∧ NatoA(F irenze, x)<br />

∀x x+ (2 × y) = 0 ¬(f(x, y, g(z, t + 3)) = f(x, y, w))<br />

∀x∃y ama(x, y) tutti amano qualcuno<br />

∀x∃y ama(y, x) tutti sono amati da qualcuno<br />

∃x∀y ama(x, y) esiste il grande amatore<br />

∃x∀y ama(y, x) qualcuno è amato da tutti<br />

M. Lenzerini Richiami di logica 29


Precedenza degli operatori<br />

La precedenza tra gli operatori logici è stabilita come segue:<br />

∀, ∃, ¬, ∧, ∨, →, ↔<br />

Come nel caso proposizionale, si assume che tutti gli operatori siano associativi<br />

a destra, e che si possa sempre scrivere una formula tra parentesi.<br />

Due modi di scrivere la stessa formula:<br />

∀xP (x) →∃y∃zQ(y, z) ∧ ¬∀xR(x)<br />

(∀x(P (x)) → ((∃y(∃zQ(y, z))) ∧ (¬(∀x(R(x)))))<br />

M. Lenzerini Richiami di logica 30<br />

Varianti di notazione<br />

Elemento di sintassi Noi Altri<br />

Negazione (not) ¬P ∼P P<br />

Congiunzione (and) P ∧ Q P &Q P · Q P Q P, Q<br />

Disgiunzione (or) P ∨ Q P | Q P; Q P + Q<br />

Implicazione (se) P → Q P ⊃ Q<br />

Universale (perOgni) ∀ xP (x) (∀x)P (x) xP(x)<br />

Esistenziale (esiste) ∃ xP (x) (∃x)P (x) xP(x)<br />

Relazione R(x, y) (R x y) Rxy xRy<br />

M. Lenzerini Richiami di logica 31


Variabili in termini e formule atomiche<br />

Denotiamo con var(t) l’insieme <strong>del</strong>le variabili di un termine t.<br />

Un termine od un atomo w si dice chiuso – ground – se non contiene variabili,<br />

cioè se var(w) =∅.<br />

Una occorrenza di una variabile x in una formula, si dice libera se non è nel<br />

campo di azione di un quantificatore, si dice vincolata o legata se non è libera.<br />

Esempi:<br />

P (x), ∃xQ(x, c), ∀zR(x, f(x, y + c)), ∀zR(x, f(x, y + c)) ∧ P (z),<br />

∀zR(x, f(x, y + c)) ∧∃zP(z), ∀z(R(x, f(x, y + c)) ∧ P (z))...<br />

Un enunciato – detto altrimenti formula chiusa – è una formula senza<br />

occorrenze libere di variabili.<br />

M. Lenzerini Richiami di logica 32<br />

Interpretazioni e mo<strong>del</strong>li<br />

Una interpretazione (o struttura) per il linguaggio L1 è una coppia M<br />

= 〈D, I〉 dove:<br />

• D è un insieme non vuoto chiamato dominio di M;<br />

• I è una funzione chiamata funzione d’interpretazione di M che associa:<br />

– ad ogni simbolo di costante c, un elemento c I ∈ D;<br />

– ad ogni simbolo di funzione n-aria f, una funzione f I : D n ↦→ D;<br />

– ad ogni simbolo di predicato n-ario P , una relazione n-aria P I ⊆ D n .<br />

M. Lenzerini Richiami di logica 33


Esempi<br />

∀x∃yP(x, y)<br />

D l’insieme degli esseri umani<br />

P I = l’insieme <strong>del</strong>le coppie 〈A, B〉, tale che B è padre di A<br />

Tutti gli esseri umani hanno un padre<br />

D l’insieme degli esseri umani<br />

P I′ l’insieme <strong>del</strong>le coppie 〈A, B〉, tale che B è madre di A<br />

Tutti gli esseri umani hanno una madre<br />

D l’insieme dei numeri naturali<br />

P J l’insieme <strong>del</strong>le coppie 〈m, n〉, tale che m < n<br />

Per ogni numero naturale ne esiste uno maggiore<br />

M. Lenzerini Richiami di logica 34<br />

Assegnazione a variabili in una interpretazione<br />

Sia V ar l’insieme <strong>del</strong>le variabili di un linguaggio <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> L1. Una<br />

assegnazione, oambiente, ostato <strong>del</strong>le variabili η per una interpretazione<br />

M = 〈D, I〉 è una funzione dall’insieme <strong>del</strong>le variabili V ar all’insieme D:<br />

η : V ar ↦→ D<br />

Un’assegnazione η per M rappresenta quindi un modo di associare un<br />

elemento di D (il dominio di M) alle variabili <strong>del</strong> linguaggio L1.<br />

Consideriamo nel seguito solo formule chiuse. Inoltre, se x è una variabile,<br />

scriveremo x η invece di η(x).<br />

M. Lenzerini Richiami di logica 35


Assegnazione a termini in una interpretazione<br />

Sia M = 〈D, I〉 una interpretazione per L1 e sia η una assegnazione per M.<br />

Estendiamo η ad una assegnazione η = 〈I,η〉 sui termini, ricorsivamente come<br />

segue:<br />

• per ogni variabile x, x I,η = x η ;<br />

• per ogni costante c, c I,η = c I ;<br />

• se t1,...,tn sono termini ed f è una funzione n-aria, allora<br />

f(t1,...,tn) I,η = f I (t I,η<br />

1 ,...,tI,η<br />

n ).<br />

Un’assegnazione η associa quindi un elemento <strong>del</strong> dominio ad ogni termine <strong>del</strong><br />

linguaggio L1, in modo coerente con η.<br />

M. Lenzerini Richiami di logica 36<br />

Valutazione di formule<br />

Data una interpretazione M = 〈D, I〉 ed una assegnazione η per M, è<br />

possibile valutare ogni formula <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> rispetto ad M ed η, dove la<br />

valutazione di una formula restituisce o 1 o 0.<br />

Diremo che una formula F è vera o soddisfatta in una intepretazione<br />

M = 〈D, I〉 ed una assegnazione η per M, e scriveremo<br />

〈M, η〉 |= F<br />

se la valutazione di F rispetto ad M ed η restituisce 1.<br />

M. Lenzerini Richiami di logica 37


Valutazione di formule<br />

Sia M = 〈D, I〉 una interpretazione ed η una assegnazione per M.<br />

1. 〈M, η〉 |= ⊤ e 〈M, η〉 |= ⊥<br />

2. Se F è una formula atomica <strong>del</strong> tipo P (t1,...,tn), allora<br />

〈M, η〉 |= P (t1,...,tn) se 〈t I,η<br />

1 ...t I,η<br />

n<br />

3. se F è una formula atomica <strong>del</strong> tipo t1 = t2 allora<br />

〈M, η〉 |= t1 = t2 se t I,η<br />

1<br />

4. 〈M, η〉 |= ¬F se 〈M, η〉 |= F<br />

= tI,η<br />

2<br />

5. 〈M, η〉 |= F ∧ G se 〈M, η〉 |= F e 〈M, η〉 |= G<br />

〉∈P I<br />

6. 〈M, η〉 |= F ∨ G se 〈M, η〉 |= F oppure 〈M, η〉 |= G<br />

M. Lenzerini Richiami di logica 38<br />

Valutazione di formule<br />

7. 〈M, η〉 |= (F → G) se 〈M, η〉 |= ¬F oppure 〈M, η〉 |= G<br />

8. 〈M, η〉 |= (F ↔ G) se (M, η) |= F → G e (M, η) |= G → F<br />

9. 〈M, η〉 |= ∀xF se per ogni d ∈ D si ha 〈M, η{x = d}〉 |= F<br />

10. 〈M, η〉 |= ∃xF se esiste d ∈ D tale che 〈M, η{x = d}〉 |= F<br />

dove<br />

η{x = d}<br />

denota l’assegnazione η ′ per M che coincide con η tranne che η ′ assegna ad x<br />

il valore d (indipendentemente da quello che η assegna a x). In altre parole,<br />

l’assegnazione η{x = d}, che si può anche scrivere come η[d/x], è definita così:<br />

⎧<br />

⎨ d se y = x<br />

η[d/x](y) =<br />

⎩ yη se y = x<br />

M. Lenzerini Richiami di logica 39


Valutazione di formule<br />

Si noti che se F è una formula chiusa, qualunque siano η1 ed η2, si ha che<br />

〈M, η1〉 |= F se e solo se 〈M, η2〉 |= F , se e solo se 〈M, ∅〉 |= F .<br />

Ne segue che se F è una formula chiusa, la valutazione di F è indipendente<br />

dall’assegnazione η.<br />

Nel seguito, scriveremo semplicemente M|= F nel caso in cui 〈M, ∅〉 |= F .<br />

M. Lenzerini Richiami di logica 40<br />

1. ∃x(P (x) ∧ Q(x))<br />

2. ∃x(P (x) → Q(x))<br />

Esempi – 1<br />

1. La formula è soddisfatta in M se esiste un d ∈ D per il quale è verificato<br />

che 〈M, η[d/x]〉 |= (P (x) ∧ Q(x)), ovvero se esiste un d ∈ D tale che<br />

d ∈ P I ∩ Q I . Quindi i sottoinsiemi di D associati da I a P e Q,<br />

rispettivamente, sono non vuoti ed hanno intersezione non vuota.<br />

2. La formula è soddisfatta in M se esiste un d ∈ D per il quale è verificato<br />

che 〈M, η[d/x]〉 |= (P (x) → Q(x)), ovvero se esiste un d ∈ D tale che<br />

d ∈ P I oppure d ∈ Q I .<br />

Si noti che se I associa a P il sottoinsieme vuoto di D, allora la formula<br />

∃x(P (x) → Q(x)) è resa vera addirittura da tutti gli elementi <strong>del</strong><br />

dominio.<br />

M. Lenzerini Richiami di logica 41


3. ∀x(P (x) ∧ Q(x))<br />

4. ∀x(P (x) → Q(x))<br />

Esempi – 2<br />

3. Sia P che Q hanno un’estensione non vuota, anzi entrambe coincidono con<br />

l’intero dominio D.<br />

4. L’estensione di P è contenuta in quella di Q, ma non si esclude affatto il<br />

caso in cui l’estensione di P sia vuota, né che entrambi P e Q abbiano<br />

un’estensione vuota.<br />

M. Lenzerini Richiami di logica 42<br />

Mo<strong>del</strong>li, validità, soddisfacibilità<br />

Sia F è una formula chiusa. Se M|= F diciamo che M è un mo<strong>del</strong>lo di F ,<br />

ovvero che F è vera in M, ovvero che M soddisfa F .<br />

Una formula F chiusa è valida se è vera in tutte le interpretazione di L1 e lo<br />

scriviamo |= F .<br />

Una formula chiusa F è soddisfacibile se esiste una interpretazione M tale che<br />

M|= F , ovvero se esiste un mo<strong>del</strong>lo di F . Un insieme Γ di formule chiuse è<br />

soddisfacibile se esiste una interpretazione M, tale che M|= F per ogni<br />

F ∈ Γ.<br />

La validità e la soddisfacilità non possono essere verificate semplicemente<br />

costruendo la tabella di verità!<br />

M. Lenzerini Richiami di logica 43


Implicazione logica, equivalenza<br />

Sia Γ un insieme di formule e F una formula chiusa. Allora Γ implica<br />

logicamente F , scritto Γ |= F , se per ogni interpretazione M <strong>del</strong> linguaggio, se<br />

M|= Γ (ovvero M|= B per ogni B ∈ Γ), allora M|= F .<br />

Due formule F e G si dicono logicamente equivalenti (scritto F ≡ G) se per<br />

tutte le interpretazioni M si ha che:<br />

M|= F se e solo se M|= G.<br />

Ad esempio sono logicamente equivalenti formule che differiscono solo per<br />

• il nome <strong>del</strong>le variabili quantificate<br />

∀xP (x) ≡∀yP(y)<br />

• l’<strong>ordine</strong> di quantificatori <strong>del</strong>lo stesso tipo<br />

∀x∀yP(x, y) ≡∀y∀xP (x, y) ≡∀x, yP (x, y)<br />

• l’eliminazione di quantificatori che non hanno occorrenze <strong>del</strong>la variabile<br />

quantificata nel campo d’azione<br />

∀xP (y) ≡ P (y)<br />

M. Lenzerini Richiami di logica 44<br />

Negazione:<br />

1. ∀xP ≡ ¬∃x¬P<br />

2. ¬∀xP ≡∃x¬P<br />

3. ∃xP ≡ ¬∀x¬P<br />

4. ¬∃xP ≡∀x¬P<br />

Equivalenza logica: proprietà<br />

I quantificatori sono distributivi rispetto a ∧ e ∨, ma con restrizioni:<br />

1. ∀x(P1 ∧ P2) ≡∀xP1 ∧∀xP2<br />

2. ∃x(P1 ∨ P2) ≡∃xP1 ∨∃xP2<br />

3. ∀x(P1 ∨ P2) ≡∀xP1 ∨ P2 se x ∈ var(P2)<br />

4. ∃x(P1 ∧ P2) ≡∃xP1 ∧ P2 se x ∈ var(P2).<br />

Sia P2 una formula in cui x non occorre libera<br />

1. ∀xP1 → P2 ≡∃x(P1 → P2)<br />

2. ∃xP1 → P2 ≡∀x(P1 → P2)<br />

3. P2 →∀xP1 ≡∃x(P2 → P1)<br />

4. P2 →∃xP1 ≡∀x(P2 → P1).<br />

M. Lenzerini Richiami di logica 45


Esercizio<br />

Rappresentare in un linguaggio puro (senza uguaglianza e senza simboli di<br />

funzione) <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> i seguenti enunciati:<br />

1 Se è vero che ogni avo di un avo di un individuo è anche avo <strong>del</strong>lo stesso<br />

individuo, allora deve esistere una persona che non ha avi<br />

2 Tutte le donne sono belle e qualche uomo è bello<br />

3 Il papà di Gennaro batte a scopone i papà di tutti i bambini <strong>del</strong> quartiere<br />

Santa Lucia<br />

M. Lenzerini Richiami di logica 46<br />

Esercizi<br />

Rappresentare in logica <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> le frasi:<br />

(1d) A, B e C sono cubi.<br />

A è su B, B è su C.<br />

A è verde e C non è verde.<br />

Tutti i cubi sono colorati.<br />

Un cubo è libero se non ci sono cubi sopra.<br />

(2d) I calciatori di successo sono bravi e fortunati.<br />

Francesco non è bravo e Mario non è fortunato.<br />

Giovanni è fortunato ma non è bravo.<br />

I fortunati sono ricchi.<br />

(3d) I bravi alpinisti sono prudenti<br />

Se uno non è sempre attento non è prudente<br />

Giorgio è un bravo alpinista<br />

M. Lenzerini Richiami di logica 47


Esercizio<br />

Considerare il seguente insieme di formule Σ<br />

Verificare se<br />

1. ∀x(Canarino(x) → Uccello(x))<br />

2. ∀x(Struzzo(x) → Uccello(x))<br />

3. ∀x(P assero(x) → Uccello(x)<br />

4. ∀x(Uccello(x) ∧ ¬Eccezione(x) → V ola(x))<br />

5. Canarino(titti) ∧ Struzzo(fred) ∧ P assero(alfredo)<br />

1. Σ |= V ola(alfredo)<br />

2. Σ |= ¬V ola(titti)<br />

3 Σ |= ¬(V ola(titti) ∧ V ola(fred))<br />

Rappresentare i mo<strong>del</strong>li di Σ, usando come dominio<br />

A = 〈{alfredo, titti, fred}, V ola, Uccello, Canarino . . .〉.<br />

M. Lenzerini Richiami di logica 48<br />

Compattezza e altro<br />

Teorema di compattezza<br />

Un insieme di enunciati Γ è soddisfacibile se e solo ogni suo sottoinsieme finito è<br />

soddisfacibile, ovvero, un insieme Γ di enunciati è insoddisfacibile se e solo se<br />

esiste un sottoinsieme finito ∆ ⊆ Γ che è insoddisfacibile.<br />

Il seguente teorema lega le nozioni di implicazione logica e di insoddisfacibilità:<br />

Γ |= F se e solo se Γ ∪ {¬F } è insoddisfacibile.<br />

Ne segue la compattezza <strong>del</strong>l’implicazione logica: Γ |= F se e solo se esiste un<br />

sottoinsieme finito Γ0 di Γ, tale che Γ0 |= F .<br />

Il seguente teorema di deduzione lega le nozioni di implicazione logica e di<br />

implicazione materiale:<br />

Γ |= F se e solo se |= Γ → F.<br />

M. Lenzerini Richiami di logica 49


Indecidibilità <strong>del</strong>la logica <strong>del</strong> <strong>primo</strong> <strong>ordine</strong><br />

La soddisfacibilità e l’implicazione logica in logica <strong>del</strong> <strong>primo</strong> <strong>ordine</strong> sono<br />

indecidibili. Ciò significa che non può esistere alcuna procedura effettiva che,<br />

dato un qualunque insieme finito di formule di L1, decida se esso è<br />

soddisfacibile o no (analoga considerazione vale per l’implicazione logica).<br />

Ovviamente, questo non esclude che vi possano essere dei casi particolari che<br />

sono decidibili. Ad esempio, la logica proposizionale (che è un caso particolare<br />

<strong>del</strong> <strong>primo</strong> <strong>ordine</strong>) è decidibile). Un altro esempio è la logica monadica <strong>del</strong> <strong>primo</strong><br />

<strong>ordine</strong>, in cui si hanno solo predicati di arità 1, e non si hanno simboli di<br />

funzione.<br />

M. Lenzerini Richiami di logica 50

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!