Buongiorno, sto preparando un esame di software engineering dove viene richiesto, a partire da un testo scritto, di scrivere un enunciato in termini logici. (Spero di non offendere nessuno se uso termini tecnici in modo inappropriato, non ho mai dato un esame di logica pura, spero che comunque il senso venga colto).
Ho però difficoltà nel capire quando la mia soluzione è o meno in disaccordo con quella del professore, quindi vi propongo un esempio per capire se c'è effettivamente un'equivalenza di soluzione o le mie risposte sono sbagliate.
Esempio
testo:
Specify the pre- and post-conditions of a program that takes as input a non-empty
sequence (i.e., an array A) of integers that are all multiple of 5
mia soluzione:
∀ i,k ( 1<i<A.lenght AND A[i] = 5k)
soluzione del prof:
∀i ( 1<i<A.lenght → ∃k ( A[i] = 5k) )
nota: 1<i<A.lenght serve per indicare che il vettore non sia nullo
come vedete io utilizzo un quantificatore universale e un and mentre il prof un quantificatore universale, un quantificatore esistenziale e un'implicazione logica. Vorrei sapere se per voi le soluzioni sono equivalenti e se c'è un modo semplice per convertire un'espressione nell'altra o viceversa