You are currently browsing the monthly archive for Styczeń 2012.

   

    Na marginesie dyskusji o ACTA i niezdrowym rozwoju korporacji ( oligopole, monopole itp) chcialbym zwrócić uwagę uwagę na nastepujące omówienie  tej pracy .  Jeśli to co tam piszą jest prawda – sytuacja jest bardzo ciekawa i skomplikowana. 

     Kartel uznajemy za zły gdyż jego działanie prowadzi do utraty przez rynek efektywności. Tym samy pojawienie sie na rynku kartelu niszczy dobrą ekonomię i uniemożliwia osiągnięcie stanów optymalnych. Tak można by skrócić mantrę neo-klasycznej ekonomii (Friedman, Hayek itp) zwanej często neoliberalizmem co jest o tyle mylące, że prąd ten w istocie jest przefarbowanym i ładnie nazwanym leseferyzmem – formą przekonania że ekonomia bez udziału rządów, państw, czy innych tak zawaych regulatorów, działa optymalnie i dzięki swoistemu samosterowaniu i obiektywnym cechom zawartym w samym charatkerze takiej nieograniczanej gospodarki wolnorynkowej – osiąga zawse stan optymalny. Przedstawiciel tej dziedziny – zupełnie tautologicznie – na każdy sygnał o problemach ekonomiczncyh reagują zawsze w ten sam sposób – proponują dalsze zniesienie regulacji. Im niższy poziom regulacji – tym szybciej wolny rynek miałby osiągać upragnione optimum w którym każdy jest szczęśliwy a PKB rośnie. Każdy wiele razy słyszał takie rady na przykład w wypowiedziach profesora Balcerowicza.

     Tymczasem podlinkowana praca  pokazuje – coś co dla osób zajmujących się zjawiskami nieliniowymi jest dosyć oczywiste i spodziewane – że rynek nie jest żadnym automatem optymalizacyjnym. W zasadzie nie posiadamy narzędzi pozwalających analizować tak skomplikowane układy – więc wszelkie wypowiedzi w atmosferze dogmatu i pewności ( Balcerowicz, Friedman itp.) na temat ekonomii wolnego rynku – to ledwie mniemania, pół biedy jeśli oparte na doświadczeniu, powiedzmy historycznym ( co jest nie prawda, na świecie nie ma chyba ani jednego kraju w którym poziom zaangazowania państwa byłby przez neoliberałow okreslony jako dostatecznie niski – choc bliskei idału pod pewnymi względami zdaje się sa Chiny w których państwo w całości kontroluje społeczeństwo zostawiając całkowitą wolnośc korporacjom – i sa one neoliberalnym prymusem. Niewiele osób zdaje się wie, że protesty na placu Teinanmen w Chnach były sprzeciwem przeciw reformom wolnorynkowym, prowadzącym do ograniczonego uwalniania gospdoarki. Ludzie których rozjeżdżały czołgi – chcieli bardziej komunistycznego komunizmu i mniej wyzysku ze strony zagranicznych i rodzimych korporacji. Protest miał także wyraźnie nacjonalistyczny charakter. W Polskich mediach kłamie się na ten temat, lub nie pisze wcale. Być może polscy dziennkarze po prostu nie rozumieją tej sytuacji. ).

    Podlinkowana praca jest przykładem w miare ścisłęj wiedzy na temat wolnego rynku – wiedzy opartej o realistyczne symulacje oparte na bardzo ogólnych załozeniach. Jest to wynik który z powodu niedostatecznej mocy obliczeniowej nie był mozliwy do wykonania w czasach Hayeka, Friedmana itp. Zasoby takie z wolna stają się dostępne współcześnie. Wspólczesna ekonomia symulacyjna jest w stanie badać ogólne zachowania wielkich, milonowych grup sztucznych „agentów” obdażonych wieloma cechami. Badacz uzyskuje w ten sposób modele lepsze niż w klasycznej ekonomii ograniczanej przez liczne upraszczające i rygorystyczne założenia, z krórych częśc ma charakter całkowicie nienaukowy jak w wypadku Friedmana i Balcerowicza – oceny wartościujace na temat form własości itp.

     Zjawisko emergentne jakie przytoczona praca opsiuje mo zna by nazwac kartelizacją rynku przy zachowaniu wszelkich zasad friedmanizmu (wolny rynek, wiele podmiotów, nieprzymuszeni racjonalni konsumenci, brak interwencjonizmu). Wolny rynek w warunkach praktycznej efektywności i przy braku sztucznego zarządzania i przy obecności wielu konkurujących firm – może wytworzyć wzorce zmiany ceny charakterystyczne dla rynku na którym panuje kartel czyli zmowa cenowa. Zupełnie naturalnie i bez jakichkolwiek działń ze strony konsumentów i producentów – zwyczajnie z powodu pewnej ich interakcji ze zmowa kartelowa nie majacej nic wspólnego. Autorzy pracy zasymulowali działanie wolnego rynku zakłądając pewnego rodzaju całkowicie naturalną mobilnosc konsumentów i „czułosc” na popyt ze strony producentów. Przy pewnych wartościach tych parametrów – rynek zachowuje się jakby ceny były dyktowane w zmowie. Jeśli ta praca zostanie rozwinięta, a moce komputerów wystarczą – możemy za naszego życia doczekać się dowodów że neoliberalizm to czcza utopia i że połowę wieku organizowano ekonomie państw satelickich USA ( a od lat 80-tych samego USA ) w myśl dyrdymałów podtrzymywanych wyłącznie z powodu silnych związków biznesu z politykami w USA.

     Oczywiście nie  jestem wierzącym neoliberałem – uważam friedmanizm za niewiele warte machanie rękami ( w istocie mniej niż marksizm, który jako ekonomia jest bzdurny ale ma swoja wartość socjologiczną i historyczną – jeśli chodzi o poglądy – na tyle na ile je znam i rozumiem – akurat znacznie bliżej mi do weberyzmu  ). Co więcej – ci którzy sie interesują – znają spór między Hayekiem a Langem ( polskim wybitnym ekonomistą którego poglądy wikipedia streszcza w interesującym nas zakresie tak:  _”[..]simulation of the market mechanism, which Lange thought would be capable of effectively managing supply and demand. Proponents of this idea argue that it combines the advantages of a market economy with those of socialist economics”_ ) na temat optymalizacji w gospodarce – być może Lange nie miał racji ( komputery nie mogą optymalizować procesów gospodarczych bo to problem NP-zupełny – czekamy na dowód..) .  ale być może Hayek także jej nie miał – bo chyba z wolna mamy dowody że tzw. wolny rynek niczego nie optymalizuje. Całkiem podobnie zresztą jak inny system „przeszukiwawania”  powszechnej opinii osiągający „stany optymalne” – ewolucja – co jest poglądem równie nieprawdziwym. Ewolucja wcale nie optymalizuje niczego – a przykładów na to jest bardzo wiele na przykład patrz nieoptymalna budowa oka ludzkiego – czy ssaków w ogóle. Ewolucja co prawda promuje pewne cechy które zwiększają szanse na wydanie potomstwa – ale czyni to zaledwie spośród cech dostępnych i istniejących, oraz działa w sposób przypadkowy, nieefektywny  powolny. Wymarcie dozaurów, wielkich ssaków ery lodowcowej, czy nawet pojedynczych gatunków jak Dropie czy ptaki Dodo –  jest przykładem na brak możliwości znależienia stosownych rozwizan dla pewnej grupy gatunków wobec problemów wynikających ze zmian środowiska. Brakło czasu, stosownych cech gatunkowych lub wręcz fizycznych mozliwości. Całkiem podoibnie w ekonomii – czekanie na cud pochodzący od niewidzialnej ręki rynku – nie jest w żadnej mierze strategią mogąca poprawić życie pojedynczego czlowieka czy społeczeństwa. Proponowanie takich rozwiązań przez profesorów ekonomii jest przejawem w najlepszym wypadku – braku kompetencji – i rzeczywiście ma miejsce tylko wówczas gdy profesorowie owi rozważaja sprawę w sposób akademicki. Kiedy zagrozone stają się interesy instytucji która ich opłaca ( powiedzmy banku Centralnego w wypadku Balerowicza, czy funduszy OFE z których środowiskiem jest związany) – okazuje się że całkiem szybki interwencjionizm ( „w obronie wolnego rynku”) jest zawsze wskazany.  I rzecsywiśei – rząd USa nei miał najmniejszych obeikcji w dokapitalizowaniu prywatych banków by chronić je przed upadkiem – nie zrobił jednak zbyt wiele by ratować finanse podatników którzy z powodu peknięcia bański spekulacyjnej na rynku nieruchomości stracili dorobek zycia.  Napiszę to jasno – sadze, że neoliberalizm to nie ekonomia – to ideologia i socjotechnika.

     Wygląda na to że z wolna zyskujemy dowody naukowe że wolnorynkowe systemy ekonomiczne działają nieoptymalnie i że ledwie znajdują stan stacjonarny w ramach pewnej ograniczonej raczej przypadkową dostępnością przestrzeni stanów.  Nie ma żadnego powodu by nimi nie sterować – co nie musi zawsze oznaczać centralnego planowania jak w PRL – ale powinn raczej przypominać prace ogrodnika który dba o porzadek i piekno w ogrodzie i wcale nie skupia się na wzroścei wyłącznie najsilniejszych gatunkół krzaków i kwiatów – przeciwnie – jego uwagę zaprzątają czesto własnie najsłabsze rosliny którym pomaga. Bo silne pomocy nie wymagają… I w istocie – tak własnie organizują swoje gospodarki rozwinięte panstwa przemysłowe. Tylko pansatwom satelickim – jak Polska – narzuca sie za pomoca zakulisowych działąń formy gospodarcze całkowicie nieracjonalne i sprzeczne z interesem lokalnej gospdoarki, społeczności i panstwa…

     Żyjemy w ciekawych czasach…

