Demonstrarea automată a teoremelor şi verificarea satisfiabilităţii unei formule constituie două capitole importante în cadrul logicii matematice. Formulele propoziţionale sunt alcătuite din variabile propoziţionale (variabile care pot lua doar două valori: "adevărat" sau "fals") şi din operatorii logici "şi", "sau", "negaţie", "echivalent", "implică".
Iată câteva exemple de formule propoziţionale:
~p&(q<=>p)=>q
p|q<=>~p&~q
p
p=>q=>a=>t=>~p
În acest exemplu, p
şi q
sunt variabilele propoziţionale, ~
este operatorul unar "negaţie", &
este operatorul binar "şi", |
este operatorul binar "sau", =>
este implicaţia logică (şi apare numai în acest sens, nu şi <=
), iar <=>
este echivalenţa logică. În plus, într-o formulă propoziţională pot să apară şi paranteze care stabilesc ordinea operaţiilor. În lipsa parantezelor, operatorii în ordinea priorităţii lor sunt ~
, &
, |
, =>
, <=>
.
În formulele de forma , asociaţiile se fac de la dreapta la stânga, adică , unde este unul dintre &
, |
, =>
, <=>
şi sunt variabile propoziţionale. În general, o formulă propoziţională se defineşte astfel:
- orice variabilă propoziţională este formulă propoziţională;
- dacă
A
şiB
sunt formule propoziţionale, atunci(A)
,~A
,A&B
,A|B
,A=>B
,A<=>B
sunt formule propoziţionale.
Dacă înlocuim într-o formulă propoziţională toate variabilele cu valori de adevăr ("adevărat" sau "fals"), obţinem o afirmaţie. Valoarea de adevăr a unei afirmaţii este dată de următoarea definiţie:
- dacă afirmaţia constă dintr-o singură valoare de adevăr, afirmaţia ia valoarea respectivă;
- dacă
A
şiB
sunt afirmaţii, atunci:A
este adevărată dacă şi numai dacă valoarea sa de adevăr este "adevărat";(A)
este adevărată dacă şi numai dacăA
este adevărată;~A
este falsă dacă şi numai dacăA
este adevărată;A&B
este adevărată dacă şi numai dacă atâtA
cât şiB
sunt adevărate;A|B
este falsă dacă şi numai dacăA
este falsă şiB
este falsă;A=>B
este adevărată dacă şi numai dacă~A|B
este adevărată;A<=>B
este adevărată dacă şi numai dacă(A=>B)&(B=>A)
este adevărată.
Se numeşte soluţie a formulei propoziţionale (formulă în care apar numai variabilele propoziţionale distincte ) orice -uplu format doar din valori de adevăr pentru care, înlocuind fiecare variabilă cu valoarea , afirmaţia rezultată este adevărată.
Cerinţă
Logica fiind un obiect nesuferit de studenţii de la informatică, ei apelează la informaticienii din clasa a IX-a pentru a-i ajuta să numere câte soluţii distincte are o formulă propoziţională dată.
Date de intrare
În fişierul de intrare logic.in
, se găseşte o formulă propoziţională unde variabilele propoziţionale sunt reprezentate de litere mici ale alfabetului englez.
Date de ieşire
În fişierul de ieşire logic.out
, se va afişa numărul de soluţii pentru formula propoziţională din fişierul de intrare.
Restricții și precizări
- La intrare se va da întotdeauna o formulă propoziţională corectă sintactic.
- Formula are mai puţin de de caractere.
- În formulă nu apar mai mult de litere mici ale alfabetului latin.
Exemplul 1
logic.in
p|q<=>~p&~q
logic.out
4
Exemplul 2
logic.in
a
logic.out
1