Sztuczna inteligencja/SI Moduł 2/Składnia języka logiki: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Jarabas (dyskusja | edycje)
Nie podano opisu zmian
m Zastępowanie tekstu – „ \</math>” na „</math>”
 
(Nie pokazano 2 wersji utworzonych przez 2 użytkowników)
Linia 16: Linia 16:
będą dalej stosowane.
będą dalej stosowane.


* '''Symbole stałych:'''  oznaczane za pomocą liter <math>a,b,c\dots</math>.
 
* '''Symbole zmiennych:'''  oznaczane za pomocą liter <math>x,y,z\dots</math>.
* '''Symbole stałych:'''  oznaczane za pomocą liter <math>a,b,c\dots</math>,.
* '''Symbole funkcyjne:'''  oznaczane za pomocą liter <math>f,g,h\dots</math>.każdy symbol funkcyjny ma ustaloną liczbę argumentów.
* '''Symbole zmiennych:'''  oznaczane za pomocą liter <math>x,y,z\dots</math>,.
* '''Symbole predykatowe:'''  oznaczane za pomocą liter <math>P,Q,R,\dots</math>; każdysymbol predykatowy ma ustaloną liczbę argumentów.
* '''Symbole funkcyjne:'''  oznaczane za pomocą liter <math>f,g,h\dots</math>,. każdy symbol funkcyjny ma ustaloną liczbę argumentów.
* '''Operatory logiczne:'''  <math>\neg</math> (negacja), <math>\land</math> (koniunkcja),<math>\lor</math> (alternatywa), <math>\rightarrow</math> (implikacja), <math>\leftrightarrow</math>(równoważność).
* '''Symbole predykatowe:'''  oznaczane za pomocą liter <math>P,Q,R,\dots</math>,; każdy symbol predykatowy ma ustaloną liczbę argumentów.
* '''Kwantyfikatory:'''  kwantyfikator ogólny <math>\forall</math>, kwantyfikatorszczegółowy <math>\exists</math>.
* '''Operatory logiczne:'''  <math>\neg</math>, (negacja), <math>\land</math>, (koniunkcja), <math>\lor</math>, (alternatywa), <math>\rightarrow</math>, (implikacja), <math>\leftrightarrow</math>, (równoważność).
* '''Nawiasy:'''  <math>(</math>, <math>)</math>, w razie potrzeby także inne.
* '''Kwantyfikatory:'''  kwantyfikator ogólny <math>\forall</math>,, kwantyfikator szczegółowy <math>\exists</math>,.
* '''Nawiasy:'''  <math>(</math>,, <math>)</math>,, w razie potrzeby także inne.


Będziemy czasem skrótowo mówić o symbolach stałych jako o stałych, o
Będziemy czasem skrótowo mówić o symbolach stałych jako o stałych, o
Linia 36: Linia 37:
stosowanych do argumentów. Poprawnej postaci argumenty dla symboli
stosowanych do argumentów. Poprawnej postaci argumenty dla symboli
predykatowych nazywane są termami. Każda stała i zmienna jest
predykatowych nazywane są termami. Każda stała i zmienna jest
termem. Ponadto, jeśli <math>f</math> jest dowolnym <math>m</math>-argumentowym symbolem
termem. Ponadto, jeśli <math>f</math>, jest dowolnym <math>m</math>,-argumentowym symbolem
funkcyjnym, a <math>t_1,t_2,\dots,t_m</math> są dowolnymi termami, to także
funkcyjnym, a <math>t_1,t_2,\dots,t_m</math>, są dowolnymi termami, to także
<math>f(t_1,t_2,\dots,t_m)</math> jest termem. Jak widać, stosując dowolny symbol
<math>f(t_1,t_2,\dots,t_m)</math>, jest termem. Jak widać, stosując dowolny symbol
funkcyjny do argumentów będących termami uzyskujemy term.
funkcyjny do argumentów będących termami uzyskujemy term.


=== Formuły atomowe ===
=== Formuły atomowe ===


Jeśli <math>P</math> oznacza dowolny <math>m</math>-argumentowy symbol predykatowy, a
Jeśli <math>P</math>, oznacza dowolny <math>m</math>,-argumentowy symbol predykatowy, a
<math>t_1,t_2,\dots,t_m</math> dowolnymi termami, to <math>P(t_1,t_2,\dots,t_m)</math>
<math>t_1,t_2,\dots,t_m</math>, sa dowolnymi termami, to <math>P(t_1,t_2,\dots,t_m)</math>,
jest formułą atomową. Formułą atomową jest więc dowolne zastosowanie
jest formułą atomową. Formułą atomową jest więc dowolne zastosowanie
symbolu predykatowego do argumentów będących termami.
symbolu predykatowego do argumentów będących termami.
Linia 54: Linia 55:
określonymi poniżej zasadami.
określonymi poniżej zasadami.