Reklamy

     

    Czytałem kiedyś zbiór felietonów Kazika ( tytuł „Niepiosenki” http://www.biblionetka.pl/book.aspx?id=97522 – polecam) Kazika lubię i kupuję, a zwłaszcza cenię sobie deklarację „kto nie pije wódki ten jest uszczuplającym dochody państwa bezideowcem”. Ale też i felietony Kazika to strzał we własną stopę. W jednym z nich pada słynne zdanie: „Kto kupuje płyty od złodzieja, ten jest kutasem i niech spierdala” – które zasadniczo popieram. Jednak – rzecz ciekawa – w jednym z felietonów Kazik opisuje jak użył na okładce swojej płyty fotkę z koncertu podarowaną mu ( z odręcznym podpisem) przez pewnego fana-fotografa. Oczywiście Kazik opisuje całą sytuację jako qui-pro-quo bowiem Kazik rzekomo myślał, że jak ktoś mu fotkę dał ( na papierku, odbitkę) to może z nią zrobić co mu się podoba – no i zrobił z niej okładkę „platynowej płyty”. Fan-fotograf ( którego Kazik oczywiście obdarza w tekście stosownymi epitetami) jednak był innego zdania – podarował Kazikowi odbitkę bez prawa do masowej reprodukcji i zawłaszczenia sobie z z jej użycia zysków. Oczywiście przez grzeczność i szacunek dla twórczości Kazika powiemy tylko ze jest kutas i niech spierdala, a nie że jest złodziejem – doszło bowiem do ugody. A w felietonie Kazik całą rzecz w końcu opisał – no bo to chamstwo że ktoś zażądał od Kazika kasy za swoją pracę( jaka tam praca! tylko pstryknął! na fotce jest przecież Kazik – więc jaka zasługa w tym fotografa?), Nie? No i Kazik się oburza że fotograf-nie-taki-amator zażądał od niego coś 30 tysięcy? Ja nie wiem – czy w tej branży to sami cwaniacy pracują?

    Tu mała uwaga – jeśli Rodowicz, Kazik czy Hołdys – łamią prawo autorskie to po 3 tygodniach lub 6 latach – kończy się to ugodą. Zazwyczaj koszty naruszeń sa oceniane bardzo nisko w porównaniu z „prawdziwymi piratami”. Np. pani Rodowicz zapłaciła 37 tysięcy złotych za uzycie fragmentów „Czterech Pancernych” w klipie który przez stacje muzyczne był pewnie emitowany tysiące razy. No ale faktycznie – wartość tego działa pewnie zostałą tu właściwie wyceniona. Nawet jeśli – jak w wypadku Hołdysa – mamy do czynienia z przestępstwem ściganym z urzędu – okazuje się że da się to załatwić…. Żaden z nich zatem nie może być nazwany złodziejem. Jeśli celebryta dzieli sie zyskiem lub chociaż odpali w TV stosowną kwestię w obronie prawa autorskiego – jest przez system chroniony. Złodziejami mogą być tylko biedni ludzie na których inaczej – niż ściągając z nich ostatnie grosze w procesie – nie da sie zarobić.

    Tak mi się przypominało bo znalazłem to –  screenshot ( lokalnie) nieistniejącej już strony, którą uważam za bardzo dowcipną – proszę przeczytać co tam jest napisane.


    Zdanie merytoryczne radze sobie wyrabiać w oparciu o takie teksty. Warto także się zastanawiać nad możliwymi działaniami naprawczymi Demokracji bezpośredniej nie zbudujemy ale może da sie rozwalić Polskę Kolesi?


    Wałęsa to postać niezwykła. Im dłużej o nim myślę, tym bardziej widzę jak wyrasta ponad swoich adwersarzy ( choć nie jest ani postacią pomnikową, ani sztampową osobowością, ma swoje dziwacwa, a sposób wyrażania się i pochodzenie społeczne zniechęca do niego wielu ludzi). Kiedyś Wałęsa wystąpił z kuriozalnym pomysłem 300 milionów dla każdego, co zostało wyśmiane przez większość ekspertów ekonomicznych w tym Balcerowicza. Pomysły te zastosowano skutecznie w Brazyli (Lulla i jego zespół) wzmacniając podstawy wzrostu gospodarczego na mikrokredycie udzielanym przez panstwo pod warunkeim partycypacji w programach pomocowych jak elektryfikacja, szczepienia, edukacja dzieci itp. Pieniądze tak rozdawane biedakom ( za pomoca rzadowej karty kredytowej) wracją do gosdpoarki dzięki ich konsumpcji ( biedacy płaca za prąd, kupują telefony, lodówki, jedzenie do lodówek, szukają pracy dzięki posiadaniu kontaktu ze światem, PKB rośnie, dzieci są szczepione i ucza się czytać i pisać)

    Poniżej cytat za PAUza Akademicka Nr 41/42, 4-11 czerwca 2009 – Lech Wałęsa wygłosił wówczas przemówienie z okazji 20 rocznicy pierwszych wolnych wyborów parlamentarnych w Polsce oraz odzyskania wolności i upadku komunizmu w Europie Środkowej na spotkaniu z członkami Akademii Umiejętności w Krakowie. Warto się wczytać – zapewniam – i pamiętać, że 300 milionów dla każdego upadło – nie dlatego że było głupie, ale dlatego że doradcy ekonoiczni Solidarnosci nie byli dostatecznie światłymi i niezależnymi ludźmi by zrozumieć jaki cel chciał osiągnąć prosty elektryk… Teraz, o ile dobrze rozumeim jego słowa – uważa Wałęsa że rozwiazaiem problemów świata nie jest „zamordyzm czy leseferyzm ( neoliberalizm ) ale więcej demokracji i poszukiwanie wspólnych wartości zamiast patologiznej amerykanizacja prawa.

    Wszelkie podkreślenia i układ paragrafów w tekscie poniżej pochodzą odemnie ( zachęcam do przeczytania całego numeru PAUzy i do subskrybcji tego ciekawego periodyku).

    „Panie i Panowie, Szanowni Państwo. Jest tyle spraw, tyle tematów, które należałoby tu poruszyć, że ja mam problem, co tu wybrać. Oczywiście rocznice zawsze powodują, że wspominamy, ale jak wiecie Państwo, ja jestem ustawiony inaczej. Ja przeszłości prawie nie pamiętam. Dlaczego? Dlatego, że ja w tamtych czasach i teraz musiałem się bardzo mocno koncentrować. Miałem i mam różnego rodzaju braki, koncentracją nadrabiałem. Dopasowując się i szukając rozwiązań, często grałem Waszą mądrością, by wygrywać swoje problemy i swoje tematy. I dlatego też nie za dużo będę wspominał – wybaczcie mi Państwo. A zaczynam od tego, że naprawdę bardzo dziękuję, że zechcieliście zostać i posłuchać mnie trochę, ale dziękuję przede  wszystkim, że jednak mimo wszystko w tych trudnych czasach jednak wypełnialiście logiką te czasy i możliwości.

    Naszemu pokoleniu naprawdę udała się rzecz nieprawdopodobna. Skończyliśmy jeden z najgorszych systemów, skończyliśmy epokę podziału, granic, bloków, konfrontacji i chwała nam wszystkim za to, ale otworzyliśmy coś jeszcze trudniejszego. Otworzyliśmy epokę intelektu, informacji, globalizacji. Epoka ta, moim zdaniem, wymaga innego oprzyrządowania, wymaga innych  struktur, innych programów, a my z uporem maniaka upieramy się przy tamtych rozwiązaniach.

    To jest największą tragedią obecnych czasów: brakiem nawet rozwiązań, brakiem zapanowania nad sprawami. Dlatego prosiłbym Państwa: naprawdę, zwróćmy uwagę, że to, co się ułożyło strukturalnie i programowo w epoce bloków, granic, konfrontacji – prawie całkowicie upada. Nasze pokolenie albo weźmie się szybciej do roboty i zaproponuje korekty – bo nie trzeba dużo: korekty, ale korekty w sprawach zasadniczych i podstawowych – albo, jeżeli tych korekt nie naniesiemy wystarczająco szybko, to będziemy wciąż wpadać w kryzysy. Kryzys, ten bankowy… Jest oczywiste, że jest tylko dlatego, bo nie zdążyliśmy z rozwiązaniami. Nie zdążyliśmy z globalnym spojrzeniem na bankowość, nie zdążyliśmy w tej bankowości zauważyć, że najpierw pracę się uruchamia, a potem nieruchomości i wypoczynek. A o tym zapomniano właśnie. Ale to nauczka, z której jakoś wychodzimy. Natomiast, jeżeli nie będziemy w tym kierunku myśleć, to już można przewidywać następne kryzysy. A te kryzysy spowodują, że cofniemy się do nacjonalizmów państwowych – to już można też zauważyć. Dlatego, zróbmy coś.

    Wy jesteście tu najmądrzejsi, to Wy jesteście elitą intelektualną tych przemian i Polski – i to Wy musicie skorygować te systemy. Ja dzisiaj zadaje Wam pytania, bo sam nie mam odpowiedzi. Jaki system ekonomiczny pod zjednoczoną Europę i pod globalizację? Bo chyba przecież nie ten, który doprowadził do tego, że mniej niż 10% ludzkości ma majątek 90% ludzkości? A kto się z tym zgodzi? Wy, społeczeństwo, widzicie co się dzieje, a to dopiero początek. Nikt się z tym nie zgodzi i dlatego też, jeśli chcemy ten system, który się sprawdza – wolnorynkowy– kontynuować – to aż się prosi na to stulecie potroić ilość właścicieli. Trzy razy więcej właścicieli i ich rodzin zapewni te socjale i zapewni ochronę tego systemu.Jak to zrobić? Oto jest pytanie. Nie czym, tylko jak to zrobić, żeby prawo, żeby wszystko umożliwiło powstanie trzy razy więcej kapitalistów? To jest w temacie ekonomicznym. A w temacie demokratycznym: nie możemy przyjąć konstytucji [UE]. Teraz mamy problemy z traktatami, ale są jeszcze wyższe problemy.

    […]

    Szanowni Państwo, w latach siedemdziesiątych i w początku osiemdziesiątych ja już byłem trochę opozycjonistą i rozmawiałem z różnymi ludźmi; z dziennikarzami ale trafiali się też i politycy, prezydenci, a nawet  na króla jednego trafiłem. Zadawałem zawsze te same pytania: „Proszę państwa czy jest jakaś szansa urwać się od komunizmu?” Mówiłem – tysiąc razy to słyszeliście –ze wszystkimi rozmawiałem też pod koniec już lat osiemdziesiątych. Ani jeden nie dawał mi najmniejszych szans na to, że urwiemy się komunizmowi. Długo, długo nie itd. Ale ja i my pytaliśmy wciąż, no i zaczęli, już pod przymusem naszej bezczelności, zaczęli wpisywać to do komputerów. Czym lepszy komputer odpowiadał „nie”. Tylko wojna nuklearna może zmienić realia tego świata, żadnej innej  możliwości nie ma.

    A ja powiem dalej dzisiaj: A chcecie się pobawić? Gdy wrócicie do domu i macie komputer,  wpiszcie te dane: ile czołgów, ile rakiet, jakie interesy, kto z kim walczy. Odpowiedź i dzisiaj dostaniecie „nie ma możliwości zakończyć w tej klasie systemu komunistycznego”. A już dawno go w dużej części nie ma. Teraz zastanawiamy  się nad tym, jak to Polska ma wyglądać, jak to Europa, a nawet globalizacja. To są na razie puste pojęcia. Ani dobre ani złe. Jak to ma wyglądać?

    Otóż, powinniśmy wrócić do tego momentu, gdzie ta pomyłka nas wszystkich jest. I dopiero, gdy zauważymy tę  pomyłkę, możemy się zabrać za budowanie. A pomyłka brzmi: liczyliśmy wszystko czołgi, rakiety, pieniądze, a w ogóle nie braliśmy pod uwagę ducha, wartości, Pana Boga, w ogóle nikt nad tym się nie zastanawiał. A pamiętacie, co się stało w tym stanie niemocy, braku wiary? – Polak został Papieżem! Uruchomił wartości, oczywiście nie zrobił rewolucji, ale uruchomił wartości, pozwolił w tych tłumach policzyć się. Pozwolił popatrzyć ilu nas jest, pozwolił się nam zorganizować, bo zawsze nas rozbijano. Nie pozwolono nam się zorganizować. I to zorganizowanie szczątkowe, opozycyjne grupy przejęły, poprowadziły przez opozycje, strajki i… – Ciąg dalszy  znacie.

    Wartości okazały się lepsze od czołgów, rakiet, dolarów. I jeśli o tym będziemy pamiętać przy budowaniu tego nowego systemu – jednak przypomnijmy sobie o tym wszystkim – to jestem przekonany, że naprawdę  zbudujemy Polskę, Europę i nawet globalizację – nie idealną, ale daleko porządniejszą niż budowy, które wcześniej były tworzone przez nas. Świat dziś proponuje – bo jak wiecie często jeżdżę – świat dziś proponuje nie  szukać, ale oprzeć wszystko na wolności, wszyscy ludzie w Europie, a potem globalnie są jednakowo wolni. Ładne. Ludzie jednakowo wolni mogą się organizować jak chcą: poprzecznie i podłużnie, i zakładają organizacje. Wolny  rynek, żadnej dotacji, żadnej pomocy, sprawy wartości ducha, Pana Boga – do dowolnego użytku. I to jest ta koncepcja na dzisiaj, która jest pół na pół, ale z przewagą. I ta koncepcja jest piękna i by się nawet podobała, ale jest ostatnią w tamtym układzie podziału, nie nadającą się moim zdaniem na te czasy. Ta koncepcja – do czego doprowadzi? To już widać, ale jeszcze będzie trochę lepiej widać.

    Otóż doprowadzi do tego, że będą powstawać bezideowe grupy partyjne  i inne i będą oszukiwać, kraść, kombinować, mając gdzieś to wszystko. A co będzie robiła demokracja? To, co zaczęła już robić: komisje powoływać, każdy z Państwa będzie w dziesięciu komisjach. Komisję, by rozliczyć, komisję, by zauważyć, komisję, by poprawić. A te komisje będą jeszcze większe przekręty robić, niż by miały wyjaśnić. Wszystkie podatki, wszystko nam zabiorą, nic dobrego nie zbudujemy – nie wierzę w taką budowę.  Jest i druga koncepcja – 50% – która mówi właśnie, że musimy oprzeć sprawy na wartościach, ale tu jest problem. Każde państwo ma trochę inne wartości. W związku z tym, co trzeba zrobić? No, trzeba między tymi państwami w Europie pouzgadniać wartości religijne,  niereligijne i inne. I to uznać za fundament. Papież nasz mówił: „człowieka sumienia trzeba wychować”, ale patrzył przez wiarę – to się zgadza. A my musimy sprawdzić przez wiary, ale różne wiary i z tego wyciągnąć wartości.

    Dziesięć przykazań wszyscy musimy uznać za niezbędne. Oczywiście wartości są generalnie potrzebne, globalne 5 punktów, kontynentalne 10 punktów, państwowe 15, a potem jeszcze inne może 30, ale wszystkie po kolei – te  górne się uznaje, a potem w dół zjeżdża. To są problemy moje i to są problemy, które – moim zdaniem – stoją przed światem. I stąd, jak słyszycie, moje zachowaniei moje oceny. Ostrożnie to róbcie, dlatego że w tym  temacie, w którym dzisiaj mam problem, sprawy wyglądają mniej więcej tak. W tamtej epoce, kiedy były podziały, granice, faszyzm, komunizm, jeszcze inne totalitaryzmy, nie było wolno tańczyć z byle kim. Trzeba było patrzeć, z kim się  tańczy. Takie zachowanie, które dzisiaj mi proponują, to jest właśnie klasyczne z tamtej epoki.

    Dzisiaj, o co innego chodzi. Chodzi o jedność europejską. Chodzi też o to, że pałowanie lub obrzucanie – nie to, nie te czasy. Trzeba rozmawiać. In bardziej przeciwny, tym bardziej go trzeba do stołu, do płotu doprowadzić i zapytać, „a co ty masz? Pokaż światu jak ty widzisz tę Unię czy inne rzeczy. Pokaż!” I niech naród ciebie wybierze, a nie proponować, „schowaj go, zamknij, spałuj, może zastrzel”. To jest dokładnie z tamtej epoki, a to, co ja teraz robię – mimo sprzeciwów – to jest właśnie ta nowa epoka, która mówi „rozmawiać, pokazywać, prezentować swoje zdanie, dążyć do negocjacji,  dążyć do tego żeby się nie pałować”. W tamtej epoce, tak: trzeba się było i pałować i kamieniami rzucać.A w tej epoce hańbą jest, jak wychodzimy na ulicę, jak zamiast intelektu, mądrości, logiki – to my pałowanie  uruchamiamy, albo – to „Nie!” – Nie oglądaj! Nie wolno z nim gadać!” Nie, proszę Państwa! I stąd – znów skorygujcie mnie – bo ja nie zdradziłem, nie sprzedałem tylko uważam, że inaczej widzę Europę. Inaczej widzę nasze wielkie zwycięstwo.

    Naprawdę  wielkie zwycięstwo, ale ono wymaga dalszej kontynuacji, bo po zwycięstwie otworzyła się nowa epoka, nowe możliwości i one wymagają nowych rozwiązań, których poszukuję, będę poszukiwał i Państwa zapraszam do takich poszukiwań. Nigdy nie byliście tak bardzo potrzebni jako „mózgi”, jak dzisiaj do budowy tego właśnie nowego. Jeśli nie zdamy egzaminu, będziemy trwać w tamtych rozwiązaniach – cofniemy się do nacjonalizmu. Kiedyś zawrócimy z tej drogi, ale ile to będzie kosztować! I to  pokolenie zwycięskie, ono musi, jesteście w stanie intelektualnie i przy tej technice, którą macie, komputery itd… Jesteście w stanie rzeczywiście zaproponować Polskę, Europę i Świat, ale z poprawkami na czasy, które  właśnie za naszego życia się zdarzyły.

    To tyle, co chciałem Państwu powiedzieć. Dziękuję, życzę przyjemnego dnia.”

LECH WAŁĘSA
PAUza Akademicka Nr 41/42, 4-11 czerwca 2009

Cytat za: http://wyborcza.pl/1,97738,10030963,Grass_KamienieSyzyfa.html?as=1

    „Władza tych lobby w znacznie większym stopniu zagraża demokracji niż histerycznie podnoszone niebezpieczeństwa, sianie w stylu Sarrazina lęku i przerażenia. Władza lobby odbiera parlamentarzystom i rządowi wiarygodność. Prowadzi do tego, że rośnie absencja wyborcza.
[…]
Nie mogąc tej władzy zlikwidować – reprezentacja interesów ma przecież swoje uzasadnienie – należy postawić jej wyraźne granice. […] Dlatego potrzeba – moim zdaniem – ustawowo określonego okresu karencji wynoszącego minimum pięć lat. Chyba że obywatele, a w szczególności dziennikarze, pogodzą się z tym, że polityka z zasady jest przekupna i taką pozostanie.
[…]
Nie muszę i nie chcę powoływać się na Weimar jako na przykład ostrzegawczy. Obecne symptomy zmęczenia i rozpadu konstrukcji naszego państwa są wystarczającym powodem, by mieć poważne wątpliwości, czy nasza konstytucja gwarantuje jeszcze swoje obietnice. Dryf w kierunku społeczeństwa klasowego z coraz biedniejszą większością i odgradzającą się od niej warstwą najbogatszych, góra długów, której szczyt przesłania dzisiaj chmura zer, nieudolność i opisany wcześniej bezwład wybranych w wolnych wyborach parlamentarzystów wobec skoncentrowanej władzy grup interesów i wreszcie dławiący uścisk banków są w moich oczach powodem, dla którego konieczne staje się zrobienie czegoś, co było dotąd tabu, to znaczy postawienie pod znakiem zapytania całego systemu.
[…]
Czy mamy nadal godzić się na niejako przymusowo zaordynowany demokracjom system kapitalistyczny, w którym świat finansów w dużej mierze oddzielił się od gospodarki, ale raz po raz zagraża jej za sprawą zawinionych przez siebie kryzysów? Czy takie artykuły wiary jak rynek, konsumpcja i zysk nadal mają być naszą religią?

 

    Dla mnie w każdym razie jest rzeczą pewną, że system kapitalistyczny wspierany przez neoliberalizm i pozbawiony alternatywy, jak sam się przedstawia, zdegenerował się do roli maszynerii, która niszczy pieniądze, i w oderwaniu od odnoszącej niegdyś sukcesy społecznej gospodarki rynkowej służy już tylko sobie samej: jako nieprzyjazny społeczeństwu moloch, którego skutecznie nie ogranicza żadne prawo. 

 

Dlatego w dalszej kolejności powstaje pytanie: czy wybrana przez nas forma rządów, czyli demokracja parlamentarna, ma jeszcze wolę, a także siłę do tego, by obronić się przed tym grożącym jej rozpadem? Czy też każda próba reform mająca na celu poddanie banków i ich sposobu obchodzenia się z pieniędzmi jakiejś kontroli, to znaczy zmuszenia ich do działania w imię dobra wspólnego, nadal będzie delegowana do sfery niezobowiązujących deklaracji za pomocą rytualnego uzasadnienia, że „coś takiego, jeśli w ogóle, może się udać tylko na poziomie globalnym”?

 

    Jedno wydaje mi się pewne: jeśli demokracje zachodnie okażą się niezdolne do tego, by za pomocą fundamentalnych reform przeciwstawić się grożącym im już obecnie i spodziewanym w przyszłości niebezpieczeństwom, to nie będą w stanie poradzić sobie z tym, co w nadchodzących latach jest nieuniknione: kryzysami rodzącymi następne kryzysy, niepohamowanym wzrostem liczby ludności na świecie, spowodowanymi niedostatkiem wody, głodem i nędzą falami uchodźców oraz wywołanymi działalnością człowieka zmianami klimatycznymi. Rozpad porządku demokratycznego pozostawiłby jednak po sobie, o czym świadczy dostatecznie dużo przykładów, pustkę, a tę mogłyby zagospodarować siły, których opis przekracza możliwości naszej wyobraźni – mimo że sparzyliśmy już sobie palce na faszyzmie i stalinizmie, których skutki nadal odczuwamy.”

Günter Grass

Tekst za „Süddeutsche Zeitung” z 4 lipca 2011 r.

W 1855 zmarł Carl Friedrich Gauss. Trzy lata później w roku 1858 Moritz Abraham Stern został mianowany Ordinarius Na Uniwersytecie w Getyndze, zajmując tym samym katedrę Gaussa. Stern był pierwszym pełno-miarowym profesorem matematyki żydowskiego pochodzenia w Niemczech. W roku w którym obejmował stanowisko Gaussa Stern opisał ciekawą konstrukcję na liczbach wymiernych. Był to rodzaj listy ułamków ułożonych w pewnym porządku, tak, że dało się je narysować w postaci drzewa binarnego. Każdy wierzchołek w drzewie – rodzic, miał dwie wychodzące z niego gałęzie – dzieci. Związek pomiędzy wartościami rodziców i dzieci byl prosty ale intrygujący – napiszemy o tym niżej. Stern opisał ciekawe własności tej konstrukcji – jako zawodowy matematyk zajmował się teorią liczb zaś konstrukcja przypominała i uogólniała opisane wcześniej w 1818 roku ciągi Fareya – co zapewne było samo w sobie interesujące. Zupełnie niezależnie konstrukcję tą, z powodów praktycznych, w kilka lat później powtórzył francuski zegarmistrz Achille Brocot -było to w 1861 roku. Konstrukcja ta przeszła do historii pod nazwą drzewa Sterna-Brocota. Co takiego praktycznego zainteresowało Achille Brocota – zegarmistrza, którego ojciec także był zegarmistrzem – w uporządkowaniu ułamków w drzewo?
Problemem blisko związanym z zegarmistrzostwem jest konstrukcja przekładni zębatych. Mechanizm zegarowy musi transmitować napęd dając precyzyjną i z góry zadaną liczbę obrotów – często kilka zadanych liczb obrotów. Na przykład wskazówka godzinowa musi obracać się 2 razy podczas gdy minutowa 1440 razy na dobę. Ponieważ obie napędzane są z jednej sprężyny – trzeba skonstruować przekładnię zębatą która zapewni stosowne przełożenia – 1/720. W dawnych czasach koła zębate wykonywano ręcznie – precyzyjne wykonanie koła o dużej liczbie zębów jest nie lada wyzwaniem i bardzo czasochłonną pracą. Luksusowe produkty zegarowe – nie tylko zegary liczące czas, ale i inne służące rozrywce, wskazujące fazy księżyca i może datę Wielkanocy, różne pozytywki wymagały sporej wiedzy już na etapie projektu – należało wyliczać ilości zębów w kołach by uzyskać właściwe stosunki. Jeśli chcemy wykonać przekładnię realizującą stosunek 34/55 możemy dokonać rozkładu licznika i mianownika: 17/5* 2/11 i uzyskać szukane przełożeni używając 4-rech kół zębatych – łącząc dwie przekładnie o stosunkach jak tym iloczynie. Metoda zdaje się działać, przynajmniej dla prostych stosunków. Znanym problemem zegarmistrzowskim było zadanie postawione przez Charlesa E. Camus – chodziło o projekt zegara realizującego stosunek 720 / 525,949 . Problem z tym ułamkiem jest taki, że mianownik jest liczbą pierwszą, a więc nie damy rady go rozłożyć na czynniki. Tym samym, nawet starając się wykonać przekładnie złożoną z wielu kół nie unikniemy wykonania koła o olbrzymiej ilości zębów! Powinniśmy się zatem raczej odwołać do przybliżeń. Jak znaleźć najlepsze – takie w którym ułamki mają możliwie najmniejszą liczbę zębów ale ich stosunki dobrze przybliżają poszukiwaną wartość? Odpowiedź na to pytanie była wynikiem pracy Brocota, jego metodę można znaleźć tu: http://www.ams.org/samplings/feature-column/fcarc-stern-brocot dodajmy jedynie, że

720 / 525,949 ~ 196 / 143,175 = 2/3 * 2/25 * 7/23 * 7/83

było jednym z możliwych rozwiązań. Drzewo Sterna Brocota umożliwia systematyczne wyliczanie takich przybliżeń, co więcej gwarantuje optymalność – mogę przypuszczać, że jego implementacja to także współczesne narzędzie służące do projektowania przekładni zębatych – ciekawe lu ludzi zdaje sobie współcześnie z tego sprawę ( czy jest inżynier na sali? czy wspomniano o tym?)…

Przejdźmy zatem do opisu konstrukcji Sterna-Brocota. Klasyczna szkolna konstrukcja drzewa zakłada użycie tzw. mediantów. Dla danych ułamków A = a/b i B=c/d ich mediantem nazywamy ułamek M = (a+c)/(b+d) co przypomina nieco sposób dodawania ułamków jaki błędnie wypracowują sobie dzieci. Drzewo Sterna-Brocota to drzewo ułamków, a więc liczb wymiernych. Każda liczba wymierna daje się przedstawić jako iloraz liczb naturalnych p/q gdzie q=/= 0. Jednak drzewo o którym mówimy jest konstruowane wychodząc od dwu stosunków w postaci 0/1 i 1/0 z których jeden jak widać nie jest ułamkiem. Może dać to pretekst do rozważań na temat roli punktu w nieskończoności w tej konstrukcji i a z estetycznego punktu widzenia nieco psuje konstrukcję klasyczną. Wydaje się jednak że jest ona nadal prostsza pojęciowo, zwłaszcza gdy mowa o praktycznych zastosowaniach. Poniżej wprowadzimy znacznie ładniejszą w mojej ocenie konstrukcje algebraiczną. Ale nie uprzedzajmy faktów.

Z każdego wierzchołka drzewa spuśćmy w dól linię. Drzewo SB wisi rozpięte między dwoma stosunkami 0/1 i 1/0 i linie spuszczone z tych elementów są granicami drzewa. Każdy element drzewa leży pomiędzy dwoma liniami – i jest mediantem stosunków od których te linie wychodzą. Tak więc pierwsze dwa elementy ( które nie są uważane za części drzewa i stanowią tylko jego „techniczne zawieszenie” ) to 0/1 i 1/0. Następny -pojedynczy element – to ich mediant czyli:

(-1 – zawieszenie) – 0/1 1/0

(0-wiersz ) (0+1)/(1+0) = 1/1 = 1

Liczba 1 jest wierzchołkiem drzewa – spuszczamy z niej linię w dól – wraz z granicami – liniami opuszczonymi z 0/1 i 1/0 mamy podział „przestrzeni drzewa” dwa sektory. Po lewej stronie mamy linię wychodzącą z 0/1, po środku 1/1 a po prawej 1/0. Wyliczając medianty dostajemy kolejny rząd elementów drzewa:

(1-wiersz) (0+1)/(1+1) = 1/2 ; (1+1)/(1+0) = 2

Spuścimy kolejne linie, wyliczymy kolejne medianty:

(2-wiersz) (0+1)/(1+2) = 1/3 ; (1+1)/(2+1) = 2/3 ; (1+2)/(1+1) = 3/2 ; (2+1)/(1+0) = 3

Myślę, że konstrukcja za pomocą mediantów stanie się jaśniejsza jeśli spojrzy się na rysunek ( z wikipedii):

Drzewo Sterna-Brockot

Powstaje w ten sposób drzewo SB o bardzo ciekawych własnościach. Po pierwsze ułamki sa w nim ułożone według pewnego porządku – ułamki o mniejszych liczbach w mianowniku są wyżej niż ułamki o większych mianownikach – drzewo jest wyposażone w porządek pionowy.. Po drugie wszystkie ułamki są nieskracalne. Trzecią ciekawą własnością jest to, że w drzewie SB każda liczba występuje w unikalny sposób – tylko raz. Czwarta własność -każda liczba ma tu swoją reprezentację. Drzewo SB jest więc to tablica wszystkich liczb wymiernych w określonym porządku.

Dokładniejsza analiza pokazuje dalsze własności: na lewo są zawsze liczby mniejsze a na prawo większe – mamy zatem porządek w wierszach a więc poziomy. Przyglądając się obrazkowi z wikipedii przedstawiającemu drzewo SB można zauważyć kolejną ciekawa własność. Przepiszmy liczniki ułamków z 3-ciego rzędu drzewa wypisanego wyżej – od lewej – dostaniemy wówczas ciąg 1,2,3,3. Przepiszmy teraz ciąg mianowników od lewej 3,3,2,1 (gdzie uznaliśmy że 3=3/1) Widzimy że jest to ten sam ciąg ale w odwrotnym kierunku! nie jest to przypadek – jest to cecha która występuje w każdym wierszu drzewa SB. Przypuszczam, że podobnego rodzaju własności można wskazać cale mnóstwo, dla nas jednak następuje tu czas aby odnieść drzewo SB do ułamków łańcuchowych.

Popatrzmy na ułamki znajdujące się w n-tym rzędzie drzewa. Przedstawię tutaj ciekawe podejście opisane przez Alexandra Bogomolny na jego fantastycznej stronie Cut-The-Knot ( sekcja o ułamkach łańcuchowych zaczyna się tu: http://www.cut-the-knot.org/blue/Euclid.shtml i przynależy do artykułów o algorytmie Euklidesa – polecam!).

Po pierwsze, skoro każdy rodzić ma tu dwoje potomków, zachowując notację w której wierzchołek drzewa, zawierający tylko jeden wyraz równy 1, ma numer 0, otrzymamy wniosek (ogólnie prawdziwy dla wszystkich drzew binarnych):

( T3 ) Jeśli piętra drzewa Sterna-Brockota liczymy od zera to na n-tym poziomie drzewa mamy 2^n liczb.

Warto zauważyć, że drzewo dzieli się na dwie gałęzie, prawa i lewą, oraz, że wyrazy po lewej są odwrotnościami tych po prawej stronie – gałęzie sa swoim lustrzanym odbiciem z inwersją. Biorąc pod uwagę opisany w poprzednim eseju fakt, iż dla ułamków łańcuchowych zachodzi zależność (wzór (10) w poprzednim wpisie) :

[a_0,a_1,...] = \frac{1}{[0,a_0,a_1,...]}

należy się spodziewać że i w drzewie SB znajdzie ona swoje wykorzystanie – np. możemy ograniczyć się do analizy połowy drzewa – druga połowa to lustrzane odbicie.

Zajmijmy się teraz bezpośrednim wyliczeniem ułamków łańcuchowych i ich związkiem z przedstawionym drzewem. Rozpoczniemy niewinnie od ponownego napisania wzoru na pierwszy krok w rozkładzie ułamka p/q na ułamki łańcuchowe:

(12) \frac{p}{q} = a_0 + \frac{r_1}{q}

Idąc za pomysłem przedstawionym na stronach Bogomolnego wprowadzimy tu nieco algebry linowej. Pomysł jest taki: niech ułamek p/q będzie reprezentowany przez wektor [p,q] i niech będzie to kolumna. Spróbujmy równanie (12) przedstawić za pomocą takich wektorów, w postaci macierzowej:

(13) \left| \begin{array}{c}  p \\  q \\  \end{array} \right| =    \left| \begin{array}{c}  a_0q + r_1 \\  q \\  \end{array} \right| =    \left| \begin{array}{cc}  1 & a_0 \\  0 & 1 \\  \end{array} \right|    \left| \begin{array}{c}  r_1 \\  q \\  \end{array} \right|

Jak na razie – fajnie. Co dalej. W następnym kroku rozkładu na ułamki powinniśmy wziąć odwrotność r_1/q czyli q/r_1 i powtórzyć nasze rachunki:

(14) \frac{q}{r_1} = a_1 + \frac{r_2}{r_1}

Szczęśliwie w języku macierzy nie musimy martwić się o odwrotność, po prostu zapiszemy nasze równanie za pomocą odpowiednio dobranych macierzy:

(15) \left| \begin{array}{c}  r_1 \\  q \\  \end{array} \right| =    \left| \begin{array}{c}  r_1 \\  a_1r_1 + r_2 \\  \end{array} \right| =    \left| \begin{array}{cc}  1 & 0 \\  a_1 & 1 \\  \end{array} \right|    \left| \begin{array}{c}  r_1 \\  r_2 \\  \end{array} \right|

Sprytnie, prawda? Następnych kroków łatwo się domyśleć: za każdym razem dokonujemy rozkładu tej ze współrzędnych wektora która jest większa ( za pierwszym razem było to p, za drugim q). Konstrukcja – nasz algorytm – sprawia, że raz jest to współrzędna górna a raz dolna. Jak widać pojawiają się tu ciekawe macierze w postaci:

(16) \left| \begin{array}{cc}  1 & 0 \\  s & 1 \\  \end{array} \right| =    \left| \begin{array}{cc}  1 & 0 \\  1 & 1 \\  \end{array} \right|^s = L^s

oraz:

(17) \left| \begin{array}{cc}  1 & t \\  0 & 1 \\  \end{array} \right| =    \left| \begin{array}{cc}  1 & 1 \\  0 & 1 \\  \end{array} \right|^t = R^t

Zdefiniowaliśmy tym samym operatory macierzowe L i R. Zauważmy, że możemy (dzięki trickowi który pozwolił nam nie dokonywać operacji odwrotności) zestawić równania (13) i (15) w jedno:

(18) \left| \begin{array}{c}  p \\  q \\  \end{array} \right| =  \left| \begin{array}{cc}  1 & a_0 \\  0 & 1 \\  \end{array} \right|  \left| \begin{array}{c}  r_1 \\  q \\  \end{array} \right| =    \left| \begin{array}{cc}  1 & a_0 \\  0 & 1 \\  \end{array} \right|    \left| \begin{array}{cc}  1 & 0 \\  a_1 & 1 \\  \end{array} \right|    \left| \begin{array}{c}  r_1 \\  r_2 \\  \end{array} \right|    =R^{a_0}L^{a_1} \left| \begin{array}{c}  r_1 \\  r_2 \\  \end{array} \right|

jesteśmy już bardzo niedalecy od drzewa Sterna-Brocota. W poprzednim odcinku uzasadniliśmy, że rozkład jak powyżej musi się zakończyć na pewnym, skończonym etapie dla liczb wymiernych. nastąpi to oczywiście gr\dy jedna ze współrzędnych wektora [r_i,r_{i+1}] będzie zerowa. Uważny i podejrzliwy czytelnik z pewnością zechce rozpoznać w literach L i R angielskie skróty od słów Right i Left i będzie miał słuszność!

Dla otarcia się o prawdziwe obliczenia, podajmy tutaj jakiś konkretny przykład – a jego waga nie sprowadza się jedynie do rachunków. Wskaże on nam pewną cechę, która z jednej strony może być nieco rozczarowująca, ale z drugiej jest nieunikniona. nie uprzedzajmy faktów. Oto przykład:

(19) \left| \begin{array}{c}  4 \\  7 \\  \end{array} \right| =    R^0 \left| \begin{array}{c}  4 \\  7 \\  \end{array} \right| =    R^0L^1\left| \begin{array}{c}  4 \\  3 \\  \end{array} \right| =    R^0L^1R^1 \left| \begin{array}{c}  1 \\  3 \\  \end{array} \right| =  R^0L^1R^1L^3 \left| \begin{array}{c}  1 \\  0 \\  \end{array} \right| =  R^0L^1R^1L^2 L \left| \begin{array}{c}  1 \\  0 \\  \end{array} \right|

Po pierwsze zwróćmy uwagę, że otrzymaliśmy prawidłowy rozkład ułamka 4/7 = [0,1,1,3] co zresztą można odczytać z przedostatniej równości. Proszę teraz sprawdzić, gdzie mieści się 4/7 na drzewie Sterna-Brocota – stosownie duże drzewo jest tu: http://www.cut-the-knot.org/blue/stern.gif

Jak widać, chcąc dotrzeć do liczby 4/7 z wierzchołka reprezentowanego tu przez 1/1 należy wybrać się w Lewo, potem w Prawo, a potem 2-razy w Lewo – daje to zygzak postaci LRLL . A mogło być tak ładnie! Niestety w naszym rozkładzie na ostatnim miejscu jest liczba 3 a nie 2.

Okazuje się, ze na ostatnim miejscu ułamka łańcuchowego zawsze pojawia się cyfra o 1 większa niż stosowny zapis „zygzaka” od liczby 1/1 do liczby która przechodząc zygzak osiągamy. Taka własność drzewa – ot co.

Aby jednak całość rozjaśnić, to jest zagmatwać, zapisałem jeszcze jedną równość w równaniu (19). Teraz mamy poprawną ścieżkę, oraz jeden dodatkowy krok w lewo jeśli startujemy od „absolutnego zakotwiczenia drzewa” w postaci „ułamka „1/0”. Popatrzmy może na inny przykład:

(20) \left| \begin{array}{c}  2 \\  3 \\  \end{array} \right| =    R^0 \left| \begin{array}{c}  2 \\  3 \\  \end{array} \right| =    R^0L^1\left| \begin{array}{c}  2 \\  1 \\  \end{array} \right| =    R^0L^1R^2 \left| \begin{array}{c}  0 \\  1 \\  \end{array} \right| =    R^0L^1R^1 R \left| \begin{array}{c}  0 \\  1 \\  \end{array} \right|

I rzeczywiście, co nie powinno dziwić 2/3 = [0,1,2] ale tym razem mamy dodatkowy ruch w zygzaku ( dla 2/3 zygzak ma kształt LR) tym razem w prawo ale od 0/1. Najwyraźniej jakaś siła nie chce nam pozwolić operować na „gołych okropieństwach w postaci 1/0 i 0/1” i wstawia stosowne R lub L w ostatnie miejsce – łamiąc miłą dla oka symetrię i cenzorując horrendum wyrażeń postaci 1/0.. Co ciekawe i oczywiste R[0,1] =L[1,0] = [1,1] = 1… Rozkład jest poprawny – a nieoczekiwane pojawienie się liczby o jeden większej nie jest przypadkiem – można się tu dopatrywać jakiejś ingerencji wielkiego cenzora, albo metafizyki, a może po prostu rzeczy są nieco złośliwe. Drzewo pamięta jak jest zawieszone ale uwzględnia to w niemiłym dla nas miejscu. Ot, taka własność.

Czas na podsumowanie naszych wyprowadzeń. Niech ciąg liter R i L reprezentuje pewną ścieżkę w drzewie SB – L oznacza wybór lewej gałęzi, R prawej oraz jeśli w takim ciągu występuje po sobie kilka jednakowych liter, np. p liter R to taki fragment ciągu zapisujemy jako R^p ( podobnie dla liter L następujących po sobie). Rozpatrujemy tylko ciągi zaczynające się od litery R , z tym że dopuszczamy możliwość że występuje ona „0” razy. Niech CF oznacza funkcję która dla zadanego ciągu R i L zwraca ułamek łańcuchowy leżący w stosownym miejscu drzewa Sterna-Brocota. Możemy zapisać wzór na CF:

( 21 ) CF(R^{a_0} X_1^{a_1}X_2^{a_2}... X_k^{a_k}) = [a_0;a_1,a_2,...,a_k+1]

gdzie X^{a_p} oznacza R lub L a_p razy po sobie, zaś a_0 może być równe 0 lub nie. Czytelnik podobne wyprowadzenie może znaleźć u Bogomolnego, tam jednak użyte sa mnożenia macierzowe od lewej strony i wektory jako wiersze. Proszę pamiętać o tej różnicy w notacji porównując rachunki. Należy dla porządku także nadmienić, ze zapis procedury rozkładu ułamków łańcuchowych w postaci macierzy jest pochodną macierzowej postaci algorytmu Euklidesa – czy uczą tego na informatyce? Jak ktoś dociekliwy – proszę samemu spróbować zapisać algorytm na gcd(a,b) w postaci macierzowej – podobnie jak powyżej.

Skoro w ciągu liter RLRRLL…. zawarta jest informacja o miejscu ułamka łańcuchowego w drzewie SB, a zarazem o jego czynnikach, uzyskujemy w naturalny sposób ciekawy wniosek. Aby dojść do dowolnej liczby w 3-cim rzędzie musimy wykonać 3 ruchy licząc od 0 (powiedzmy RLL dla liczby 4/3 = CF(RLL) = [1,3] ) . Stosownie w n-tym rzędzie znajdują się liczby reprezentowane przez ciągi n-literowe. Prawdziwe jest zatem następujące twierdzenie:

( T4 ) Niech [a_0,a_1,...a_k] ułamkiem łańcuchowym pojawiającym się w n-tym rzędzie drzewa Sterna-Brocota. Wówczas:

\sum^{k}_{i=0} a_i = n + 1

Rozkład liczby na sumę czynników, kiedy bierzemy pod uwagę kolejność składników nosi nazwę kompozycji Twierdzenie T4 można zatem wypowiedzieć inaczej:

Na n-tym piętrze drzewa SB mamy wszystkie takie ułamki łańcuchowe że ich czynniki są kompozycjami liczby n przy czym należy pamiętać, że dopuszczamy możliwość iż zero może występować tylko na pierwszym miejscu.

Jako proste ćwiczenie kombinatoryczne proponuję dowieść że wynik ten jest zgodny z T3 w którym napisaliśmy, ze na n-tym wierszu drzewa Sb jest 2^n liczb ( zakładając, że wiersze liczymy od zera). Podpowiem że wystarczy zmodyfikować rozumowanie opisane w artykule o kompozycjach z wikipedii aby uwzględnić występowanie liczby 0 oraz fakt, że dla ułamków łańcuchowych zachodzi zależność [a_0,a_1...,a_k,1] = [a_0,a_1,...,a_k +1] ( należy konsekwentnie wybrać tylko jedną reprezentację ułamków, np. zawierająca zawsze 1-dynkę na końcu).

Uznałem że w tym miejscu zrobimy przerwę. Miałem napisać o funkcji ?(x) ale to chyba byłoby za wiele na raz. Jak zwykle proszę o uwagi i ewentualne poprawki co do rachunków.

W kolejnych odcinkach jeśli autor poradzi sobie z rachunkami (co mu na razie nie idzie) powiemy coś o pasjonującej funkcji ?(x) Minkowskiego oraz o drzewie Calkina–Wilfa – co będzie niejako rozważaniami na boku tego co chciałbym opisać, ale pozwoli zadać ciekawe, w opinii autora, 2 pytania. Głównym celem cyklu jest jednak przedstawienie nieco innego podejścia do tego co opisano tutaj, w tym wpisie. I temu poświęcę następny wpis.

    

    Chciałbym napisać tu coś o ułamkach łańcuchowych. Wpis ten ukazał się wczesnej na Google Buzz. Jak widać z fragmentów dyskusji przytoczonych poniżej nie jestem zbyt kompetentną osobą by pisać na ten temat, jednak mimo to napiszę, bez wielkich zmian. Być może w przyszłości, za słuszną sugestią profesora Włodzimierza Holsztyńskiego, zdobędę się na poprawienie swoich potknięć, rewizję poglądów, i uzupełnienie wpisu. Byłoby to ze wszech miar wskazane, jako, że Włodzimierz ma zdecydowanie rację tam gdzie podkreśla że nie posiadam dostatecznej wiedzy i praktyki co do ferowania ogólnych ocen na temat matematyki i matematyków. Z drugiej strony w pewnych kwestiach, jak by to śmieszne się miało nie wydawać, mam własne zdanie na przedstawianą treść. Tak więc by rzecz dobrze wyjaśnić, a czytelnika nie znudzić, chciałbym wyrazić tu pewną prośbę: czytajcie to co poniżej z dystansem, i darujcie mi niekompetencję. Jestem człowiekiem niecierpliwym, a bardzo chcę pokazać coś więcej niż to co mieści się w typowym traktowaniu poniższej tematyki. by jednak było to możliwe, konieczne jest danie kontekstu. Pokazanie pewnego wprowadzenia by rozmowa nie sprowadzała się do napisania kilku wzorów których nikt nie zrozumie. Namawiam zatem do przeczytania, przemyślenia, skomentowania, ale i do poczekania aż uda mi się dojść do bardziej intrygujących, na amatorski sposób, ciekawych, tematów….

    Ułamki łańcuchowe to ciekawa i niezbyt pamiętana współcześnie konstrukcja. Gdyby spytać o nie ucznia szkoły średniej to pewnie jedynie pasjonaci matematyki znaleźliby jakieś wiadomości o tego typu obiektach, na ogół nie potrafiliby jednak podać pewnie żadnych faktów poza definicją. Przypuszczam, ze nawet studenci matematyki nie posiadają jakiejś szczególnej wiedzy na temat ułamków łańcuchowych gdyż nie są one związane w sposób szczególny z żadnym działem współcześnie wykładanej matematyki uniwersyteckiej. Oczywiście znajomość definicji i podstawowych własności jest elementem ogólnej kultury matematycznej, jednak chyba ułamki łańcuchowe są współczesne raczej kuriozum niż szczególnie ważną konstrukcją w matematyce. Współczesna matematyka zdaje się umieszcza je w obrębie tak zwanej matematyki konkretnej, lezą na pograniczu matematyki stosowanej, informatyki i technik numerycznych.

    Warto wiedzieć, że jeszcze kilkadziesiąt lat temu, i na przełomie stuleci XIX i XX, a zwłaszcza w czasach jeszcze wcześniejszych, ułamki łańcuchowe były ważną konstrukcją matematyczną. Ich analiza zaprzątywała umysły tego formatu co Euler który dowiódł za ich pomocą niewymierności liczby e. Lambert używając ułamków łańcuchowych dowiódł niewymierności liczby pi. Uczeni tej miary co Lagrange, Gauss który wprowadził ułamki łańcuchowe zespolone, oraz wyrażał ich wartości a pomocą funkcji hipergeometrycznych prowadzili aktywne badania na ich polu. ważne konstrukcję wprowadził Pade – twórca tzw. aproksymant Pade, ciekawe i charakterystyczne dla niego są wyniki Ramanujana. Wreszcie Chiniczyn – autor monografii na ich temat. Wówczas było to pole ciekawych badań. Ułamki łańcuchowe mają bliski związek z aproksymacją diofantyczną czyli przybliżaniem liczb rzeczywistych niewymiernych liczbami wymiernymi z dobra, najchętniej optymalną dokładnością. Badania związane z ułamkami łańcuchowymi doprowadziły Chniniczyna do odkrycia tak zwanej Stałej Chiniczyna, która w wikipedii wymieniana jest jako jedna z 10 najważniejszych stałych matematycznych obok liczby pi i liczby e.

    Zajmijmy się na początek podstawowymi definicjami. Przez ułamek łańcuchowy, zapisywany jako [a_{1};a_{1},a_{2},a_{3} \ldots a_{k}] będziemy rozumieli liczbę postaci:

[ a_0;a_1,a_2,a_3...a_k ] = a_0 + \frac{1}{ a_1 + \frac{1}{ a_2 + \ldots \frac{1}{ a_k}}}

gdzie liczba a_0 jest liczbą całkowitą ( a więc może być ujemna, zero lub dodatnia) zaś a_{i} są liczbami naturalnymi. Jest to tak zwany ułamek łańcuchowy w postaci kanonicznej lub regularnej lub prostej . Jest to postać wyróżniona – w takim piętrowym ułamku, wszystkie liczniki zawierają wyłącznie cyfrę 1. Oczywiście w sensie ogólnym tak być nie musi – mamy wówczas do czynienia z ułamkiem niekanonicznym lub złożonym. Teoria ułamków niekanonicznych jest co najmniej tak samo, jeśli nie bardziej ciekawa jak ułamków kanonicznych. Jednak w naszych rozważaniach nie będziemy o nich wspominać.

    Skoro mamy definicję, spróbujmy zapisać w tej postaci jakąś liczbę. wiele przykładów jest bardzo prostych, inne wymagają pewnego nakładu pracy:

\frac{3}{2} = [1;2] = 1 + \frac{1}{2}

3 10/71 = [4;2,1,2,1,2,2] = 4 + \frac{1}{2 + \frac{1}{1+\frac{1}{2+\ldots }}}

    Jak szybko wyliczać ułamki łańcuchowe znając daną liczbę?

    Najszybsze jest użycie programu komputerowego. Wiele dostępnych pakietów bardzo sprawnie wylicza rozkład zadanej liczby na ułamki łańcuchowe, polecam jednak dwa z nich: Sage  które jest wspaniałym narzędziem do zabawy matematyka, jednak jego pobranie to około 400 Mb a instalacja zajmuje około 4 Gb! Monstrum. Dla poszukujących czegoś lżejszego – polecam Pari/GP. Wspaniałe narządzie dla wszystkich zabawiających się teorią liczb, kiedy żona i dzieci śpią. A przy tym nadal jedno z najbardziej wydajnych, wśród darmowych programów – z pewnością rekordzista szybkości.

   Uruchamiamy więc Pari/GP i piszemy: contfrac(52163/16604) i naciskamy enter. Magia! Wynik to: %11 = [3, 7, 15, 1, 146] . Jak oni to zrobili?

    Kiedy mamy zadaną liczbę powiedzmy A, to aby przedstawić ją w postaci ułamka łańcuchowego musimy ją zapisać jako:

A = a_0 + 1/x_0

    Och to proste: a_0 to po prostu część całkowita z liczby A! x_0 też znajdziemy w prosty sposób – x_0   jest odwrotnością części ułamkowej liczby A. A dalej? Dalej to samo! Liczbę x_0 przedstawimy w postaci:

x_0= a_1 +1/x_1

    A z x_1 zrobimy to samo i tak dalej, aż cały proces na którymś kroku się zatrzyma – nie będzie już części ułamkowej. Po wstawieniu wszystkich pośrednich rachunków do jednego wzoru dostaniemy formułę z definicji (1). Pojawia się więc ważne pytanie: Dla jakich liczb ten proces ma szansę się zatrzymać?

    Po pierwsze zauważmy, że jeśli mamy ułamek łańcuchowy [a_0;a_1,a_2,a_3...a_k] to w wyniku wyliczenia jego wartości z definicji (1) otrzymamy liczbę wymierną ( jako stosowny wynik operacji dodawania i dzielenia na liczbach wymiernych, a te są przecież ciałem – a więc te operacje nie wyprowadza nas poza zbiór liczb wymiernych). Możemy wypowiedzieć zatem wniosek:

( T1 ) Skończony ułamek łańcuchowy to pewna liczba wymierna.

    Czy każda liczba wymierna ma zatem postać skończonego ułamka łańcuchowego? Rozważmy liczbę wymierną p/q . Nie ma dla nas znaczenia czy jest to ułamek właściwy czy nie, ważne wszakże, że q \neq 0 . Postępując zgodnie z pomysłem na rozkład na ułamki łańcuchowe opisany wyżej możemy zapisać:

\frac{p}{q} = a_0 + \frac{r_0}{q} = a_1 + \frac{1}{\frac{q}{r_0}} = a_0 + \frac{1}{x_0}

    po pierwsze zauważmy, że

r_0 < q

    gdyż a_0 jest częścią całkowita jaką da się tu wyciągnąć, więc r_0/q jest ułamkiem właściwym. Jeśli mamy r_0 = 0 cały proces się kończy i mamy ułamek łańcuchowy w skończonej postaci. Załóżmy że tak nie jest. Co dalej? Wówczas musi być r_0/q <1 a więc q/r_0 >1 Wykonajmy następny krok rozkładu:

x_0 = \frac{q}{r_0} = a_1 + \frac{r_1}{r_0} = a_1 + \frac{1}{\frac{r_0}{r_1}} = a_1 + \frac{1}{x_1}

    I tu ważne spostrzeżenie:

r_1 < r_0

    z tych samych powodów jak wyżej w równaniu (7). Widzimy zatem, że w procesie iteracji uzyskujemy ciąg czynników r_0 > r_1 > ...> r_k > \ldots które są malejące! W wyniku takiego procesu musimy osiągnąć 0, co zakończy działanie całego algorytmu, bo liczby r_i sa liczbami naturalnymi. Dowiedliśmy zatem następującego stwierdzenia;

( T2 ) Każda liczba wymierna może zostać przedstawiona jako skończony ułamek łańcuchowy prosty.

    Analizując rzecz nieco bardziej szczegółowo można spostrzec, że przedstawiony powyżej algorytm jest bardzo podobny do algorytmu Euklidesa znajdowania największego wspólnego podzielnika dwu liczb. To prawda! Algorytm Euklidesa jako wynik uboczny daje także informacje o rozkładzie liczby na ułamek łańcuchowy. Jednak samo dokonanie rozkładu na ułamki łańcuchowe, przedstawione powyżej, wydaje się być nieco prostsze i łatwiejsze.

    A co z liczbami niewymiernymi? Otóż liczby niewymierne nie mają skończonego rozkładu na ułamki łańcuchowe. W zasadzie nie powinno to dziwić, nie tylko dlatego że przyzwyczailiśmy się do ich „patologii” czy wyjątkowości ( co przecież jest ledwie opinią bardziej estetyczną niż obiektywną). Każda liczba niewymierna może być przybliżana przez liczby wymierne. Lepsze przybliżenia- to na ogół bardziej skomplikowane ułamki – o większych liczbach w liczniku i mianowniku – a zatem dłuższe rozwinięcia w ułamki łańcuchowe… Najbardziej znanym przykładem może być tu liczba pi. Popatrzmy na je kolejne przybliżenia i ich rozkłady na ułamki łańcuchowe (przybliżenia za wikipedią, rozkłady za pomocą PARI/GP):

\pi \approx 3, \frac{22}{7}, \frac{333}{106}, \frac{355}{113}, \frac{52163}{16604}, \ldots

3 = [3]
22/7 = [3,7]
333/106 = [3,7,15]
355/113 = [3,7,16]
52163/16604 = [3,7,15,1,146]

    I tak dalej. Początek dokładnego liczby pi na ułamki łańcuchowe wygląda zaś tak (http://oeis.org/A001203 ):

\pi = [3, 7, 15, 1, 292, 1, 1, 1, 2, 1, 3, 1, 14, 2, 1, 1, 2, 2, 2, 2, 1, 84, ... ]

    Warto zwrócić uwagę, ze znana liczba 22/7 to wynik znany już Archimedesowi, oraz, że szczególnie dobre aproksymacje wymierne to te, które urywają się tam gdzie w ułamku łańcuchowym występuje duży czynnik. W takim wypadku następna poprawka a_j jest bowiem szczególnie mała…

    W ten oto sposób doszliśmy do ważnego zastosowania ułamków łańcuchowych: aproksymacji liczb niewymiernych. Jeśli ułamek łańcuchowy dla pewnej liczby niewymiernej, podobnie jak dla liczby pi, ma jakiś duży czynnik na j-tym miejscu, wówczas jego obcięcie na j-tym miejscu, nazywane j-tym konwergentem lub po polsku j-tym reduktem liczby, daje szczególnie dobre przybliżenie owej liczby. Na przykład 333/106 = [3,7,15] = 3.141509434 to drugi redukt liczby pi, i jak widać daje dobrą dokładność do 4-tego miejsca po przecinku.

    Czy każdy ułamek łańcuchowy, skończony lub nieskończony [a_0;a_1,a_2,a_3...a_k, \ldots ] dla całkowitego a_0 i dowolnych naturalnych a_i różnych od zera reprezentuje jakąś liczbę? Okazuje się, i jest to bardzo ważny fakt – że tak! Co więcej można by nawet nieco zliberalizować założenia i dopuścić by liczby ia_i były całkowite ( różne od zera) byle szereg będący ich sumą był rozbieżny. Przy takich założeniach ułamek łańcuchowy jest zbieżny do jakiejś liczby. Co istotne, jeśli jest nieskończony – liczba ta jest niewymierna, a jeśli skończony – wymierna – co dowiedliśmy powyżej ( liczby rzeczywiste są albo wymierne albo nie, jest to podział dychotomiczny i nie ma innych rodzajów liczb).

    Zauważmy, ze jeśli mamy niezerową liczbę A, to jej odwrotność 1/A w zasadzie przypomina fragment zależności (4) jeśli założymy, że a_0 = 0 . I rzeczywiście, prawdziwa jest zależność:

[a_0,a_1,...] = \frac{1}{[0,a_0,a_1,...]}

    Na koniec tego popularnego wprowadzenia uwaga o równaniach kwadratowych. Przypatrzmy się równaniu postaci:

x^2 -x -1 =0

jak wiadomo rozwiązaniem tego równania jest liczba \varphi stosunek złotego podziału. Jako ludzie leniwi, zamiast rozwiązywać równanie przepiszemy je w postaci:

x= 1 + \frac{1}{x}

a następnie za x podstawimy … wyliczony x:

x= 1 + \frac{1}{ 1 + \frac{1}{x} }

    Ponieważ proces ten możemy kontynuować w nieskończoność, aż x „zniknie” po lewej stronie równości ( a przynajmniej będzie już tak małe że go nie będzie widać – proszę samemu spróbować! ), skoro rozwiązanie oznaczyliśmy symbolem \varphi możemy napisać:

\varphi = [1,1,1,1,1, \ldots]

    Ciekawe prawda? Okazuje się, że całkiem podobnie zachowują się wszystkie pierwiastki równań kwadratowych! Jeśli liczba A jest pierwiastkiem równania kwadratowego i jest zarazem liczba niewymierną, to jej rozwinięcie na ułamek łańcuchowy jest okresowe. I odwrotnie – okresowe ułamki łańcuchowe reprezentują liczby niewymierne będące pierwiastkami równań kwadratowych!

    Czy istnieją inne podobne zależności? Oczywiście. Kilka przykładów można znaleźć tutaj. Co ciekawe, nadal nie wiadomo na przykład czy istnieją jakieś szczególne wzory związane z pierwiastkami innych równań wielomianowych – stopnia trzeciego czy dziesiątego. Intrygujące własności i problemy nie mające odpowiedzi kryją się także za pytaniami o długość rozwinięcia w ułamki łańcuchowe liczb wymiernych, pytaniem o długość okresu ułamków łańcuchowych okresowych i tak dalej.

Literatura: „Continued Fractions” A.Ya.Chiniczyn

   W następnym wpisie napiszę o drzewie Sterna-Brockota.
—————————————————
Poniżej dyskusja jaka odbyła się po mojej prośbie o „recenzję” powyższego wpisu.

Włodzimierz Holsztyński Miło, Kazimierzu, gdy piszesz konkretnie. Gorzej, gdy nakreślasz panoramy i ferujesz wyroki. Poza tym, gdy piszesz o otwartych problemach, to należy zaznaczyć, że matematycy stawiali je w przeszłości, pisali o nich wiele prac. Niedobrze jest robić wrażenie, że się te pytania samemu wymyślilo, jakby przez dziesiątki lat innym nie wpadały do głowy. Szczególnie razi to w przypadku narzucających się, naturalnych pytań, które często należą do domeny publicznej, bo na ogół matematycy nie chcą się podpisywać pod czymś, co każdy może naturalnie pomyśleć. Owszem, czasem wielkim matematykom przypisuje się wręcz banalne, choć ważne, rzeczy, by ich w ten sposob uczcić i nagrodzić za ich dzieło. A te drobiazgi slużą za pretekst do wykazania szacunku. Aug 24, 2011
Włodzimierz Holsztyński Pierwszy paragraf (w obecnej postaci) jest mylący. Matematyka nie jest popularna, więc niematematycy nie mogą mieć jasnego obrazu stanu rzeczy (nawet nie ma takiej potrzeby, matematyka jest skromna). Mógłbyś ten swój pierwszy paragraf równie dobrze napisać o zwykłych ułamkach k/m, i byłby równie (nie)prawdziwy.
Chociaż wszędzie w matematyce można stawiać nowe, dzikie, więc często trudne pytania, to jednak pewne działy/narzędzia dojrzały, wiadomo ile z ich pomocą można uzyskać w ich naturalnych ramach (bez przedefiniowywania i zmieniania zakresu dziedziny). One dalej są standardowe dla specjalistów. Tak jest właśnie z ułamkami łańcuchowymi. Wiele szanujących się podręczników teorii liczb zawiera między innymi elegancki i systematyczny wykład z ułamków łańcuchowych. Oprócz najslawniejszych matematyków również wielu mniej znanych, ale budzących swoimi wynikami szacunek, stosowało ułamki łancuchowe z wielkim mistrzostwem.
Twój artykuł jest na tyle niepełny (to nie jest krytyka, jeszcze nie :-), że naturalnego zakresu stosowalności ułamków łańcuchowych z niego nie widać. Zaznaczę ten zakres trochę w następnym komentarzu. Ograniczenie metody klasycznych ułamków łańcuchowych stymulowało pewne ich uogólnienia, by jednak pójść dalej. Aug 24, 2011

Kazimierz Kurz @Wlodzimierz Holsztyński – hm, a mógłbyś bardziej konkretnie o tych poruszanych/zadawanych już pytaniach? Bo właściwie to takich uwag oczekiwałem. Jak wiesz nie jestem zawodowym matematykiem i w większości wypadków zapewne nawet nie jestem świadom, że temat był już poruszany. Prawdę mówiąc zanim zabrałem się do pisania wykonałem pewną internetową kwerendę, ale też nie miałem ambicji pisać monografii a piszę „amatorsko” dla „amatorów” – w żadnym razie nie są to prace naukowe…
Jako, że jest to esej, uważam że mam prawo do własnej opinii, i z wielkim zainteresowaniem zapoznam sie z Twoją, a im bardziej będzie niezgodna z moją, tym więcej ciekawych rzeczy się nauczę ;-) Zgoda – Artur Popławski na G+ wspomniał, że ułamki łańcuchowe są w większości monografii, w tym w Narkiewiczu i Sierpińskim. Oczywiście to prawda – zarazem zwykle jest to samo sedno, poświęcone podstawowej konstrukcji i własnościom, nie wspomina się zwykle o drzewie SB, reprezentacji binarnej i związkach z SL(2,N). Rozumiem że to niszowe sprawy, akurat dla mnie ważne bo przygotowuję sobie grunt by opisać na końcu coś co sam (?) wymyśliłem. Aug 24, 2011

Włodzimierz Holsztyński Napisałeś Kazimierzu „Skoro mamy definicję [skończonego ułamka łancuchowego]”, ale definicji nigdzie nie podaleś. Być może w tego typu artykule nie ma potrzeby. Jednak frazy „mamy definicję” nie należy wtedy używać, bo szkodzi się mało doświadczonym. (Z drugiej strony dodam na zapas, że żadnych usprawiedliwień, zwłaszcza długich, też nie należy dawać). Aug 24, 2011

Kazimierz Kurz Alez definicja jest: „Zajmijmy się na początek podstawowymi definicjami. Przez ułamek łańcuchowy, zapisywany jako [a_0;a_1,a_2,a_3 ... a_k] będziemy rozumieli liczbę postaci:

(1) [ a_0;a_1,a_2,a_3...a_k ] = a_0 + \frac{1}{ a_1 + \frac{1}{ a_2 + \ldots \frac{1}{ a_k}}}

gdzie liczba a_0 jest liczbą całkowitą ( a więc może być ujemna, zero lub dodatnia) zaś a_i sa liczbami naturalnymi. Jest to tak zwany ułamek łańcuchowy w postaci kanonicznej lub regularnej lub prostej .
[…]
Skoro mamy definicję, spróbujmy zapisać w tej postaci jakąś liczbę. wiele przykładów jest bardzo prostych, inne wymagają pewnego nakładu pracy: ” Może nie działa Ci renderowanie wzorów? Aug 24, 2011

Włodzimierz Holsztyński Dowód twierdzenia (T2) jest ładny, a jego metoda cenna dla czytelników. Sformułowanie (T2) jest niepełne. Pelne twierdzenie mówi, że dla każdej liczby wymiernej istnieją dokładnie dwa różne skończone ułamki łancuchowe, reprezentujące daną liczbę. Informacja o dwóch rozkładach jest ważna w kontekście reprezentowania wszystkich liczb rzeczywistych. Jest to ważna część obrazu. Przypomina ułamki dziesiętne: każda liczba wymierna postaci k/10^n dopuszcza dokładnie dwa różne nieskończone rozwinięcia dziesiętne; na przykład (w układzie dziesiętnym):

1/10^0 = 1.0000… = 0.99999…

Wszystkie pozostałe liczby rzeczywiste są reprezentowane przez dokładnie jedno nieskończone rozwinięcie dziesiętne.

Chodzi w obu sytuacjach o reprezentowanie (rozrywanie i sklejanie) ciągłego zbioru liczb rzeczywistych poprzez dyskretne obiekty jak liczby calkowite lub cyfry dziesiętne. Aug 24, 2011

Włodzimierz Holsztyński Powszechnie mówi się o tym, że Archimedes udowodnił podwójną nierówność:
3 + 10/71 < pi < 3 + 1/7
W tej chwili nie jestem pewny, co wiadomo o jego znajomności dalszych przybliżeń. Być może już wtedy znał(?) późniejsze chińskie przybliżenie 355/113 (znane też poza Chinami), ale z pewnością nie więcej. Warto to porządnie sprawdzić. Aug 24, 2011

Włodzimierz Holsztyński Warto zauważyć, że kolejne redukty przybliżają wartość ułamka łancuchowego na przemian: od dołu, od góry, od dołu, od … Jest to prosta obserwacja.
Dobrze wiadomo, że kolejne redukty są (w mojej terminologii) sąsiadami, t.zn.
|k/m – s/t| = 1/(m*t)
Jest to jedna z ich podstawowych własności. Aug 24, 2011

Kazimierz Kurz O reduktach będę wspominał w późniejszym toku, chociaż z innych powodów.
Z Archimedesem – chyba masz rację – i chyba nieco przekoloryzowałem – znał tylko przybliżenie o którym piszesz na podstawie aproksymacji wielokątami. Aug 24, 2011

Włodzimierz Holsztyński Przy okazji niewymierności kwadratowych można podać informację o problemie ułamków łańcuchowych czysto okresowych, rozwiązanym i opublikowanym(!) przez E.Galois. Więc jeszcze jeden wielki matematyk zajmował się ułamkami łańcuchowymi.
Z grubsza mówiąc, teorioliczbowe problemy algebraiczne stopnia 2 oraz niewymierności stopnia 2 stanowią naturalny zakres stosowalności ułamków łancuchowych. Dla problemów stopnia 3 kilku matematyków badało pewne uogólnienia ułamków łancuchowych. Uzyskali pewne ciekawe wyniki, ale nie udało się rozwinąć równie pełnej i harmonijnej teorii, co w przypadku standardowych ulamków okresowych lub ich wariacji. Wygląda na to, że pełna ogólniejsza teoria, pożyteczna dla stopnia 3, nie istnieje. Aug 24, 2011

Włodzimierz Holsztyński Nie mogę się zdecydować, Kazimierzu, czy Twój artykuł jest krótki, czy długi. Mimo to w każdym wypadku zdumiewającym jest, że nie podałeś zasadniczego powodu dla wprowadzenia ułamków łańcuchowych. To, że czasem fuksem przybliżają niewymierności ekstra dokładnie, jest ledwo marginesową uwagą, a nie powodem. Czyli (gdy brak motywacji) mamy do czynienia ze sztuczną, ciężką konstrukcją, która w końcu nic nie daje. Poza odwrotnością liczb dodatnich, to nawet nie widać na oko żadnych na nich pożytecznych operacji arytmetycznych. Prawdziwy powód jest następujący: redukty i tylko ułamki równe reduktom, są tak zwanymi „najlepszymi przybliżeniami wymiernymi” liczby reprezentowanej przez ułamek łańcuchowy.
Przy tym „najlepszymi” w pewnym nie byle jakim silnym sensie – trzeba tu uważać, bo czasem nawet doświadczony matematyk może się w momencie słabości zmylić (czego byłem świadkiem na seminarium z teorii liczb na jednym z czołowych wydziałów matematycznych :-). Aug 24, 2011

Kazimierz Kurz @Włodzimierz – rozpatrujesz ten esej jako samodzielną całość – a tak nie jest – o bardzo praktycznej aproksymacji wspominam już w 2-giej części – przy czym wprowadziłem ją nieco historycznie – za pomocą drzewa SB które zostało użyte do wynajdywania takich przybliżeń. Moim celem jest jednak na koniec przedstawienie własnych wyników – dlatego cykl esejów ma do nich przybliżać. Ponieważ wyniki te (choć dla mnie ciekawe) nie są szczególnie przełomowe czy ważkie, uznałem że podążając w pewnym kierunku, będę jednak pisał nieco popularnie, by osoby niezwiązane uczuciowo z tematem coś z tego wyniosły. Gdybym napisał od razu co wymyśliłem – nikt by się tym nie zainteresował, a tym bardziej żądnej korzyści by z tego nie odniósł ;-) Aug 24, 2011

Włodzimierz Holsztyński @Kazimierz – jest trzykropkowa sugestia, ale definicji nie ma.
Rozpisanie się o ułamkach łańcuchowych bez podania ich zasadniczej własności, po prostu jest bez sensu, niepotrzebnie czytelnikowi zaśmieca się głowę. To, że w następnym artykule masz jakieś obserwacje dotyczące aproksymacji, niczego tu nie zmienia. Nawet nie odważyłeś się napisać, że równoważne. Prawdopodobnie nie wiedziałeś przy pisaniu. Prawdopodobnie słabsze.
Masz prawo do swoich opinii. Masz prawo głosić je publicznie. Co nie zmienia faktu, że aż za często jest to w złym guście. (Mniejsza o wartość merytoryczną, zaciemnioną niejasnym pisaniem).
Co do odnośników, to nie jestem specjalistą, ani nie mam zdolności kolekcjonowania ich. Na dodatek wciąż mi przetrzebiało moją osobistą bibliotekę, taki los. Wskażę na kilka problemów, do których stosowano ułamki łancuchowe. Jednak takich prac były tuziny, jeżeli nie setki. Prawdziwe poznanie ułamków łańcuchowych oznacza przeskoczenie pewnej bariery, Ci, którzy to uczynili, stosowali ułamki łańcuchowe jako swoje regularne narzędzie naukowe. Zaabsorbowanie wiedzy czyli nabycie techniki ułamków łancuchowych wcale nie jest czymś prostym – jest solidnym osiągnieciem (możliwym dla niewielu), które procentowało w twórczości szeregu laikom nieznanych, ale bardzo dobrych, utalentowanych ekspertów.
W każdym razie, skoro nie poszedłeś do biblioteki, nie przeszukałeś starannie literatury, to moralnie nie miałeś prawa podawać swojej opinii o stanie tej teorii. Jako minimum, choć to byłoby bez sensu, mógłbyś napisać, że podajesz opinię ignorancką, nie opartą na znajomości literatury. Internet wciąż, w przypadku matematyki, nie jest głównym źródłem matematycznej wiedzy historycznej lub bieżącej. Z czasem będzie lepiej, mam nadzieję, ale to jeszcze potrwa.
Ułamki łańcuchowe stosowano do dowodu twierdzenia Fermata o reprezentowaniu liczb pierwszych, dających 1 z dzielenia przez 4, jako sumy dwóch kwadratów (np. 5=2^2+1^2, 13 = 3^2 + 2^2, itd); stosowano do rozwiązania równania Pella; w tematyce Stormera; przy wyznaczeniu kolejnych, najgorzej wymiernie przybliżalnych liczb … J.Browkin i J.Brzeziński w publikacji z 1994 zastosowali ułamki łancuchowe heurystycznie do uzyskiwania przykładów, związanych z hipotezą abc.
Twoja uwaga, @Kazimierzu, na samym końcu artykułu o ułamkach łancuchowych, jest niestosowna. (Sam się nad tym zastanów, bo nie będę wywalał kawy na ławę). Aug 25, 2011

Kazimierz Kurz @Wlodzimierz – ja jednak jestem prostak i wolałbym abyś dał kawę na ławę. Nie wiem o czym mówisz, a obawiam się, że liczenie na moją domyślność jest kompletnie bez sensu. Artykuł jest pomyślany jako dosyć swobodna wymiana myśli, broń boże ani podręcznik ani wprowadzenie nie bardzo więc widzę powód dla którego miałbym formalnie pisać: Definicja: …
Krytykę przyjmuję, częściowo się z nią zgadzam, choć nie znalazłem w niej nic ( w mojej opinii) co miałoby spowodować konieczność zmian w tekście (np. napisanie: „J.Browkin i J.Brzeziński w publikacji z 1994 zastosowali ułamki łancuchowe heurystycznie do uzyskiwania przykładów, związanych z hipotezą abc.” – jest szalenie ciekawe i ważne, ale co to wnosi do wiedzy adresata tego wpisu który ułamków łańcuchowych w założeniu wcale nie zna a jeśli już to tylko od strony elementarnej definicji? Zaś przedstawienie hipotezy abc to jednak co najmniej osobny artykuł w którym wytknąłbyś mi – całkiem słusznie – kolejne tysiące błędów ;-) Bardzo chętnie natomiast przeglądnąłbym jakieś wprowadzenie w prace Galois o których wspomniałeś – masz może jakieś namiary?) . Uzupełnienie wiadomości historycznych jest jak najbardziej sensowną sugestia ale do treści niewiele wnosi – większość z tych tematów jest całkiem nieźle opracowana lub zasygnalizowana np. w wikipedii na temat ułamków łańcuchowych – a nie widzę powodu dla którego miałbym dublować tamtejsze wpisy. Dodanie rzetelnego wpisu historycznego wymagałoby po pierwsze bardzo wiele pracy ( sprawdzenie źródeł) a po drugie rozwlekłoby artykuł – musiałbym zrobić część „0” tylko o tym. W mieście ( a raczej miasteczku ) w którym mieszkam nie ma biblioteki naukowej – sam nie jestem afiliowany przy żadnej instytucji edukacyjnej – nie mam dostępu do JSTOR itp. – o szukaniu prac Galois nie mam więc co marzyć ;-) chyba że są na arxiv. Na Buzz czy G+ ( a nawet na blogu) nie ma miejsca na takie wpisy – w sumie szkoda. Ten i tak został nazwany „dłuuugaśnym”.
Ale może kiedyś wykonam jakąś część pracy która mi zalecasz – wówczas pewnie zbiorę to w formę nieco bardziej obszerną – ebook?. W zasadzie pchasz mnie w tym kierunku swoimi uwagami – i to jest intrygująca myśl… Aug 25, 2011

