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)=>qp|q<=>~p&~qpp=>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şiBsunt formule propoziţionale, atunci(A),~A,A&B,A|B,A=>B,A<=>Bsunt 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şiBsunt afirmaţii, atunci:Aeste adevărată dacă şi numai dacă valoarea sa de adevăr este "adevărat";(A)este adevărată dacă şi numai dacăAeste adevărată;~Aeste falsă dacă şi numai dacăAeste adevărată;A&Beste adevărată dacă şi numai dacă atâtAcât şiBsunt adevărate;A|Beste falsă dacă şi numai dacăAeste falsă şiBeste falsă;A=>Beste adevărată dacă şi numai dacă~A|Beste adevărată;A<=>Beste 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