Logika dla informatyków/Logika pierwszego rzędu. Sposób użycia
Logika pierwszego rzędu. Sposób użycia.
Przyjrzyjmy się teraz kilku ważnym tautologiom.
Fakt
Następujące formuły są tautologiami (dla dowolnych Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i ).
- Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \forall x(\var\varphi\to\psi)\to(\exists x\var\varphi\to\exists x\psi)} ;
- , o ile ;
- ;
- ;
- ;
- ;
- ;
- ,o ile ;
- , o ile ;
- ;
- ;
- ;
- ;
Dowód
Formuły (1-3) powyżej wyrażają własności kwantyfikatora szczegółowego i są odpowiednikami formuł z Faktu 2.7. Zauważmy, że zamiast rozdzielności kwantyfikatora szczegółowego, mamy tu jeszcze jedno prawo rozkładu kwantyfikatora ogólnego. Zakłóca to nieco symetrię pomiędzy i , wyrażoną prawami de Morgana (4) i (4).
Kolejne dwie tautologie przypominają o bliskim związku kwantyfikatora ogólnego z koniunkcją i kwantyfikatora szczegółowego z alternatywą. (Uwaga: zmienna może być wolna w Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i .) Analogiczna rozdzielność kwantyfikatora ogólnego względem alternatywy (8) i kwantyfikatora szczegółowego względem koniunkcji (9) nie zawsze jest prawdą, ale zachodzi pod warunkiem, że zmienna wiązana kwantyfikatorem nie występuje w jednym z członów formuły. (Prawo (8) nazywane bywa prawem Grzegorczyka.)
Formuła (10) jest odbiciem naszego założenia o niepustości świata. Jest to tautologia, ponieważ umówiliśmy się, że rozważamy tylko struktury o niepustych nośnikach.
Prawa (11)--(13) charakteryzują możliwości permutowania kwantyfikatorów. Implikacja odwrotna do (13) zazwyczaj nie jest tautologią.
Stosując równoważności (4--[9) możemy każdą formułę sprowadzić do postaci, w której wszystkie kwantyfikatory znajdują się na początku.
Definicja 3.2
Mówimy, że formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest w preneksowej postaci normalnej, gdy
gdzie każde z to lub , a jest formułą otwartą. (Oczywiście może być zerem.)
Fakt 3.3
Dla każdej formuły pierwszego rzędu istnieje równoważna jej formuła w preneksowej postaci normalnej.
Dowód
Przykład 3.3
Formuła jest równoważna każdej z następujących formuł:
;
;
;
;
.
Logika formalna i język polski
Systemy logiki formalnej są, jak już mówiliśmy, tylko pewnymi modelami, czy też przybliżeniami rzeczywistych sposobów wyrażania różnych stwierdzeń i wnioskowania o ich poprawności. Poziom dokładności takich przybliżeń może być większy lub mniejszy. Większy tam, gdzie mamy do czynienia z dobrze określoną teorią matematyczną, lub językiem programowania. Mniejszy wtedy, gdy używamy logiki do weryfikacji poprawności stwierdzeń języka potocznego, choćby takiego jak podręcznikowy przykład: Janek idzie do szkoły. Oczywiście przypisanie temu stwierdzeniu wartości logicznej jest zgoła niemożliwe, nie wiemy bowiem, który Janek do jakiej ma iść szkoły i czy może już doszedł? Więcej sensu ma zastosowanie logiki predykatów do analizy np. takiego rozumowania:
Ale nie goli żadnego z tych, którzy golą się sami.
A zatem w Sewilli nie ma ani jednego cyrulika.
W tym przypadku aparat logiki formalnej może być pomocny. Łatwiej zrozumieć o co chodzi, tłumacząc nasz problem na język logiki
predykatów, i przedstawiając go jako pytanie o poprawność pewnego
stwierdzenia postaci Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \Gamma \models\var\varphi}
. Można więc zapytać, czy
Stwierdziwszy poprawność powyższego stwierdzenia, wywnioskujemy, że w Sewilli cyrulika nie ma. I będzie to wniosek ... błędny, bo cyrulik być może jest kobietą.
W powyższym przykładzie po prostu źle\boldsymbol{s}}\def\blank{\hbox{\sf Bstalono logiczną interpretację naszego zadania, zapominając o jednym z jego istotnychelementów. Błąd ten można łatwo naprawić, co jest zalecane jako ćwiczenie. Ale nie zawsze język logiki formalnej wyraża ściśle to samo, co p\leftrightarrowczny język polski, a nawet język w którym pisane są prace matematyczne. Zarówno składnia jak i semantyka tych języków rządzi się zupełnie innymi prawami, i o tym należy pamiętać tłumacząc jeden na drugi.
Implikacja materialna i związek przyczynowo-skutkowy
Implikacja, o której mówimy w logice klasycznej to tzw. implikacja materialna. Wartość logiczna, którą przypisujemy wyrażeniu Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi \to\psi} zależy wyłącznie od wartości logicznych przypisanych jego częściom składowym Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i . Nie zależy natomiast zupełnie od treści tych wyrażeń, czy też jakichkolwiek innych związków pomiędzy Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i . W szczególności, wypowiedzi Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i mogą mówić o zajściu jakichś zdarzeń i wtedy wartość logiczna implikacji Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\to\psi} nie ma nic wspólnego z ichewentualnym następstwem w czasie, lub też z tym, że jedno z tych zdarzeń spowodowało drugie. W języku polskim stwierdzenie "jeśli Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} to " oczywiście sugeruje taki związek, np. w zdaniu:
Tymczasem implikacja materialna nie zachodzi, o czym dobrze wiedzą użytkownicy terminali. Co więcej, w istocie materialną prawdą jest stwierdzenie odwrotne:
Natomiast zdanie
stwierdza nie tylko związek przyczynowo-skutkowy, ale też faktyczne zajście wymienionych zdarzeń i w ogóle nie ma odpowiednika w logice klasycznej.
Inne spójniki w mniejszym stopniu grożą podobnymi nieporozumieniami. Ale na przykład spójnik "i"" w języku polskim może też sugerować następstwo czasowe <ref name="szesc">W językach programowania jest podobnie, ale to już inna historia.</ref> zdarzeń: "Poszedł i zrobił." A wyrażenie "A, chyba że B" ma inny odcień znaczeniowy niż proste "A lub B". Przy tej okazji zwróćmy uwagę na to, że słowo "albo" bywa czasem rozumiane w znaczeniu alternatywy wykluczającej. My jednak umawiamy się, że rozumiemy je tak samo jak "lub".
Konfuzje składniowe
Przy tłumaczeniu z języka polskiego na język logiki formalnej i na odwrót można łatwo popełnić błąd nawet wtedy gdy nie powstają problemy semantyczne. Składnia tych języków jest oparta na innych zasadach. Na przykład te dwa zdania mają bardzo podobną budowę:
Pewien kot ma wąsy.
Ale ich tłumaczenia na język rachunku predykatów nie są już takie podobne:
MaWąsy.
Dość częstym błędem jest właśnie mylenie koniunkcji z implikacją w zasięgu działania kwantyfikatora. A oto inny przykład: Zdania
oznaczają to samo. Zaprzeczeniem pierwszego z nich jest oczywiście zdanie
ale zaprzeczeniem drugiego nie jest zdanie
otrzymane przecież przez analogiczną operację "podstawienia". Użycie słowa "pewnej" powoduje bowiem, że to zdanie rozumiemy jako , a nie jako .
Innym popularnym błędem jest mylenie koniunkcji z alternatywą w przesłance implikacji, zwłaszcza gdy występuje tam negacja. Mamy bowiem skłonność do powtarzania słowa "nie" w obu członach założenia i nie razi nas zdanie
Ale od tekstu matematycznego oczekujemy więcej ścisłości i w takim tekście zdanie:
może wprowadzić czytelnika w błąd. ""Dosłowne" tłumaczenie tego zdania na język logiki predykatów, to przecież formuła
a nie formuła
Wielu takich dwuznaczności unikniemy, gdy przypomnimy sobie, że w języku polskim istnieją takie słowa jak ani i żaden.
Siła wyrazu logiki pierwszego rzędu
Język logiki pierwszego rzędu, dzięki możliwości używania kwantyfikatorów,jest dość elastyczny. Można z jego pomocą wyrazić wiele nietrywialnych własności obiektów matematycznych. W szczególności interesować nas może definiowanieelementów i wyodrębnianie struktur o pewnych szczególnych własnościach, czy też formułowanie kryteriów odróżniających jakieś struktury od innych.
Przykład 3.5
Przypuśćmy, że sygnatura składa się z dwóch jednoargumentowych symboli relacyjnych i , dwuargumentowego symbolu funkcyjnego i jednoargumentowego symbolu funkcyjnego . Wtedy formuła
jest prawdziwa dokładnie w tych modelach , w których obraz iloczynu kartezjańskiego przy przekształceniu zawiera się w zwykłym iloczynie
Przykład 3.6
Teraz niech nasza sygnatura składa się z jednej operacji dwuargumentowej i z jednej stałej . Zdanie
jest prawdziwe w strukturze słów nad alfabetem z konkatenacją i słowem pustym, ale nie w modelu słów nad alfabetem trzyliterowym . Inaczej mówiąc, nasze zdanie rozróżnia te dwie struktury.
Nierozstrzygalność
Niestety, konsekwencją znacznej siły wyrazu logiki pierwszego rzędu jest jej nierozstrzygalność. Dokładniej, nierozstrzygalny jest następujący problem decyzyjny:<ref name="siedem">W istocie, nazwa 'problem decyzyjny" (Entscheidungsproblem) została użyta po raz pierwszy właśnie w tym kontekście.</ref>Czy dana formuła logiki pierwszego rzędu jest tautologią? Aby wykazać, że tak jest, posłużymy się znaną nam nierozstrzygalnością problemu stopu dla maszyn Turinga.
Przypomnijmy, że (deterministyczną, jednotaśmową) maszynę Turinga nad alfabetem można zdefiniować jako krotkę , gdzie:
- jest skończonym alfabetem, zawierającym oraz symbol (blank);
- jest skończonym zbiorem stanów;
- jest stanem początkowym;
- jest stanem końcowym lub akceptującym;
- jest funkcją przejścia.
Zakładając, że zbiory i są rozłączne, można zdefiniować konfigurację maszyny jako słowo postaci , gdzie oraz , przy czym utożsamiamy konfiguracje i Parser nie mógł rozpoznać (nieznana funkcja „\blank”): {\displaystyle wqv\blank}
.
Interpretacja tej definicji jest następująca. Taśma maszyny jest nieskończona
w prawo. Na początku taśmy zapisane jest słowo , dalej w prawo
są same blanki, a głowica maszyny "patrzy" na pierwszy znak na prawo od . Konfigurację
postaci , gdzie Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle w\in \A}
, nazywamy początkową, a konfigurację postaci nazywamy końcową lub akceptującą.
Relację na konfiguracjach definiuje się tak:
- Jeśli to ;
- Jeśli to ;
- Jeśli to oraz (gdy ruch w lewo jest niemożliwy.)
Symbolem oznaczamy przechodnio-zwrotne domknięcie relacji . Jeżeli , gdzie jest konfiguracją akceptującą to mówimy, że maszyna akceptuje słowo .
W naszej konstrukcji skorzystamy z następującej postaci problemu stopu: Czy dana maszyna Turinga akceptuje słowo puste? Nietrudno jest zredukować do niego ogólny przypadek problemu stopu (ćwiczenie).
Następujący lemat będzie przydatny w dowodzie nierozstrzygalności.
Lemat 3.7
Niech oznacza koniunkcję następujących formuł
Zdanie jest spełnialne, a każdy jego model zawiera nieskończony ciąg różnych elementów , takich że dla każdego .
Dowód
Twierdzenie 3.8
Nie istnieje algorytm rozstrzygający czy dana formuła logiki pierwszego rzędu jest tautologią.
Dowód
Naszym celem jestefektywna konstrukcja, która dla dowolnej maszyny Turinga utworzy formułę Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_\M} o takiej własności:
Stąd natychmiast wynika teza twierdzenia. W przeciwnym razie taka konstrukcja pozwalałaby bowiem na rozstrzyganie problemu stopu.
W istocie, wygodniej będzie skonstruować taką formułę , że
i na koniec przyjąć Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_M=\neg \psi_M} . Sygnatura naszej formuły będzie zależała od maszyny (bo tak jest łatwiej) chociaż tak być nie musi (Ćwiczenie 13). Składa się ona z:
- jednoargumentowych symboli relacyjnych , dla wszystkich stanów ;
- dwuargumentowych symboli relacyjnych , dla wszystkich symboli ;
- dwuargumentowego symbolu relacyjnego ;
- stałej i symboli i występujących w formule z Lematu 3.7.
Formuła Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi\M}
jest koniunkcją złożoną z wielu składowych, które
teraz opiszemy. Pierwszą składową jest formuła
z Lematu 3.7. Każdy model tej formuły zawiera
różnowartościowy ciąg , który posłuży nam
jako substytut ciągu liczb naturalnych (o elemencie myślimy
jak o liczbie ). Intuicyjny sens formuł atomowych naszej
sygnatury jest taki:
- Formułę czytamy: po krokach obliczenia maszyna jest w stanie .
- Formułę czytamy: po krokach głowica maszyny znajduje się w pozycji .
- Formułę czytamy: po krokach na pozycji znajduje się symbol .
Dalsze składowe naszej formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_M} są tak dobrane, aby każdy jej model reprezentował nieskończone obliczenie maszyny zaczynające się od słowa pustego. Oto te składowe:
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle S_{q_0}(c)\wedge G(c,c)\wedge \forall x\,C_{\sf B}(c,x)} ;
- ;
- , dla , ;
- ;
- , dla ,;
- ;
- ;
- , gdy ;
- ;
- , gdy ;
- , gdy ;
- , gdy ;
- , gdy ;
- .

