Goal: Find consequences with minimal number of clues.
Clues?
| Penne | Farfall | spirelli | Arrabi | Bologn | Carbon | ||
|---|---|---|---|---|---|---|---|
| Andrea | |||||||
| Bart | |||||||
| Casper | 
| arrabi | |||
| Bologn | |||
| Carbon | 
My instance
| Penne | Farfall | spirelli | Arrabi | Bologn | Carbon | ||
|---|---|---|---|---|---|---|---|
| Andrea | X | - | - | - | - | X | |
| Bart | - | X | - | X | - | - | |
| Casper | - | - | X | - | X | - | 
| arrabi | - | X | - | 
| Bologn | - | - | X | 
| Carbon | X | - | - | 
My instance
Transitivity
Theory Pasta
Arguments:
| 'In' (Predicates) | 'Out' (Functions) | 
|---|---|
| PersonPastaP | PersonPasta | 
| PersonSauceP | PersonSauce | 
| PastaSauceP | PastaPerson | 
| PastaSauce | |
| SaucePerson | |
| SaucePasta | |
| TseitinSet | 
Theory Pasta
Rules
\( \forall \) person, pasta, sauce :
PersonPastaP(person, pasta) \(\Rightarrow\) PersonPasta(person)=pasta \( \land \) PastaPerson(pasta)=Person
\( \ldots \)
An extension of what is known:
the function representation is Consistent:
\( \forall \) person, pasta, sauce :
PersonPasta(person)=pasta \(\Leftrightarrow\) PastaPerson(pasta)=person
\( \ldots \)
Theory Pasta
Rules
The actual puzzle, reified:
Transitivity, reified:
\( \forall \) person, pasta, sauce :
T(5) \(\Rightarrow\) PersonPasta(person)=pasta \(\land\) PastaSauce(pasta)=sauce \(\Rightarrow\) PersonSauce(person)=sauce
\( \ldots \)
T(1) \(\Rightarrow\) PersonPasta(Andrea)=Penne
\( \ldots \)
\(\exists\) derivedTruth, derivedProp, derivedPerson, derivedPasta, derivedSauce, Tseitins :
\(\forall \) personPasta, \(\ldots \) : Pasta(...) \(\Rightarrow\) isDerived(...) \(\land\)
\(\exists\) personPasta, \(\ldots\) : Pasta(...) \(\land\)
#{x:T(x)} < n
General theory