Włodzimierz Holsztyński @Kazimierz – wcale nie sugerowałem, że należy zamieścić odnośniki na które wskazywałem (choć może ze 2-3 przydałoby się, chyba tak, to nic o tym nie pisałem). Aug 26, 2011

Włodzimierz Holsztyński @Kazimierz – nie chodzi o słowo „DEFINICJA”. Chodzi o to, że nie podaleś definicji (nie ważne, czy wodrębnionej formatem, czy nie), a piszesz, że podałes. Nie musiśz podawać, ale wtedy należy jasno napisać, że się podało tylko sugestię ułamka łańcuchowego, a nie definicję. Podanie „wzoru” z trzema kropkami nie jest definicją. W najprostszych wypadkach można sobie na taki luksus pozwolić. W danym wypadku tak nie jest. Dałeś jakąś ideę o co chodzi, ale nie definicję.
Dla przykładu:
()\quad\quad\quad\sum_{k=1}^n\ a_k\ \ :=\ \ a_1 + ... + a_n
nie jest definicją sigmy (sumy od 1 po n). Podobnie dla funkcji rzeczywistej f nie jest definicją jej sumy wyrażenie typu:
(*)\quad\quad\quad\sum, f\ := ... + f(x) + ...
po wszystkich elementach x\in X , gdzie X jest domeną funkcji f,.
=================
Mam nadzieję, że TeX ( [;\TeX;] ) skompiluje się. (U siebie widzę go skompilowanego). Aug 26, 2011