Przypuśćmy teraz, że maszyna Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \M}
ma nieskończone obliczenie dla
pustego słowa wejściowego. Zbudujemy model Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA}
dla
formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_\M}
. Dziedziną tego modelu jest zbiór Parser nie mógł rozpoznać (nieznana funkcja „\NN”): {\displaystyle \NN}
liczb naturalnych. Stałą interpretujemy jako zero, relacja
Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle P^\strA}
to relacja następnika, a Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle R^\strA}
to (ostra) relacja mniejszości.
Relacje Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle S_q^\A}
, Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle C_a^\A}
i Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle G^\A}
określamy zgodnie z ich intuicyjną
interpretacją na podstawie przebiegu nieskończonego obliczenia maszyny.
Nietrudno się przekonać, że wszystkie człony koniunkcji są prawdziwe
w Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA}
, czyli zdanie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_\M}
jest spełnialne.
}}
Przystąpmy więc do trudniejszej części dowodu. Załóżmy mianowicie,
że Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models\var\varphi_\M}
dla pewnej struktury Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA}
. Wtedy także
Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA\models\vartheta}
, niech więc
będąelementami Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA}
, o których mowa w Lemacie #nieKronecker.
Struktura Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA}
spełnia też wszystkie pozostałe składowe
formuły Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi_\M}
. Składowe (2) i (3) gwarantują, że każdy zelementów
należy do dokładnie jednej z relacji . Podobnie, każda para
należy do dokładnie jednej z relacji , oraz każde
jest w relacji z dokładnie jednymelementem struktury Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA}
--- tu
używamy składowych (4)--(7).
Rozpatrzmy obliczenie maszyny Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \M} dla słowa pustego. Pokażemy, że jest to obliczenie nieskończone.
Jeśli obliczenie maszyny Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \M} składa się z co najmniej kroków, to przez oznaczmy stan, w którym znajduje się maszyna Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \M} po wykonaniu tych kroków, a przez pozycję głowicy w tym momencie. Zawartością -tej komórki taśmy po -tym kroku obliczenia niech zaś będzie symbol .
Przez indukcję \zwn dowodzimy, że dla dowolnego Parser nie mógł rozpoznać (nieznana funkcja „\NN”): {\displaystyle n\in\NN} obliczenie składa się z co najmniej kroków, oraz:
\hfil Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle a_n\in S_{q_n}^\strA} \qquad Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle (a_n,a_m)\in C_{b_{nm}}^\strA} \qquadParser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle (a_n,a_{k_n})\in G^\strA} .
Inaczej mówiąc, model Parser nie mógł rozpoznać (nieznana funkcja „\strA”): {\displaystyle \strA} prawidłowo reprezentuje kolejne konfiguracje maszyny. Dla powyższe związki wynikają wprost z prawdziwości członu (1) naszej koniunkcji. W kroku indukcyjnym skorzystamy przede wszystkim z członu (14), który gwarantuje, że stan nie jest końcowy. Określona jest więc wartość funkcji przejścia . Możemy więc odwołać się do składowych (9--12), które zapewniają poprawną zmianę stanu i symbolu pod głowicą (8), zachowanie bez zmian reszty taśmy (9) i przesunięcie głowicy (10--12). Szczegóły dowodu pozostawiamy Czytelnikowi. }}
Twierdzenie #entscheidungsproblem można wzmocnić, pokazując (Ćwiczenie #stalasygnatura), że problem jest nierozstrzygalny nawet dla formuł nad pewną\boldsymbol{s}}\def\blank{\hbox{\sf Bstaloną sygnaturą. W istocie, jest tak dla większości sygnatur, z wyjątkiem bardzo ,,ubogich przypadków. Dwa takie przypadki są przedmiotem Ćwiczeń #rJ1 i #rJ2 do Rozdziału #trzynasty.
\subsection*{Ćwiczenia}\begin{small}
pokazać, że następujące formuły są tautologiami:
- </math>(\exists y p(y) \to \forall z q(z)) \to
\forall y\forall z(p(y)\to q(z))</math>; %95b
- </math>(\forall x\exists y r(x,y) \to \exists x\forall y r(y,x))\to
\exists x\forall y(r(x,y) \to r(y,x))</math>; %99a
- </math>\forall x\exists y((p(x)\to q(y))\to r(y))
\to ((\forall x p(x)\to \forall y q(y))\to \exists y r(y))</math>; %109a
- </math>\forall x(p(x)\to \exists y q(y))\to
\exists y(\exists x p(x)\to q(y))</math>.% 110a
\item Jak rozumiesz następujące zdania? Jak je sformułować, żeby nie
budziły wątpliwości?
- Nie wolno pić i grać w karty.
- Nie wolno pluć i łapać.
- Zabrania się zaśmiecania i zanieczyszczania drogi.\footnote{Kodeks
Drogowy przed nowelizacją w roku 1997.}
- {\it Zabrania się zaśmiecania lub zanieczyszczania
drogi.}\footnote{Kodeks Drogowy po nowelizacji w roku 1997.}
- {\it Wpisać, gdy osoba\boldsymbol{s}}\def\blank{\hbox{\sf Bbezpieczona nie posiada numerów identyfikacyjnych
NIP lub \mbox{PESEL}.}\footnote{Instrukcja wypełniania formularza ZUS ZCZA (Zgłoszenie danych o członkach rodziny\dots)}
- {\it Podaj przykład liczby, która jest pierwiastkiem pewnego
równania kwadratowego o współczynnikach całkowitych i takiej, która nie jest.}
- Warunek zachodzi dla każdego i dla pewnego .\/
\item Czy następujące definicje można lepiej sformułować?
- Zbiór jest {\sf dobry}, jeśli ma co najmniej 2elementy.
- Zbiór jest {\sf dobry, jeśli dla każdego ,
jeśli jest parzyste, to jest podzielne przez .}
- Zbiór jest {\sf dobry, jeśli dla pewnego ,
jeśli jest parzyste, to jest podzielne przez .}
\item Wskazać błąd w rozumowaniu:
- {\it Aby wykazać prawdziwość tezy\\
{\sf ,,Dla dowolnego , jeśli zachodzi warunek to zachodzi warunek }\\ załóżmy, że dla dowolnego zachodzi \dots}
- {\it Aby wykazać prawdziwość tezy\\
{\sf ,,Dla pewnego , jeśli zachodzi warunek to zachodzi warunek }\\ załóżmy, że dla pewnego zachodzi \dots}
\item Sformułować poprawnie zaprzeczenia stwierdzeń:
- Liczby i są pierwsze.
- Liczby i są względnie pierwsze.
\item Czy zdanie {\it ,,Liczba nie jest kwadratem pewnej liczby
całkowitej\/}
jest poprawnym zaprzeczeniem zdania {\it ,,Liczba jest kwadratem
pewnej liczby całkowitej\/}?
\item Sygnatura składa się z symboli , i . Napisać takie zdania Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i , że:%61 jest rozwiazanie
- zdanie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest prawdziwe dokładnie w tych modelach
Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle \A = \<A, R^\A, S^\A, r^\A, s^\A, g^\A\>} , w których obie relacje Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle R^\A} , Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle S^\A} są przechodnie, ale ich suma nie jest przechodnia;
- zdanie jest prawdziwe dokładnie w tych modelach
Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle \A = \<A, R^\A, S^\A, r^\A, s^\A, g^\A\>} , w których Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle s^\A} jest obrazem iloczynu kartezjańskiego Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle r^\A\times r^\A} przy funkcji Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle g^\A} .
\item Sygnatura składa się z dwuargumentowych symboli
relacyjnych i oraz dwuargumentowego symbolu funkcyjnego .
Napisać (możliwie najkrótsze) zdanie, które jest prawdziwe dok{ł}adnie
w tych modelach%77 jest rozwiazanie
Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle \A = \<A, r^{\A}, s^{\A}, f^{\A}\>}
, w których:
- Złożenie relacji Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle r^{\A}} i Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle s^{\A}} zawiera się w ich iloczynie
Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle r^\A\cap s^\A} ;
- Zbiór wartości funkcji Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle f^{\A}} jest rzutem sumy Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle r^\A\cup s^\A} na
pierwszą współrzędną;
- Relacja Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle r^\A} nie jest funkcją z w ;
- Obraz Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle r^\A} przy funkcji Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle f^\A} jest podstrukturą w Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle \A} ;
- Obraz zbioru przy funkcji Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle f^\A} jest pusty.
\item
Dla każdej z par struktur:
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\NN,\leq\>} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\{m-{1\over n}\ |\ m,n\in\NN-\{0\}\}, \leq\>} ;
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\NN, +\>} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\ZZ, +\>} ;
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\NN, \leq\>} i Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\ZZ, \leq\>} ,
wskaż zdanie prawdziwe w jednej z nich a w drugiej nie.
\item Napisać takie zdania Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} i , że:
- zdanie Parser nie mógł rozpoznać (nieznana funkcja „\var”): {\displaystyle \var\varphi} jest prawdziwe w modelu Parser nie mógł rozpoznać (nieznana funkcja „\A”): {\displaystyle \A = \<\ZZ, +, 0 \>} ,
ale nie w modelu Parser nie mógł rozpoznać (nieznana funkcja „\B”): {\displaystyle \B = \<\NN, +, 0 \>} ;
- zdanie jest prawdziwe w modelu Parser nie mógł rozpoznać (nieznana funkcja „\B”): {\displaystyle \B = \<\ZZ, +, 0 \>} ,
ale nie w modelu Parser nie mógł rozpoznać (błąd składni): {\displaystyle \C = \<\QQ, +, 0 \>} .
\item Wskazać formułę pierwszego rzędu:
- spełnialną w
ciele liczb rzeczywistych ale nie w ciele liczb wymiernych;
- spełnialną w algebrze Parser nie mógł rozpoznać (nieznana funkcja „\NN”): {\displaystyle \NN} z mnożeniem,
ale nie w algebrze Parser nie mógł rozpoznać (nieznana funkcja „\NN”): {\displaystyle \NN} z dodawaniem;
- spełnialną w Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\{a,b\}^*,\cdot,\varepsilon\>}
ale nie w Parser nie mógł rozpoznać (błąd składni): {\displaystyle \<\{a,b,c\}^*,\cdot,\varepsilon\>} .
\item Zmodyfikować konstrukcję
z dowodu Twierdzenia #entscheidungsproblem w ten sposób,
aby w formule Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \psi_\M}
nie występował symbol równości
ani stała </math>cParser nie mógł rozpoznać (błąd składni): {\displaystyle . %%{1. Napisać }
\forall x\forall y\forall z(G(x,y)\wedge
\item Zmodyfikować konstrukcję
z dowodu Twierdzenia #entscheidungsproblem w ten sposób,
aby Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \psi_\M}
była zawsze formułą\boldsymbol{s}}\def\blank{\hbox{\sf Bstalonej sygnatury (niezależnej
od maszyny Parser nie mógł rozpoznać (nieznana funkcja „\M”): {\displaystyle \M}
). Wywnioskować stąd, że logika pierwszego rzędu
nad tą\boldsymbol{s}}\def\blank{\hbox{\sf Bstaloną sygnaturą jest nierozstrzygalna.
\end{small}