Wykłady z algebry Kubusia… z podziękowaniem dla Zefcia.
Temat:
Instrukcja warunkowa
Implikacje urojone
zefciu napisał(a):
Cytuj:
Rozważmy instrukcję warunkową:
if W then A else B
Dla każdego programisty jest oczywistością że:
A.
Jeśli zajdzie warunek W (W=1) to na pewno => nastąpi skok do adresu A
W=>A =1
C1.
Jeśli zajdzie warunek ~W (~W=1) to na pewno => nastąpi skok do adresu B
~W=>B =1
Dla każdego programisty jest oczywistością że musi być:
B = ~A
Twoje nadużycie symbolu "=" jest przerażające. Weźmy zdanie "jeśli mam mięso w lodówce, to zróbmy sobie kotlety. W przeciwnym wypadku chodźmy na kebaba.
Według Ciebie wyrażenie "nie mam mięsa w lodówce" to jest
to samo, co polecenie "chodźmy na kebaba". Mieszasz wyrażenia i polecenia i Ci wychodzą brednie.
Warunek = mam mięso w lodówce
Jeśli mam mięso w lodówce to zróbmy sobie kotlety inaczej chodźmy na kebaba
if mięso w lodówce then zróbmy kotlety else chodźmy na kebaba
Tożsame instrukcje cząstkowe to:
if mieso (M) w ldówce then zróbmy kotlety
if brak mięsa w lodówce (~M) then chodźmy na kebaba
Oczywiście to „pójdziemy na kebaba” można tu zastąpić czymkolwiek np.
- pójdziemy do kina
- zaśpiewamy piosenkę
- podskoczymy trzy razy
etc
… dla matematyki to bez znaczenia.
Pierwsze zdanie jest ewidentną obietnicą która na mocy definicji jest implikacją prostą.
A.
Jeśli mam mięso w lodówce to zróbmy sobie kotlety
M=>KT =1
p=>q =1
Mięso w lodówce jest warunkiem wystarczającym => abyśmy zrobili kotlety
Prawdziwość warunku wystarczającego A wymusza fałszywość kontrprzykładu B.
B.
Jeśli mam mięso w lodówce to możemy nie zrobić kotletów
M~~>~KT =0 - zakaz łamania obietnicy A
p~~>~q=0
… a jeśli nie mam mięsa?
Na mocy definicji to jest implikacja prosta, stąd:
M=>KT = ~M~>~KT
C.
Jeśli nie mam mięsa w lodówce to możemy ~> nie zrobić kotletów
~M~>~K =1
~p~>~q =1
Brak mięsa w lodówce jest warunkiem koniecznym ~> abyśmy nie zrobili kotletów
Dlaczego?
Mama do Jasia:
Cholera nie ma mięsa, Jasiu skocz do Bidronki i kup mięso.
Jasiu po 15 min wraca z mięsem.
stąd:
D.
Jeśli nie mam mięsa w lodówce to możemy ~~> zrobić sobie kotlety
~M~~>K =1
~p~~>q =1
Oczywiście całość to implikacja prosta z ewidentnym „rzucaniem monetą” po stronie ~M.
…ale!Dołożymy do tego kolejną obietnicę wynikającą z instrukcji warunkowej:
E.
Jeśli nie będzie mięsa w lodówce to chodźmy na kebaba
~M=>(KB=~KT) =1
~p=>~q =1
Brak mięsa w lodówce jest warunkiem wystarczającym => abyśmy poszli na kebaba, czyli rezygnujemy z kotletów (KB=~KT).
Kontrprzykład dla zdania E to zdanie F.
F.
Jeśli nie będzie mięsa w lodówce to możemy ~~> nie iść na kebaba
~M~~>(~KB=KT) =0 - złamanie gwarancji matematycznej E
~p~~>q =0
… na mocy definicji zdanie E to obietnica (=implikacja prosta), mamy zatem:
~M=>(KB=~KT) = M~>(~KB=KT)
G.
Jeśli będzie mięso w lodówce to możemy ~> nie jeść kebaba
M~>(~KB=KT) =1
p~>q =1
Mięso w lodówce jest warunkiem koniecznym ~>, abyśmy nie jedli kebaba
lub
H.
Jeśli będzie mięso w lodówce to możemy ~~> jeść kebaba
M~~>(KB=~KT) =1
p~~>~q =1
Zauważmy że zdanie H jest tu sprzeczne z obietnicą A, jednak iloczyn logiczny w instrukcji warunkowej wytnie nam to zdanie co zobaczymy za chwilę.
Przyjmujemy sztywny punktu odniesienia zgodnie ze zdaniem A.
A: M=>K =1
p = mięso
q = kotlety
Jednoczesne złożenie obietnic A i E to iloczyn logiczny funkcji:
(p=>q)*(~p=>~q)
co jest oczywistą równoważnością:
p<=>q = (p=>q)*(~p=>~q)
Jak poprawnie złożyć w postaci iloczynu logicznego zdania A i E?
Kod:
Tabela 1
A: p=>q =1 |
B: p~~>~q=0 |
C:~p~>~q =1 |E:~p=>~q =1
D:~p~~>q =1 |F:~p~~>q =0
1 2 3 4 5 6
Jest oczywistym, że druga obietnica (po stronie ~p) dotyczy tego co musimy zrobić w punkcie C, czyli musi być zapisana dokładnie jak wyżej.
Zdania G i H musimy umieścić w obszarze AB456, czyli tylko i wyłącznie tak.
Kod:
Tabela 2
A: p=>q =1 |G: p~> q =1
B: p~~>~q=0 |H: p~~>~q=1
C:~p~>~q =1 |E:~p=>~q =1
D:~p~~>q =1 |F:~p~~>q =0
1 2 3 4 5 6
Funkcja jaką otrzymamy po wymnożeniu logicznym:
(p=>q)*(~p=>~q)
to oczywiście równoważność o definicji symbolicznej w obszarze ABCD789 niżej.
Kod:
Tabela 3
A: p=>q =1 |G: p~> q =1 |A: p=>q =1 |RA:p<=>q=(p=>q)*(~p=>~q)
B: p~~>~q=0 |H: p~~>~q=1 |B: p~~>~q=0
C:~p~>~q =1 |E:~p=>~q =1 |E:~p=>~q =1 |RC:~p<=>~q=(~p=>~q)*(p=>q)
D:~p~~>q =1 |F:~p~~>q =0 |F:~p~~>q =0
1 2 3 4 5 6 7 8 9
Kodowanie równoważności symbolicznej z obszaru BCD789.
Dla kodowania zgodnego ze zdaniem RA otrzymujemy zero-jedynkową definicję równoważności w logice dodatniej (bo q):
RA: p<=>q
Prawa Prosiaczka:
(p=1)=(~p=0)
(q=1)=( ~q=1)
Dla kodowania zgodnego ze zdaniem RC otrzymujemy zero-jedynkową definicję równoważności w logice dodatniej (bo q):
C: ~p<=>~q
Prawa Prosiaczka:
(~p=1)=(p=0)
(~q=1)=(q=1)
Kod:
Tabela 4
Definicja symboliczna |Definicja |Definicja
|zero-jedynkowa |zero-jedynkowa
|dla RA:p<=>q |dla RC:~p<=>~q
RA: p<=>q | p q p<=>q | ~p ~q ~p<=>~q
A: p=> q =[ p* q] =1 | 1<=> 1 =1 | 0<=> 0 =1
B: p~~>~q=[ p*~q] =0 | 1<=> 0 =0 | 0<=> 1 =0
RC: ~p<=>~q | |
C:~p=>~q =[~p*~q] =1 | 0<=> 0 =1 | 1<=> 1 =1
D:~p~~>q =[~p* q] =0 | 0<=> 1 =0 | 1<=> 0 =0
1 2 a b 3 4 5 6 7 8 9
Tożsamość kolumn wynikowych 6 i 9 jest dowodem formalny prawa algebry Boole’a:
R1: p<=>q = ~p<=>~q
W przełożeniu na naszą instrukcję warunkową:
if mięso w lodówce then zróbmy kotlety else chodźmy na kebaba
Mamy!
Zrobimy kotlety wtedy i tylko wtedy gdy jest mięso w lodówce
KT<=>M = (KT=>M)*(~KT=>~M)
Pójdziemy na kebaba (KB=~KT) wtedy i tylko wtedy gdy nie ma mięsa w lodówce
~KT<=>~M = (~KT=>~M)*(KT=>M)
Doskonale widać, że w tej instrukcji warunkowej o wszystkim decyduje człowiek.
Jednak zawsze zachodzi poniższa tożsamość jeśli instrukcja warunkowa jest spełniona w 100%:
Instrukcja warunkowa = operator równoważności
Zauważmy że w świecie niezależnym od człowieka czyli w matematyce i przyrodzie nie ma tak lekko.
Tu wszystko jest niezależne od chciejstwa człowieka.
if pada then są chmury else nie ma chmur
Instrukcje cząstkowe są tu następujące:
if pada then są chmury
P=>CH =1
if nie pada to nie ma chmur
~P=>~CH =0
Drugie zdanie jest fałszywe, dlatego nie uzyskamy tu równoważności.
P<=>CH = (P=>CH)*(~P=>~CH) = 1*0 =0
W równoważności niezależnej od człowieka mamy:
if trójkąt prostokątny then suma kwadratów else nie suma kwadratów
Instrukcje cząstkowe są tu następujące:
if trójkąt prostokątny then suma kwadratów
TP=>SK =1
if nie trójkąt prostokątny then nie suma kwadratów
~TP=>~SK =1
Stąd mamy bezpośrednio definicję symboliczną równoważności:
Kod:
A: TP=> SK =1
B: TP~~>~SK=0
C:~TP=> ~SK=1
D:~TP~~> SK=0
Oczywiście można się tu bawić w implikacje urojone niedostępne w naszym wszechświecie w sposób analogiczny do obietnic gdzie wszystko zależy od człowieka co analizowaliśmy wyżej.
Równoważność z uwzględnieniem implikacji urojonych będzie tu następująca.
A.
Jeśli trójkąt jest prostokątny to na pewno => zachodzi suma kwadratów
TP=>SK = [TP*SK=TP] =1
p=>q =1
Definicja warunku wystarczającego => spełniona bo zbiór TP zawiera się w zbiorze SK
Warunek wystarczający A wymusza fałszywość kontrprzykładu B
B.
Jeśli trójkąt jest prostokątny to może ~~> nie zachodzić suma kwadratów
TP~~>~SK = [TP*~SK] =0
p~~>~q =0
bo zbiory TP i ~SK są rozłączne
… a jeśli trójkąt nie jest prostokątny?
W implikacji urojonej również obowiązuje prawo Kubusia:
TP=>SK = ~TP~>~SK
C.
Jeśli trójkąt nie jest prostokątny to może ~> nie zachodzić suma kwadratów
~TP~>~SK = [~TP*~SK = ~SK] =1
~p~>~q =1
Definicja warunku koniecznego ~> spełniona bo zbiór ~TP zawiera w sobie zbiór ~SK
Oczywistość z powodu tożsamości zbiorów TP=SK która wymusza tożsamość zbiorów ~TP=~SK
Na mocy definicji implikacji w zdaniu D mamy jedynkę.
D.
Jeśli trójkąt nie jest prostokątny to może ~~> zachodzić suma kwadratów
~TP~~>SK = ~TP*SK =1
~p~~>q =1
Oczywiście ta jedynka jest jedynką urojoną niedostępną w naszym wszechświecie,
stad całość nazywamy implikacją urojonąDla każdego normalnego matematyka jest oczywistością iż w naszym wszechświecie w zdaniu D wyżej musi być ZERO!
Stąd mamy następujący warunek wystarczający prawdziwy.
E.
Jeśli trójkąt nie jest prostokątny to na na pewno nie zachodzi suma kwadratów
~TP=>~SK = [~TP*~SK=~TP] =1
~p=>~q =1
Warunek wystarczający => spełniony bo zbiór ~TP zawiera się w zbiorze ~SK
Prawdziwość zdania E wymusza fałszywość kontrprzykładu F.
F.
Jeśli trójkąt nie jest prostokątny to może ~~> zachodzić suma kwadratów
~TP~~>SK = [~TP*SK] =0
~p~~>q =0
bo zbiory ~TP i SK są rozłączne
… a jeśli trójkąt jest prostokątny?
Tu również możemy się bawić w implikacje urojone gdzie zachodzi prawo Kubusia:
~TP=>~SK = TP=>SK
G.
Jeśli trójkąt jest prostokątny to może ~> zachodzić suma kwadratów
TP~>SK = [TP*SK=SK] =1
p~>q =1
Definicja warunku koniecznego spełniona bo zbiór TP zawiera w sobie zbiór SK
Oczywistość z powodu tożsamości zbiorów P=SK
Na mocy definicji implikacji w zdaniu H mamy tu jedynkę.
H.
Jeśli trójkąt jest prostokątny to może ~~> nie zachodzić suma kwadratów
TP~~>~SK = [TP*~SK] =1
p~~>~q =1
Oczywiście ta jedynka jest jedynką urojoną niedostępną w naszym wszechświecie,
stad całość nazywamy implikacją urojonąDla każdego normalnego matematyka jest oczywistością iż w naszym wszechświecie w zdaniu H wyżej musi być ZERO!
Przypomnijmy naszą instrukcję warunkową:
if trójkąt prostokątny then suma kwadratów else nie suma kwadratów
Instrukcje cząstkowe są tu następujące:
if trójkąt prostokątny then suma kwadratów
TP=>SK =1
if nie trójkąt prostokątny then nie suma kwadratów
~TP=>~SK =1
Jak poprawnie złożyć w postaci iloczynu logicznego zdania A i E?
Kod:
Tabela 5
A: p=>q =1 |
B: p~~>~q=0 |
C:~p~>~q =1 |E:~p=>~q =1
D:~p~~>q =1 |F:~p~~>q =0
1 2 3 4 5 6
Jest oczywistym, że warunek wystarczający E: ~p=>~q dotyczy tego co musi zachodzić w naszym wszechświecie w punkcie C, czyli musi być zapisany dokładnie jak wyżej.
Zdania G i H musimy umieścić w obszarze AB456, czyli tylko i wyłącznie tak.
Kod:
Tabela 6
A: p=>q =1 |G: p~> q =1
B: p~~>~q=0 |H: p~~>~q=1
C:~p~>~q =1 |E:~p=>~q =1
D:~p~~>q =1 |F:~p~~>q =0
1 2 3 4 5 6
Funkcja jaką otrzymamy po wymnożeniu logicznym:
(p=>q)*(~p=>~q)
to oczywiście równoważność o definicji symbolicznej w obszarze ABCD789 niżej.
Kod:
Tabela 7
A: p=>q =1 |G: p~> q =1 |A: p=>q =1 |RA:p<=>q=(p=>q)*(~p=>~q)
B: p~~>~q=0 |H: p~~>~q=1 |B: p~~>~q=0
C:~p~>~q =1 |E:~p=>~q =1 |E:~p=>~q =1 |RC:~p<=>~q=(~p=>~q)*(p=>q)
D:~p~~>q =1 |F:~p~~>q =0 |F:~p~~>q =0
1 2 3 4 5 6 7 8 9
Kodowanie równoważności symbolicznej z obszaru BCD789.
Dla kodowania zgodnego ze zdaniem RA otrzymujemy zero-jedynkową definicję równoważności w logice dodatniej (bo q):
RA: p<=>q
Prawa Prosiaczka:
(p=1)=(~p=0)
(q=1)=( ~q=1)
Dla kodowania zgodnego ze zdaniem RC otrzymujemy zero-jedynkową definicję równoważności w logice dodatniej (bo q):
C: ~p<=>~q
Prawa Prosiaczka:
(~p=1)=(p=0)
(~q=1)=(q=1)
Kod:
Tabela 8
Definicja symboliczna |Definicja |Definicja
|zero-jedynkowa |zero-jedynkowa
|dla RA:p<=>q |dla RC:~p<=>~q
RA: p<=>q | p q p<=>q | ~p ~q ~p<=>~q
A: p=> q =[ p* q] =1 | 1<=> 1 =1 | 0<=> 0 =1
B: p~~>~q=[ p*~q] =0 | 1<=> 0 =0 | 0<=> 1 =0
RC: ~p<=>~q | |
C:~p=>~q =[~p*~q] =1 | 0<=> 0 =1 | 1<=> 1 =1
D:~p~~>q =[~p* q] =0 | 0<=> 1 =0 | 1<=> 0 =0
1 2 a b 3 4 5 6 7 8 9
Tożsamość kolumn wynikowych 6 i 9 jest dowodem formalny prawa algebry Boole’a:
R1: p<=>q = ~p<=>~q
W przełożeniu na naszą instrukcję warunkową:
if trójkąt prostokątny then suma kwadratów else nie suma kwadratów
Mamy!
Trójkąt jest prostokątny wtedy i tylko wtedy gdy zachodzi suma kwadratów
TP<=>SK = (TP=>SK)*(~TP=>~SK) =1*1 =1
Trójkąt nie jest prostokątny wtedy i tylko wtedy gdy nie zachodzi suma kwadratów
~TP<=>~SK = (~TP=>~SK)*(TP=>SK)
Podsumowanie:1.
Instrukcja warunkowa:
if p then q else ~q
to zawsze równoważność o definicji:
p<=>q = (p=>q)*(~p=>~q)
~p<=>~q = (~p=>~q)*(p=>q)
która
może być prawdziwa niezależnie od tego czy mamy do czynienia ze światem żywym (np. człowiek) czy też ze światem martwym np. matematyka.
Przykłady wyżej.
2.
Definicja:
Implikacja urojona to implikacja wchodząca w skład równoważności
3.
W implikacji rzeczywistej nigdy nie zachodzi przemienność argumentów.
W implikacji urojonej będącej częścią równoważności zawsze zachodzi przemienność argumentów.