Sztuczna inteligencja/SI Moduł 2/Składnia języka logiki: Różnice pomiędzy wersjami
mNie podano opisu zmian |
m Zastępowanie tekstu – „,</math>” na „</math>,” |
||
Linia 17: | Linia 17: | ||
* '''Symbole stałych:''' oznaczane za pomocą liter <math>a,b,c\dots \ | * '''Symbole stałych:''' oznaczane za pomocą liter <math>a,b,c\dots \</math>,. | ||
* '''Symbole zmiennych:''' oznaczane za pomocą liter <math>x,y,z\dots \ | * '''Symbole zmiennych:''' oznaczane za pomocą liter <math>x,y,z\dots \</math>,. | ||
* '''Symbole funkcyjne:''' oznaczane za pomocą liter <math>f,g,h\dots \ | * '''Symbole funkcyjne:''' oznaczane za pomocą liter <math>f,g,h\dots \</math>,. każdy symbol funkcyjny ma ustaloną liczbę argumentów. | ||
* '''Symbole predykatowe:''' oznaczane za pomocą liter <math>P,Q,R,\dots \ | * '''Symbole predykatowe:''' oznaczane za pomocą liter <math>P,Q,R,\dots \</math>,; każdy symbol predykatowy ma ustaloną liczbę argumentów. | ||
* '''Operatory logiczne:''' <math>\neg \ | * '''Operatory logiczne:''' <math>\neg \</math>, (negacja), <math>\land \</math>, (koniunkcja), <math>\lor \</math>, (alternatywa), <math>\rightarrow \</math>, (implikacja), <math>\leftrightarrow \</math>, (równoważność). | ||
* '''Kwantyfikatory:''' kwantyfikator ogólny <math>\forall \ | * '''Kwantyfikatory:''' kwantyfikator ogólny <math>\forall \</math>,, kwantyfikator szczegółowy <math>\exists \</math>,. | ||
* '''Nawiasy:''' <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 37: | 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 \ | termem. Ponadto, jeśli <math>f \</math>, jest dowolnym <math>m \</math>,-argumentowym symbolem | ||
funkcyjnym, a <math>t_1,t_2,\dots,t_m \ | 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>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 \ | Jeśli <math>P \</math>, oznacza dowolny <math>m \</math>,-argumentowy symbol predykatowy, a | ||
<math>t_1,t_2,\dots,t_m \ | <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 56: | Linia 56: | ||
* Jeśli <math>\alpha \ | * Jeśli <math>\alpha \</math>, jest formula, to <math>(\alpha) \</math>, jest formułą. | ||
* Jeśli <math>\alpha \ | * Jeśli <math>\alpha \</math>, jest formula, to <math>\neg\alpha \</math>, jest formułą. | ||
* Jeśli <math>\alpha \ | * Jeśli <math>\alpha \</math>, i <math>\beta \</math>, są formułami, to: | ||
** <math>\alpha\land\beta \ | ** <math>\alpha\land\beta \</math>, jest formułą, | ||
** <math>\alpha\lor\beta \ | ** <math>\alpha\lor\beta \</math>, jest formułą, | ||
** <math>\alpha\rightarrow\beta \ | ** <math>\alpha\rightarrow\beta \</math>, jest formułą, | ||
** <math>\alpha\leftrightarrow\beta \ | ** <math>\alpha\leftrightarrow\beta \</math>, jest formułą. | ||
* Jeśli <math>\alpha \ | * Jeśli <math>\alpha \</math>, jest formula i <math>x \</math>, jest symbolem zmiennej, to | ||
** <math>(\forall x)\alpha \ | ** <math>(\forall x)\alpha \</math>, jest formułą, | ||
** <math>(\exists x)\alpha \ | ** <math>(\exists x)\alpha \</math>, jest formułą. |
Wersja z 09:31, 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 Parser nie mógł rozpoznać (błąd składni): {\displaystyle a,b,c\dots \} ,.
- Symbole zmiennych: oznaczane za pomocą liter Parser nie mógł rozpoznać (błąd składni): {\displaystyle x,y,z\dots \} ,.
- Symbole funkcyjne: oznaczane za pomocą liter Parser nie mógł rozpoznać (błąd składni): {\displaystyle f,g,h\dots \} ,. każdy symbol funkcyjny ma ustaloną liczbę argumentów.
- Symbole predykatowe: oznaczane za pomocą liter Parser nie mógł rozpoznać (błąd składni): {\displaystyle P,Q,R,\dots \} ,; każdy symbol predykatowy ma ustaloną liczbę argumentów.
- Operatory logiczne: Parser nie mógł rozpoznać (błąd składni): {\displaystyle \neg \} , (negacja), Parser nie mógł rozpoznać (błąd składni): {\displaystyle \land \} , (koniunkcja), Parser nie mógł rozpoznać (błąd składni): {\displaystyle \lor \} , (alternatywa), Parser nie mógł rozpoznać (błąd składni): {\displaystyle \rightarrow \} , (implikacja), Parser nie mógł rozpoznać (błąd składni): {\displaystyle \leftrightarrow \} , (równoważność).
- Kwantyfikatory: kwantyfikator ogólny Parser nie mógł rozpoznać (błąd składni): {\displaystyle \forall \} ,, kwantyfikator szczegółowy Parser nie mógł rozpoznać (błąd składni): {\displaystyle \exists \} ,.
- Nawiasy: Parser nie mógł rozpoznać (błąd składni): {\displaystyle ( \} ,, Parser nie mógł rozpoznać (błąd składni): {\displaystyle ) \} ,, 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 Parser nie mógł rozpoznać (błąd składni): {\displaystyle f \} , jest dowolnym Parser nie mógł rozpoznać (błąd składni): {\displaystyle m \} ,-argumentowym symbolem funkcyjnym, a Parser nie mógł rozpoznać (błąd składni): {\displaystyle t_1,t_2,\dots,t_m \} , są dowolnymi termami, to także Parser nie mógł rozpoznać (błąd składni): {\displaystyle f(t_1,t_2,\dots,t_m) \} , jest termem. Jak widać, stosując dowolny symbol funkcyjny do argumentów będących termami uzyskujemy term.
Formuły atomowe
Jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle P \} , oznacza dowolny Parser nie mógł rozpoznać (błąd składni): {\displaystyle m \} ,-argumentowy symbol predykatowy, a Parser nie mógł rozpoznać (błąd składni): {\displaystyle t_1,t_2,\dots,t_m \} , sa dowolnymi termami, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle P(t_1,t_2,\dots,t_m) \} , 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 Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha \} , jest formula, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle (\alpha) \} , jest formułą.
- Jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha \} , jest formula, to Parser nie mógł rozpoznać (błąd składni): {\displaystyle \neg\alpha \} , jest formułą.
- Jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha \}
, i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \beta \}
, są formułami, to:
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha\land\beta \} , jest formułą,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha\lor\beta \} , jest formułą,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha\rightarrow\beta \} , jest formułą,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha\leftrightarrow\beta \} , jest formułą.
- Jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle \alpha \}
, jest formula i Parser nie mógł rozpoznać (błąd składni): {\displaystyle x \}
, jest symbolem zmiennej, to
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (\forall x)\alpha \} , jest formułą,
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle (\exists x)\alpha \} , jest formułą.