Kazimierz Kurz @Wlodzimierz – co do definicji to zasadniczo nie bardzo rozumiem, a na swoje usprawiedliwienie mam następujące przykład:
http://books.google.com/books?id=R7Fp8vytgeAC&lpg=PP1&dq=continued%20fractions&pg=PA1#v=onepage&q&f=false – tu natomiast jest książka Chiniczyna – w zasadzie da mnie podstawowy materiał źródłowy ( obok wikipedii i strony Bogomolnego)
Czy mógłbyś zatem napisać jak Twoim zdaniem miałaby wyglądać ta definicja?
W moim mniemaniu definicja to „nazwa” na znany obiekt. Po lewej stronie – coś definiowanego – po prawej wyrażenie które znamy ( np. umiemy wyliczyć jego wartość). Oczywiście stosując sztuczne języki jak Coq, matematykę w języku aksjomatyzacji Peano arytmetyki itp. należy definicję także zapisywać formalnie. Nie widzę jednak powodu by w popularnej pogadance o ułamkach łańcuchowych pisanej swobodnym językiem i adresowanej do amatorów wyrażenie które napisałem nie miało być przyjęte za definicje. Coś czego nie zdefiniowałem – to ułamek łańcuchowy nieskończony – ale o tym będę jeszcze pisał a na tym etapie w zasadzie nie było potrzebne – operowałem w zasadzie wyłącznie na skończonych obiektach poza przykładem (!) dla równania kwadratowego co było wtrętem i nie miało związku z treścią. Aug 26, 2011