* Jeśli <math>\alpha</math> jest formułą, to <math>(\alpha)</math> jest formułą.
* Jeśli <math>\alpha</math> jest formułą, to <math>\neg\alpha</math> jest formułą.
* Jeśli <math>\alpha</math> i <math>\beta</math> są formułami, to:
** <math>\alpha\land\beta</math> jest formułą,
** <math>\alpha\lor\beta</math> jest formułą,
** <math>\alpha\rightarrow\beta</math> jest formułą,
** <math>\alpha\leftrightarrow\beta</math> jest formułą.


* Jeśli <math>\alpha</math> jest formułą i <math>x</math> jest symbolem zmiennej, to
* Jeśli <math>\alpha</math>, jest formula, to <math>(\alpha)</math>, jest formułą.
** <math>(\forall x)\alpha</math> jest formułą,
* Jeśli <math>\alpha</math>, jest formula, to <math>\neg\alpha</math>, jest formułą.
** <math>(\exists x)\alpha</math> jest formułą.
* Jeśli <math>\alpha</math>, i <math>\beta</math>, są formułami, to:
** <math>\alpha\land\beta</math>, jest formułą,
** <math>\alpha\lor\beta</math>, jest formułą,
** <math>\alpha\rightarrow\beta</math>, jest formułą,
** <math>\alpha\leftrightarrow\beta</math>, jest formułą.
 
* Jeśli <math>\alpha</math>, jest formula i <math>x</math>, jest symbolem zmiennej, to
** <math>(\forall x)\alpha</math>, jest formułą,
** <math>(\exists x)\alpha</math>, jest formułą.

Aktualna wersja na dzień 09:56, 5 wrz 2023

Składnia języka logiki

Obecnie przystąpimy do zdefiniowania składni języka logiki predykatów, w którym będą zapisywane formuły przetwarzane w procesie wnioskowania, Składnia określa reguły budowania poprawnych formuł, czyli takich, które mogą być przetwarzane przez system wnioskujący. Definiując składnię nie będziemy się zajmować znaczeniem poszczególnych symboli i konstrukcji języka, choć oczywiście znaczenie części z nich będzie dla nas oczywiste ze względu na powszechne doświadczenie z używaniem notacji logicznej np. do zapisu twierdzeń matematycznych.

Alfabet

Alfabet, czyli zbiór symboli języka logiki predykatów, obejmuje poniższe kategorie symboli. Dla każdej z nich podano oznaczenia, jakie będą dalej stosowane.


  • Symbole stałych: oznaczane za pomocą liter a,b,c,.
  • Symbole zmiennych: oznaczane za pomocą liter x,y,z,.
  • Symbole funkcyjne: oznaczane za pomocą liter f,g,h,. każdy symbol funkcyjny ma ustaloną liczbę argumentów.
  • Symbole predykatowe: oznaczane za pomocą liter P,Q,R,,; każdy symbol predykatowy ma ustaloną liczbę argumentów.
  • Operatory logiczne: ¬, (negacja), , (koniunkcja), , (alternatywa), , (implikacja), , (równoważność).
  • Kwantyfikatory: kwantyfikator ogólny ,, kwantyfikator szczegółowy ,.
  • Nawiasy: (,, ),, w razie potrzeby także inne.

Będziemy czasem skrótowo mówić o symbolach stałych jako o stałych, o symbolach zmiennych jako o zmiennych, o symbolach funkcyjnych jako o funkcjach, o symbolach predykatowych jako o predykatach, trzeba jednak pamiętać, że - jak długo nie określimy ich znaczenia - są to wyłącznie symbole, czyli pewne napisy, z których konstruowane są bardziej złożone napisy (formuły) według opisanych dalej reguł.

Termy

Jak zobaczymy, formuły konstruowane są z symboli predykatowych stosowanych do argumentów. Poprawnej postaci argumenty dla symboli predykatowych nazywane są termami. Każda stała i zmienna jest termem. Ponadto, jeśli f, jest dowolnym m,-argumentowym symbolem funkcyjnym, a t1,t2,,tm, są dowolnymi termami, to także f(t1,t2,,tm), jest termem. Jak widać, stosując dowolny symbol funkcyjny do argumentów będących termami uzyskujemy term.

Formuły atomowe

Jeśli P, oznacza dowolny m,-argumentowy symbol predykatowy, a t1,t2,,tm, sa dowolnymi termami, to P(t1,t2,,tm), jest formułą atomową. Formułą atomową jest więc dowolne zastosowanie symbolu predykatowego do argumentów będących termami.

Formuły złożone

Formuły złożone są konstruowane z formuł atomowych przez zastosowanie operatorów logicznych, kwantyfikatorów i nawiasów, zgodnie z określonymi poniżej zasadami.


  • Jeśli α, jest formula, to (α), jest formułą.
  • Jeśli α, jest formula, to ¬α, jest formułą.
  • Jeśli α, i β, są formułami, to:
    • αβ, jest formułą,
    • αβ, jest formułą,
    • αβ, jest formułą,
    • αβ, jest formułą.
  • Jeśli α, jest formula i x, jest symbolem zmiennej, to
    • (x)α, jest formułą,
    • (x)α, jest formułą.