Házi feladat

Formula (fa adatszerkezet)

Általános leírás

Az órán vett formula adatszerkezetet fogjuk tovább fejleszteni különböző metódusokkal. Az alábbi metódusokat kell megvalósítanod a formula adatszerkezetedhez:

  1. Konstruktor Formula(infix_szöveg) -- Írj olyan konstruktort a formulához, amely egy infix zárójeles alakban megadott kijelentéslogikai formulát beolvas. (Használd fel a számológépes programból ismert shunting yard algoritmust!) A műveletek prioritásai: Az ¬ a legerősebben kötő művelet, aztán a jönnek a ∧,∨,↑,↓ műveletek, majd a →, és végül a ↔.
  2. Metódus Igazságérték(igaz_atomi_kijelentések: Halmaz[Szöveg]):Logikai -- Adott az igaz_atomi_kijelentések halmaz, amelyben pontosan akkor van benne egy atomi kijelentés, ha az igaz. Ez alapján add meg, hogy a(z összetett) formula igaz-e vagy hamis!
  3. Metódus NemÉs(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag negáció és konjunkció műveletek szerepelnek.
  4. Metódus NemVagy(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag negáció és diszjunkció műveletek szerepelnek.
  5. Metódus NemAkkor(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag negáció és kondicionális műveletek szerepelnek.
  6. Metódus FalsAkkor(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag kondicionális művelet szerepel és a falsum (⊥) atomi kijelentés, amely mindig azonosan hamis.
  7. Metódus SemSem(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag a sem-sem művelet (A↓B ⇔ ¬A∧¬B) fordul elő.
  8. Metódus Sheffer(): Formula -- Olyan, az eredetivel ekvivalens formulát ad vissza, amelyben csak és kizárólag a Sheffer-művelet (A↑B ⇔ ¬(A∧B)) fordul elő.

Úgy írd meg a programod, hogy mutassa be ezeket a metódusokat a felhasználónak!