Włodzimierz Holsztyński @Kazimierz – pisz tak jak piszesz, tylko unikaj mówienia, że podałeś definicję. Możesz napisać, że Twoje dwa czy trzy paragrafy pozwalają dostatecznie jasno czuć czym są ułamki łańcuchowe. Ewentualnie możesz nawet napisać, że nie podałeś formalnej definicji, ale nie ma już wątpliwości czym są ułamki łańcuchowe. Przy tym w żadnym wypadku ani nie usprawiedliwiaj się z niepodania definicji formalnej, ani przede wszystkim nie pisz, że nie podałeś, bo piszesz dla niematematyków, itp. (trudno byłoby o coś gorszego w popularyzatorskim lub podręcznikowym tekście–w słabych jest to nagminne). Co najwyżej, i jak najbardziej, można czytelników po dalszą wiedzę odesłać do dalszych pozycji w literaturze, jak na przykład niewielki klasyczny podręcznik teorii liczb autorstwa Winogradowa (ostro napisany, ale świetny). Aug 26, 2011

Marek Wojcik Kazik, pisz nie przejmuj się. Z matematycznymi purystami zawsze są problemy, co nie zmienia faktu, że są szalenie pożyteczni, wręcz niezbędni na późniejszych etapach pogłębiania wiedzy. Aug 26, 2011

Kazimierz Kurz Heh, dziękuję Marku. Osobiście prosiłem Wlodzimierza o przejrzenie i krytyczną opinię – i jestem mu za nią wdzięczny. Biorę sobie do serca uwagi Wlodzimierza bo wie co mówi, choć zapewne patrzy na to co napisałem z innego kompletnie punktu widzenia niż ja – stąd spore różnice w zdaniach. Mam swoją wizję propagowania matematyki, jakkolwiek zabawnie by to nie brzmiało, drażni mnie maniera wypisywania twierdzenia popieranego następnie dowodem ( co przecież jest chwalebną tradycją ;-). Wolę formułowanie twierdzeń po przedstawieniu rozumowania po którym stają się oczywistymi wnioskami. Ale moim celem nie jest popularyzacja ułamków łańcuchowych tylko napisanie coś o własnym pomyśle którego z powodu braku wiedzy i czasu nie umiem rozwijać dalej. Ponieważ jestem jednak świadom że to co wymyśliłem to taki drobiazg, a żeby o tym napisać i tak trzeba kupę rzeczy objaśnić, pomyślałem, ze zrobię to właśnie w taki, amatorski i popularny sposób. Pomyślałem, ze jeśli będę umiał rzecz wytłumaczyć komuś kto nie wie o ułamkach nic zgoła – sam to lepiej zrozumiem ;-)
Na koniec się pewnie okaże że góra mysz urodziła, wiec niech chociaż ta popularyzacja ma jakąś wartość… Aug 26, 2011

     
    Wszystkie języki ludzkie używają słów. Słowa sa obecne nawet w tak sztucznych zdawałoby się tworach jak języki programowania i to nie tylko na poziomie skonstruowanym dla człowieka ( wszystko od asemblera w gorę, człowiek ma co najmniej pisać a czasem i czytać te twory) ale nawet na poziomie poniżej, w języku maszynowym gdzie również zaznacza sie podział na „słowa” przetwarzane przez maszynę. Wygląda na to, ze konstrukty ludzkiej myśli nie są w stanie oderwać się od koncepcji „sekwencji słów”.
    Ciekawe sa tu dwie konstrukcje:
    Funkcyjny język programowania z całkowitą lazy evaluation jak w Haskelu. Program zostaje wyliczony w całości a przynajmniej taki jest sens jego wykonania. Mamy tu do czynienia z sytuacja kiedy w wysokim poziomie programowania, nadal posiłkując się „słowami” czyli konstruktami niosącymi dyskretne operacje, składając je, uzyskujemy coś co ma zapewnić „jednostopniową procedurę obliczenia”. Aby zapewnić taką atomowość włożono sporo wysiłku. Uzyskuje się w zamian wysoki poziom determinizmu obliczeń: te same dane co do zasady dają te same wyniki. Oczywiście w praktyce brak pełnej izolacji i 100% pewności.      


    Nonfirstorderizability – zjawisko polegające na tym, że pewne wyrażenia logiczne nie dają się zapisać jako zdania w logice pierwszego rzędu. Nic w tym dziwnego, takich stwierdzeń jest bardzo dużo, niektóre całkiem „proste” jak np. „przestrzeń wektorowa skończonego wymiaru”, lub „zbiór o skończone liczbie elementów”. Okazuje się, że istnieje jednak podejście nazywane Branching, które ogólnie polega na porzuceniu liniowego następstwa kwantyfikatorów ogólnych ( „dla każdego” …) i wprowadzeniu dodatkowej konwencji że mogą być one używane „jednocześnie”, lub „atomowo w grupie”. Po wprowadzeniu takiej modyfikacji uzyskujemy logikę która nadal jest słabsza niz logika drugiego rzędu ( a więc nie ma kwantyfikacji po zdaniach) jednak jest mocniejsza niż logika pierwszego rzędu. W szczególności pozwala na wyrażanie stwierdzeń o prawdziwej niezależności dwu i więcej zmiennych ( proszę porównać: http:/terrytao.wordpress.com/2007/08/27/printer-friendly-css-and-nonfirstorderizability )

    Ciekawe, że obydwa podejścia czyli lazy evaluation, i branching sa mocnymi pod pewnymi względami narzędziami w których efekt uzyskuje sie porzucając pewnego rodzaju naturalną dla człowieka i języka sekwencyjność, i dopuszczając pewnego rodzaju, nawet ograniczoną jak w branchingu, atomowość, w obu wypadkach na wysokim ( i niejako emulowanym przez bardziej elementarne „rachunki”) poziomie.

 

 

 

 

 

 

    „W styczniu 1896 roku cesarz Wilhelm II oficjalnie ogłosił Weltpoltik jako zasadę niemieckiej polityki. Historycy próbowali w rozmaity sposób wyjaśnić powody tej odnowy i znacznego wzrostu dążeń imperialistycznych. Golo Mann na przykład widzi w imperializmie chwilową międzynarodową „modę”. „W tym o czym myśleli w owym czasie niemieccy >>światowi politycy<< nie było nic specyficznie niemieckiego”. Mann konkluduje: „Postawiłbym więc tezę, że niemiecki imperializm był irracjonalny, podporządkowany polityce i psychologii, a nie racjonalnym interesom gospodarczym”. Ostatnio jednak historycy bardziej przychylają się do poglądu, że niemieccy przywódcy postrzegali imperializm przede wszystkim w kontekście polityki wewnętrznej i uciekali się doń jako do instrumentu umożliwiającego zmniejszenie wewnętrznych napięć i podziałów. Liczono, że sukcesy w polityce zagranicznej i kolonialnej pobudza patriotyzm narodu ( zwłaszcza klasy średniej) oraz zwiększą poparcie dla rządu i osłabią socjalistów. Zagraniczne sukcesy mogły odwrócić uwagę od konfliktów w kraju. […]”

    „Wielu ludzi należących do niższych warstw klasy średniej i wykwalifikowanych rzemieślników ucierpiało na skutek wielkiego wstrząsu gospodarczego, którego doświadczyły Niemcy pod koniec XIX w. […] radykalne konserwatywne ruchy były wystarczająco silne by inne grupy zechciały zabiegać o ich poparcie. Walcząc o utrzymanie własnej pozycji junkrzy (wschodnioniemieccy właściciele ziemscy) głosili w tym celu zainteresowanie zamorskimi przedsięwzięciami które w rzeczywistości były im obojętne.”

    „Nawet w latach dziewięćdziesiątych XIX wieku […] czołowi przemysłowcy i finansiści wydawali się bardziej skłonni do wykorzystywania kwestii kolonialnej dla zademonstrowania swojego patriotyzmu oraz w celu przekonania rządu aby ten całościowo wspierał niemieckie interesy poza Europą. […] W swoim czasie także admirał Tirpitz zrozumiał, że zainteresowanie koloniami można, podobnie jak „Weltpolitik” wykorzystać w celu pozyskania szerokiego poparcia dla budowy wielkiej niemieckiej floty, której utworzenie było jego głównym celem. Ta sama bron pojawiała się w arsenale kolejnych kanclerzy Niemiec, walczących o uzyskanie i utrzymanie wiekszości w Reichstagu oraz zdobycie wystarczająco dużej liczby zwolenników spośród licznych w Niemczech grup interesu. Do znacznej cześci retoryki dotyczącej „Weltpolitik” należy więc podchodzić ostrożnie i nie powinno się jej interpretować dosłownie.”


    Christopher Bartlett (Addison Wesley Longmann Ltd. London) 1994) „Konflikt Globalny. Międzynarodowa rywalizacja wielkich mocarstw w latach 1880-1990” Ossolineum 1997 strona 39-40.

 

Przepisane z Naomi Klein „Doktryna Szoku” Warszawskie Wydawnictwo Literackie Muza S.A 2009 strona 109 i następne.

     „[…]trzy dekady później Chile nadal wskazywane jest przez entuzjastów wolnego rynku jako dowód na to, że friedmanizm sprawdza się w praktyce. Kiedy Pinochet zmarł w grudniu 2006 roku (miesiąc po śmierci Friedmana), dziennik „The New York Times” wychwalał generała za „przekształcenie bankrutującego kraju w najlepiej prosperująca gospodarkę Ameryki Łacińskiej”. Z kolei w komentarzu gazety „Washington Post” można było przeczytać, że Pinochet „wprowadził wolnorynkowe rozwiązania, które przełożyły się na chilijski cud gospodarczy” [45]. Jednakże burzliwa debata na temat „chilijskiego cudu gospodarczego” nadal się toczy.
     Pinochet sprawował władzę przez siedemnaście lat. W tym czasie parokrotnie zmieniał kierunek swojej polityki. Okres trwałego wzrostu gospodarczego, który przeważnie przytacza sie jako dowód na „chilijski cud gospodarczy”, zaczął się dopiero w połowie lat osiemdziesiątych, a więc ponad dekadę po tym, jak chłopcy z Chicago [ czyli wyznawcy neoliberalnej ekonomii Miltona Friedmana, neoliberałowie ] przeprowadzili w kraju terapię szokową, i juz na dług po tym, jak Pinochet został zmuszony dokonać radykalnej korekty swojej polityki gospodarczej. Stało się tak ponieważ w 1982 roku, mimo ścisłego przestrzegania doktryny szkoły chicagowskiej [neoliberalizmu] gospodarka chilijska przeżyła załamanie: zadłużenie osiągnęło kolosalne rozmiary, w kraju ponownie pojawiła się hiperinflacja, a bezrobocie wynosiło 30 procent i było dziesięciokrotnie wyższe niz za rządów prezydenta Allende [46]. Głównym powodem zapaści gospodarczej w Chile była działalność wspomnianych już piranhas, *czyli instytucji finansowych* działających w podobny sposób jak amerykański Enron. Chłopcy z Chicago przeprowadzili deregulację rynków finansowych, dzięki czemu piranhas mogły działać bez jakichkolwiek ograniczeń. Instytucje te skupowały za pożyczone pieniądze państwowy majątek, akumulując kolosalny dług: 14 miliardów dolarów.[47]
    Sytuacja stała się tak niestabilna, że Pinochet zmuszony był zrobić dokładnie to samo co czynił Allende: znacjonalizował wiele z tych zadłużonych przedsiębiorstw [48]. W obliczu gospodarczej katastrofy generał usunął z rządu prawie wszystkich chłopców z Chicago, z Sergem de Castro na czele. Kilku innych absolwentów programu stypendialnego na Uniwersytecie Chicago, którzy byli zatrudniani przez piranhas jako doradcy, zostało oskarżonych o oszustwa finansowe. W ten oto sposób rozmontowana została ostrożnie pielęgnowana fasada naukowej neutralności, która dla tożsamości chłopców z Chocago stanowiła kluczowy element.
    Jedyne co na początku lat osiemdziesiątych uratowało Chile przed całkowitą zapaścią gospodarczą , to fakt, iz reżim generała nigdy nie zdecydował się na prywatyzację Codelco, znacjonalizowanego jeszcze przez prezydenta Allende przedsiębiorstwa, które było odpowiedzialne za eksploatację Chilijskich złóż miedzi. Ta jedyna firma dawała 85 procent wpływów z chilijskiego eksportu, co oznaczało, że w momencie pęknięcia finansowej bański spekulacyjnej państwo nadal mogło liczyć na stałe źródło wpływów do budżetu [49].
    Jasne jest że wbrew temu, co często powtarzają zwolennicy neoliberalizmu, Chile nigdy do końca nie stało się laboratorium „czystego” kapitalizmu. W rzeczywistości Chile stało się krajem, w którym dość wąskiej elicie udało się w bardzo krótkim czasie dokonać skoku z poziomu umiarkowanej zamożności do statusu superbogaczy, korzystając z niesłuchanie zyskownej formuły: *finansowych spekulacji finansowanych z zaciągniętych długów, subsydiowanych, a następnie spłacanych ( w postaci bailoutu) z publicznej kasy.* Jeżeli przebijemy się przez głosy propagandzistów sławiących „chilijski cud gospodarczy”, okaże się, że Chile pod rządami Pinocheta i chłopców z Chicago nigdy nie zostało kapitalistycznym państwem, w którym zatriumfował w pełni wolny rynek.”
[…]
    Historia „chilijskiego cudu gospodarczego” to w rzeczywistości historia wojny, którą, jak przeważnie postrzegają to sami Chilijczycy, najbogatsze warstwy w społeczeństwie wydały klasie średniej i najbiedniejszym. Do 1988 roku, kiedy to w końcu udało się ustabilizować gospodarkę, a kraj notował znaczny wzrost gospodarzy, 45 procent populacji znalazła się poniżej granicy ubóstwa [50]. Natomiast dochód 10 procent najbogatszych Chilijczyków zwiększył się o 83 procent [51]. Nawet w 2007 roku Chile było jednym z najbardziej nierównych społeczeństw na świecie.”

———————

Referencje:
[45] Jonathan Kandell, _Augusto Pinochet_, 91 „Dictator Who Ruled by Terror in Chile, Dies; A Dictator’s Doubl Standard, „Washington Post”, 12 grudnia 2006
[46] Greg Grandin, _Empirer’s Workshop: Latin America and the Roots of U.S. Imperialism_ , Metropolitan Books, New York 2006 s 171
[47] Ibid.s 171
[48] Pamela Constable, Arthuro Velenzuela, _A Nation Enemies_ , dz. cyt. s 197-198
[49] Jose Pinera, _Wealth Through Ownership: Creating Property Rights in Chilean Meaning_ , „Cato International Jurnal” 24, nr 3, jesień 2004 s 296
[51] Wywiad przeprowadzony 26 marca 2001 roku z Alejandro Foxleyem na potrzeby serialu dokumentalnego _Commanding Heights: The battle for the World Economy_ , http://www.pbs.org
[51] Pamela Constable, Arthuro Velenzuela, _A Nation Enemies_ , dz. cyt. s 219

    W poprzednim odcinku:
„Po zatwierdzeniu dostaniemy komunikat: next_weekday (next_weekday saturday) = tuesdayŁał, jak oni to zrobili!?Qed.<- ;-) ładny koniec dowodu.

    W tym odcinku nastąpi obiecany przykład nieco bardzie skomplikowanego dowodu. Obawiam się żę wpis ten będzie najbardziej bałaganiarski ze wszystkich, i najtrudniejszy w odbiorze, a to z powodu sporej ilości komentarzy/kodu. Na spodzie wpisu znajdziecie kod omawiany w tekście bez zbędnych dodatków – można kopiować i wkleić. W zasadzie chyba samo czytanie nie ma sensu – proszę samemu pobawic się Coq.
    Zanim pokażemy coś większego, pobawimy się w kilka definicji i powiemy coś o definiowaniu własnych modułów. Aby definiować własne obiekty, celowe może być odcięcie się od „biblioteki” Coq by nie powodować konfliktów nazw czy definicji. W tym celu użyjemy komendy:

Module PierwszeKotyZaPloty.

    Od tego momentu wszystkie poniższe komendy aż do sekwencji End PierwszeKotyZaPloty. maja ograniczony zasięg leksykalny i nie powodują konfliktów z podobnymi typami zdefiniowanymi w domyślnej bibliotece Coq. Dalsze działania rozpoczniemy od zdefiniowania liczb naturalnych posługując się pomysłem z teorii Peano:

Inductive nat: Set :=
| O:nat
| S:nat->nat.

    Proszę zauważyć, że nie musieliśmy w żaden szczególny sposób określać funkcji S ( a jest to funkcja ma bowiem typ nat->nat). Funkcja ta pełni oczywiście rolę następnika.

    Kolejną definicją będzie funkcja poprzednika:

Definition pred (n:nat): nat :=
match n with
| O => O
|S m => m
end.

    Działa to tak: funkcja pred wymaga jednego argumentu w postaci liczby naturalnej. Jeśli argument ten to „O” wówczas funkcja zwraca „O” jako swoją wartość. Jeśli jednak argument jest różny od „O” to musi on być postaci „S m”, a wówczas opuszczamy „S” i mamy poprzednik liczby „S m” czyli zwracamy „m”. Co by się stało gdybyśmy popełnili błąd i zamiast „S m” twierdzili że możliwe argumenty mają inną postać?

Definition pred (n:nat): nat :=
match n with
| O => O
| S ( S m) => m
end.

    Proszę sprawdzić!
    Sprawdźmy teraz jak zdefiniowane funkcje działają w praktyce. Sprawdźmy jak Coq zrozumiał definicję funkcji S.

Check S (S ( S O)).
    daje w wyniku: S(S(S(O)) : nat

    Jak widać system rozpoznaje że obiekt S (S ( S O)) jest typu nat.

Eval simpl in ( pred ( S (S ( S O)))).

    Widzimy, że funkcja pred rzeczywiście wylicza n-1…

End PierwszeKotyZaPloty.

    W tym miejscu możemy zamknąć nasz moduł, który utworzyliśmy w celach dydaktycznych i zaczytać do środowiska bibliotekę Arith w której, w identyczny jak powyżej sposób, zdefiniowane sa liczby naturalne. Wykonujemy to komendą:

Require Import Arith.

    Sprawdźmy co da nam komenda analogiczna do wykonanej wcześniej:

Check S (S ( S O)).

    wynik to: 3:nat .

    Twórcy Coq wprowadzili „ułatwienie” w operowaniu liczbami w postaci ich standardowej graficznej reprezentacji. Jednak posługując sie biblioteką Arith w istocie operujemy na typach zdefiniowanych za pomocą wcześniejszych definicji. Aby się o tym przekonać poprośmy Coq o wypisanie definicji funkcji S (Coq wypisze co o niej wie):

Print S.
    Wynik to: Inductive nat: Set :=O: nat | S: nat->nat For S: Argument scope is [nat scope].

Print PierwszeKotyZaPloty.S.
    Wynik to: Inductive PierwszeKotyZaPloty.nat: Set :=O: PierwszeKotyZaPloty.nat | S: PierwszeKotyZaPloty.nat->PierwszeKotyZaPloty.nat

    Jak widać elementy zbioru który zdefiniowaliśmy sa innego typu niż elementy ze standardowej biblioteki co pozwala operować na nich jednocześnie bez popadania w konflikt. Jeszcze raz podkreślę, że powyższe definicje, poza „przestrzenią leksykalną” niczym się nie różnią, zaś w plikach definiujących bibliotekę Arith można znaleźć definicję zbioru nat wyglądająca dokładnie jak nasza definicja w module PierwszeKotyZaPloty.

    Skoro mamy zdefiniowane liczby naturalne, możemy budować na ich funkcje. Spróbujmy zatem zdefiniować sumę pierwszych n liczb naturalnych. Definicja będzie rekurencyjna:

Fixpoint sum_n(n:nat):nat :=
match n with
|O=> O
|S m => S m + sum_n m
end.

    Sprawdźmy czy to działa.

Eval simpl in sum_n 5.
    Wynik to: 15:nat. Wygląda dobrze.

    W dalszej kolejności będziemy dowodzić Twierdzenia w postaci: Theorem Gauss_suma: forall n:nat, 2*sum_n n = n* (n+1). czyli wzoru na sumę n początkowych liczb naturalnych, której wyliczenie przypisuje się młodemu Gaussowi podczas zajęć szkolnych. Zanim jednak tego dokonamy zdefiniujemy kilka lematów. Tak naprawdę lematy powstały podczas nieudanych prób dowodu podczas interakcji z systemem. Usiłowałem wymyślać dowód operując różnymi taktykami i definiowałem własności których mi brakło dla zakończenia dowodu. Oczywiście w wersji finalnej wstawimy Lematy tak, że znajdą się elegancko przed samym twierdzeniem i jego dowodem co skutecznie ukryje ich pochodzenie ;-). W komentowanym kodzie zdecydowałem się jednak jeden z nich zostawić w środku dowodu aby pokazać że może on tam się znajdować.
    Dodatkowa uwaga zanim zaczniemy jest taka: aby zrozumieć co się dzieje należy odpalić CoqIde lub ProofWeb. Treść skryptu poniżej nie zawiera bardzo ważnej informacji – wyniku operacji jakie podaje Coq – czyli stanu systemu. Bez tej informacji zrozumienie tego o co chodzi może być bardzo trudne.
    Zacznijmy od prostego lematu dotyczącego własności następnika:

Lemma nastepnik: forall n:nat, S n = n+1.

    Przykład ten jest interesujący bowiem posłużymy się w celu dowodu taktyką induction względem liczby n.

Lemma nastepnik: forall n:nat, S n = n+1.
Proof.
induction n.

    Tutaj komentarz: w wyniku użycia taktyki induction n dostajemy rozbicie tezy na dwa cele do dowiedzenia. Oto wynik jaki wypisuje Coq:

2 subgoals
============================
1 = 0 + 1

subgoal 2 is:
S (S n) = S n + 1

    Wszystko to jest możliwe dzięki indukcyjnej definicji zbioru obiektów nat. Wiadomo jakie są możliwe przypadki ( z definicji typu nat wiemy że albo O albo S n). W istocie w sensie praktycznym taktyka induction dokonuje analizy możliwych przypadków w oparciu o definicję obiektów którymi operujemy ( i przypomina tym samym taktykę destruct, która wcale indukcją nie jest!). Jednak oczywiście sama zasada indukcji nie jest tak prosta. Aby sprawdzić jak wygląda zasada indukcji zapisana w Coq do liczb naturalnych sprawdźmy jak jest zdefiniowany schemat ind_nat. Możemy to zrobić nie przerywając dowodu ( po prostu sprawdzamy definicje przez co nie ingerujemy w treść dowodu twierdzenia):

Check nat_ind.

    Otrzymamy jako wynik:

nat_ind : forall P : nat -> Prop, P 0 -> (forall n : nat, P n -> P (S n)) -> forall n : nat, P n

    Jak widać jest to schemat indukcji zapisany dla liczb naturalnych zdefiniowanych za pomocą elementu „O” i operacji następnika „S” co nie powinno dziwić. Warto nadmienić, że taktyka induction to mniej więcej to samo, w odróżnieniu jednak od nat_ind nie ma ona zapewne tak prostej definicji. Opieram się tu na przypuszczeniach które należałoby sprawdzić czytając kod Coq i na komentarzach z manuala Coq. Wydaje się że można rzecz wyjaśnić tak: taktyka induction jest taktyką ogólna, działająca dla dowolnych typów, zbiorów i definicji predykatów ( na przykład także dla typu bool, gdzie mamy tylko 2 możliwe przypadki). W pewnym sensie w porównaniu z nat_ind jest to raczej metataktyka która bierze pod uwagę definicje obiektów na których działa – i która w wypadku liczb naturalnych jak wyżej redukuje sie do nat_ind. Ważną wiadomością tutaj jest, ze definiując własne typy danych ( powiedzmy drzewa, listy, bagi – czyli zbiory zbiorów itp. struktury rekurencyjne) możemy dla nich zdefiniować własne taktyki indukcji – i w ten sposób rozszerzyć możliwości Coq. Są to jednak rozważania przekraczające moją wiedzę. Aby nie być całkowicie gołosłownym poniżej pokażę jednak przykład własnoręcznie zdefiniowanej prostej taktyki – do własnej indukcji stąd daleko ale …

    Wracając do naszego dowodu zapiszmy jeszcze raz całość bez zbędnych komentarzy:

Lemma nastepnik: forall n:nat, S n = n+1.
Proof.
induction n.
trivial.
(*simpl;reflexivity.*)
simpl.
rewrite IHn.
reflexivity.
Qed.

    Po taktyce induction n nastąpiła taktyka trivial która w tym przypadku oznacza to samo co wykomentowany ciąg simpl;reflexivity. Taktyka trivial dowodzi tych twierdzeń które sprowadzają się do wyliczenia wartości i sprawdzenia równości. W tym kroku dowiedliśmy prawdziwości twierdzenia dla wartości początkowej „O”. Następnie przeszliśmy do kolejnego zadania – wykonania kroku indukcyjnego od n do n+1. Po uproszczeniu simpl otrzymujemy do dowiedzenia równanie postaci S (S n) = S (n + 1) przy założeniu że IHn : S n = n + 1. IHn oznacza tu hipotezę indukcyjną po n. Jeśli w konkluzji skorzystać z tej hipotezy – dostaniemy to co nas interesuje – dokonujemy tego przez użycie taktyki rewrite IHn. – przepisujemy tezę używając przesłanki. I mamy koniec dowodu.

    Zdefiniujmy następny lemat dotyczący rozdzielności mnożenia względem dodawania:

Lemma mult_distributive: forall n m l:nat, n*(m+l)= n*m +n*l.
Proof. intros. ring. Qed.

    Tym razem (leniwie) użyliśmy taktyki ring odwołującej się do własności pierścienia liczb naturalnych – taktyka ta może być użyta z dowolnymi obiektami o strukturze pierścienia.

    Teraz gotowi do dowiedzenia naszego twierdzenia. Poniższy dowód nie jest ani ładny, ani najprostszy, ani szczególnie pomysłowy – jest barokowy. Moim celem było użycie tak wielu elementów języka jak tylko się uda, przy czym zawsze przedkładałem jawne wyliczanie tego i owego nad użycie samograjów w rodzaju ring – które jeśli je tu zastosować w odpowiednim miejscu – proszę spróbować – przyspiesza dowód. Poniżej komentarze do linii oznaczonych numerami:

Theorem Gauss_suma: forall n:nat, 2*sum_n n = n* (n+1).
Proof.
induction n.
simpl;trivial.
Ltac UFx x:= unfold x;fold x. (* 0*)
UFx sum_n. (*1*)
(*unfold sum_n. *)
(*fold sum_n.*)

Lemma mult_distributive’: forall n m l:nat, (m+l)*n= m*n +l*n. (* 2 *)
Proof. (*początek dowodu lematu*)
intros.
ring.
Qed. (*koniec dowodu lematu*)

rewrite mult_distributive.
rewrite IHn.
rewrite <-nastepnik. (*3*)
rewrite <-mult_distributive’.
(*rewrite nastepnik.*)
SearchRewrite( _ * _ ). (* 4*)
rewrite plus_comm.(*5*)
rewrite mult_comm.(*6*)
rewrite nastepnik.
(*ring*) (*7*)
rewrite mult_plus_distr_r.(*8*)
rewrite mult_plus_distr_l.(*9*)
simpl.
ring.
Qed.

    Teraz komentarze dotyczące dowodu.
(*0*) (*1*) – chyba najciekawsza część dywagacji – definicja własnej taktyki poleceniem Ltac. Taktyka UFx pobiera argument x i wykonuje kolejno unfold x po czym fold x. Jak widać Coq dysponuje „podjęzykiem” definicji taktyk, podany przykład jest w pewnym sensie banalny bo sprowadza się do bezpośredniego wykonania dwu innych taktyk jedna po drugiej, przykłady które można znaleźć w rozmaitych materiałach o Coq służą do automatyzacji dowodów i w istocie są dosyć skomplikowanymi „podprogramami” analizującymi możliwe przypadki i wyniki zastosowanych taktyk, dopasowujące wzorce itp. Polecam materiały pana Adama Chlipala wymienione poniżej jeśli kogoś to interesuje.
(*2*) – w trakcie dowodu wprowadzamy lemat. Coq nie zakłada a priori przemienności działań więc dowodzimy sobie potrzebnej tożsamości.
(*3*) – dokonujemy przepisania tezy za pomocą lematu następnik dowiedzionego wcześniej., Tym razem jednak przepisujemy równość tam występująca od prawej do lewej co sygnalizuje znak <- ( można także użyć -> i przepisać od lewej do prawej co jest zresztą domyślnym trybem stosowania równości).
(*4*) (5*) (*6*) – tak naprawdę to dowodzenie lematu dla zamienionej kolejności wyrażeń w możeniu nie było konieczne. W bibliotece Coq znajdują się stosowne twierdzenia dotyczące przemienności dodawania i mnożenia. SearchRewrite( wzorzec ) pozwala na znalezienie wszystkich zdefiniowanych twierdzeń które odpowiadają wzorcowi _ * _ gdzie podkreślenie oznacza dowolne wyrażenie. Znalezione w ten sposób lematy/twierdzenia wykorzystujemy w dowodzie.
(*7*) (*8*) (*9*) – poprzedni krok przekształcił całe rozumowanie w działanie z zakresu algebry które można rozwiązać po prostu wyliczając wartości po obydwu stronach równości za pomocą taktyki ring. Ja jednak proponuję użyć – głównie po to by podać ich nazwy – lematów dotyczących rozdzielności mnożenia względem dodawania lewostronnie i prawostronnie.

    Na zakończenie podam kilka poleceń które wypisują definicje obiektów z których korzystaliśmy:

Print nat.
Print mult_distributive.
Print Gauss_suma.

    Pierwsza definicja pokazuje sposób a jaki skonstruowaliśmy zbiór nat. Druga pokazuje konstrukcję lematu mult_dystributive, trzecia twierdzenia Gauss_suma. Dwa ostatnie obiekty to nazwy twierdzeń/lematów. W wypadku twierdzenia Gauss_suma zwracany przez Coq wynik, to dosyć koszmarna i bardzo nieczytelna funkcja która jako argument pobiera liczbę naturalną ( Gauss_suma = fun n:nat=> … ) a zwraca dowód twierdzenia które wypisaliśmy powyżej. Nie posiadam szczególnie głębokiej wiedzy na ten temat, jednak z jednej strony podana funkcja realizuje jawnie zależność opisaną tutaj, jako interpretację BHK dla dowodu twierdzenia z kwantyfikatorem ogólnym, a zarazem jest praktyczną realizacją izomorfizmu Curryego-Howarda jak opisano tu. Jeśli znajdę czas na pisanie kolejnego 4-tego odcinka tego cyklu – bedzie on poświęcony właśnie tym zagadnieniom.

    Dla zainteresowanych którzy zdadzą pytanie: czy to wszystko ma jakieś znaczenie praktyczne, dodaję na koniec przykład którego nie rozumiem, i nie umiem skomentować bo moja motywacja jest raczej matematyczna i teoretyczna. Tu jednak coś dla praktyków. Coq potrafi generować kod źródłowy programów w Ocamlu, Haskell lub Scheme. Oto przykład który znalazłem gdzieś na grupach dyskusyjnych ( nie jest kompletny, nie udało mi się go wykonać w całości z powodu niezgodności bibliotek, wyraźnie jednak widać że „coś” zwraca ;-)

Fixpoint fact_body (a n : nat) : nat :=
match n with
| 0 => a
| S m => fact_body (a*n) m
end.

Definition fact : nat -> nat := fact_body 1.
Extraction Language Scheme. (*lub Ocaml, lub Haskell*)
Extract Inlined Constant plus => „(+)”.
Extract Inlined Constant mult => „(*)”.
Extraction fact_body.
Extraction fact.

    Zgodnie z opisami jakie znalazłem tu i tam, taka generacja kodu ma służyć wytwarzaniu certyfikowanych programów komputerowych w realnych językach programowania.
——————————-

    Podczas przygotowywania tych wpisów korzystałem z wielu źródeł które wymienię tu w przypadkowej kolejności. Wszystkie kody uruchamiałem za pomocą CoqIde, niektóre sprawdzałem w ProofWeb.

  • Podstawowym źródłem informacji jest oczywiście strona domowa projektu Coq: http://coq.inria.fr na która powoływałem się na początku. W sekcjach zawierających dokumentację można znaleźć zarówno formalną specyfikację języka Gallina jak i manual do samego narzędzia. W szczególności znajduje tam indeks taktyk.
  • Podstawowe źródło wiedzy o Coq jakie użyłem podczas tej prezentacji to: „Software Foundations” Benjamin C. Pierce, Chris Casinghino, Michael Greenberg, Vilhelm Sjöberg, Brent Yorgey, with Andrew W. Appel, Arthur Chargueraud, Anthony Cowley, Jeffrey Foster, Michael Hicks, Ranjit Jhala, Greg Morrisett, Chung-chieh Shan, Leonid Spesivtsev, and Andrew Tolmach. http://www.cis.upenn.edu/~bcpierce/sf/ Polecam wszystkim zainteresowanym zwłaszcza zagadnieniami dowodzenia poprawności programów. Jest to kompletne źródło z którego można się nauczyć używać Coq, podobno także w praktyce programistycznej.
  • Kilka przykładów zaczerpnąłem ze strony kursu „Interactive Computer Theorem Proving „ Adam Chlipala http://adam.chlipala.net/itp/ Kolejne samodzielne źródło informacji na temat systemu Coq. Bardzo dobre.

    Różne pomysły i koncepcje, słowem trivia lub przypadki szczególne ( ale kształcące):

——————————-

    I to już wszystko moi drodzy. W zasadzie wyczerpałem swoją wiedzę ;-) w omawianym temacie. W planach miał być jeszcze jakiś bardziej skomplikowany dowód ale pisanie kodu w Buzz jest niezbyt przyjemne. Najbardziej skomplikowaną rzeczą z jaką w Coq spotkałem próbując ją zrozumieć choć trochę były prace Vladimira Voyevodskyego na temat Univalent Fundations of Mathematics ( tu mozna oglądnąć video z wykładu Vladimira – bardzo ładne ale trudne ). Musze przyznać że zgadzam się z jego opinią – używanie proof czeckerów w matematyce jest nieuniknione. Zaufanie jakie możemy pokładać w systemach takich jak Coq jest wcale nie mniejsze niż to kŧóre pokładamy w grupie recenzentów z czasopism. Voyevodsky w którymś ze swoich wykładów wspomniał że ma prace która leży nieopublikowana od 2 lat – recenzenci sprawdzają… Z drugiej strony on sam jako recenzent – tez niektóre artykuły sprawdza już całkiem długo. Kolejnym zagadnieniem jest zabawa amatora. Każda osoba która zada sobie trud zrozumienia podstaw Coq i zechce sformalizować swoje pomysły uzyskuje dostęp do „niezmordowanego krytyka” który potrafi sprawdzić poprawność twierdzeń dowodów a nawet pomóc w znalezieniu dowodu. Oczywiście tym co zniechęca jest ilość pracy jakiej to wymaga. Z jednej strony język Coq jest bardzo ekspresywny i można w nim wyrazić bardzo wiele stosunkowo niewielkim nakładem pracy. Z drugiej strony będąc świadomym jak wygląda nawet prosty ale nietrywialny dowód typowego twierdzenia ( np. usiłując sobie wyobrazić jak mogłaby przebiegać formalizacja dowodu który przedstawił tutaj +Artur Popławski) widać, że to jest praca na wiele wiele wieczorów… Na zakończenie odrobina statystyki: w pracy http://r6.ca/Goedel/goedel1.html o tytule „Essential Incompleteness of Arithmetic Verified by Coq” dokonano formalizacji dowodu znanego tw. Goedla. Na końcu autor zawarł sekcję o podtytule „statistics” która pozwolę sobie tu zacytować:

    „My proof, excluding standard libraries and the library for Pocklington’s criterion, consists of 46 source files, 7 036 lines of specifications, 37 906 lines of proof, and 1 267 747 total characters. The size of the gzipped tarball (gzip -9) of all the source files is 146 008 bytes, which is an estimate of the information content of my proof. „

    Życzę powodzenia – a jeśli komuś się spodobało – i będzie używał – proszę o dzielenie się wynikami.

———–Cały Kod————–
Require Import Arith.
Check S (S ( S O)).
Print S.

Check pred ( S (S ( S O))).
Eval simpl in S(S(S(S O))).

Fixpoint sum_n(n:nat):nat :=
match n with
|O=> O
|S m => S m + sum_n m
end.

Eval simpl in sum_n 5.

Lemma nastepnik: forall n:nat, S n = n+1.
Proof.
induction n.
(*simpl;reflexivity.*)
trivial.
simpl.
rewrite IHn.
reflexivity.
Qed.

Lemma mult_distributive: forall n m l:nat, n*(m+l)= n*m +n*l.
Proof.
intros.
ring.
Qed.
Lemma mult_distributive’: forall n m l:nat, (m+l)*n= m*n +l*n.
Proof.
intros.
ring.
Qed.

Lemma nastepnik’: forall n:nat, S n = 1+n.
intros.
induction n. trivial. simpl. rewrite IHn. trivial. Qed.

Ltac UFx x:= unfold x;fold x.

Theorem Gauss_suma: forall n:nat, 2*sum_n n = n* (n+1).
Proof.
induction n.
simpl;trivial.
(*Ltac UFx x:= unfold x;fold x.*)
UFx sum_n.
(*unfold sum_n.*)
(*fold sum_n.*)
rewrite mult_distributive.
rewrite IHn.
rewrite <-nastepnik.
rewrite <-mult_distributive’.
(*rewrite nastepnik.*)
SearchRewrite(_*_).
rewrite plus_comm.
rewrite mult_comm.
rewrite nastepnik.
(*ring.*)
(*SearchRewrite(_*_).*)
rewrite mult_plus_distr_r.
rewrite mult_plus_distr_l.
simpl.
symmetry.
rewrite mult_plus_distr_r.
rewrite mult_plus_distr_l.
simpl.
ring.
Qed.
Check nat_ind.

Print nat.
Print mult_distributive.
Print Gauss_suma.

Fixpoint fact_body (a n : nat) : nat :=
match n with
| 0 => a
| S m => fact_body (a*n) m
end.
Definition fact : nat -> nat := fact_body 1.
Extraction Language Haskell.
Extract Inlined Constant plus => „(+)”.
Extract Inlined Constant mult => „(*)”.
Extraction fact_body.
Extraction fact.
———–Koniec Cały Kod————–

Enter your email address to follow this blog and receive notifications of new posts by email.

Dołącz do 255 obserwujących.

Reklamy
%d blogerów lubi to: