Parvulae Logicales INDUCTIE Extra materiaal bij het college Logica voor CKI 10/11. Albert Visser & Piet Lemmens & Vincent van Oostrom

Vergelijkbare documenten
Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking

Recursie en inductie i

College Logica voor CKI

VERZAMELINGEN EN AFBEELDINGEN

Logica voor Informatica

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

Enkele valkuilen om te vermijden

Tentamen TI1300 en IN1305-A (Redeneren en) Logica

Automaten. Informatica, UvA. Yde Venema

V.2 Limieten van functies

I.3 Functies. I.3.2 Voorbeeld. De afbeeldingen f: R R, x x 2 en g: R R, x x 2 zijn dus gelijk, ook al zijn ze gegeven door verschillende formules.

Oefenopgaven Grondslagen van de Wiskunde A

Combinatoriek groep 1

Mededelingen. TI1300: Redeneren en Logica. Waarheidstafels. Waarheidsfunctionele Connectieven

Tentamen Grondslagen van de Wiskunde A, met uitwerkingen

Inleiding Logica voor CKI, 2013/14

Volledige inductie. Hoofdstuk 7. Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen.

Formeel Denken 2013 Uitwerkingen Tentamen

Inleiding Logica voor CKI

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

opgaven formele structuren deterministische eindige automaten

Logica voor Informatica. Propositielogica. Syntax & Semantiek. Mehdi Dastani Intelligent Systems Utrecht University

Formeel Denken 2014 Uitwerkingen Tentamen

3 De stelling van Kleene

II.3 Equivalentierelaties en quotiënten

opgaven formele structuren tellen Opgave 1. Zij A een oneindige verzameling en B een eindige. Dat wil zeggen (zie pagina 6 van het dictaat): 2 a 2.

We beginnen met de eigenschappen van de gehele getallen.

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Tegenvoorbeeld. TI1300: Redeneren en Logica. De truc van Gauss. Carl Friedrich Gauss, 7 jaar oud (omstreeks 1785)

Combinatoriek groep 1 & 2: Recursie

Getallensystemen, verzamelingen en relaties

Tentamen Grondslagen van de Wiskunde B met uitwerkingen

1 Rekenen in eindige precisie

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie 9 mei 2008

Hoofdstuk 3. Equivalentierelaties. 3.1 Modulo Rekenen

Logica voor Informatica

Supplement Verzamelingenleer. A.J.M. van Engelen en K. P. Hart

Elfde college complexiteit. 23 april NP-volledigheid III

In Katern 2 hebben we de volgende rekenregel bewezen, als onderdeel van rekenregel 4:

Kennisrepresentatie & Redeneren. Piter Dykstra Instituut voor Informatica en Cognitie

III.2 De ordening op R en ongelijkheden

Logica 1. Joost J. Joosten

Inleiding Wiskundige Logica

Notatie van verzamelingen. Lidmaatschap. Opgave. Verzamelingen specificeren

Logica 1. Joost J. Joosten

Functies deel 1. Vijfde college

Formeel Denken. October 20, 2004

Getaltheorie I. c = c 1 = 1 c (1)

Logic for Computer Science

(b) Formuleer het verband tussen f en U(P, f), en tussen f en L(P, f). Bewijs de eerste. (c) Geef de definitie van Riemann integreerbaarheid van f.

Opmerking. TI1300 Redeneren en Logica. Met voorbeelden kun je niks bewijzen. Directe en indirecte bewijzen

Logica 1. Joost J. Joosten

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Combinatoriek groep 2

De onvolledigheidsstelling van Gödel

Logica. Oefeningen op hoofdstuk Propositielogica

Logic for Computer Science

Tweede huiswerkopdracht Lineaire algebra 1 Uitwerking en opmerkingen

RuG-Informatica-cursus Discrete Structuren, versie 2009/2010

Verzamelingen deel 3. Derde college

7.1 Het aantal inverteerbare restklassen

Semantiek 1 college 10. Jan Koster

IMO-selectietoets III zaterdag 4 juni 2016

Uitwerkingen toets 9 juni 2012

Opgaven Getaltheorie en Cryptografie (deel 1) Inleverdatum: 28 februari 2002

Examen G0U13 Bewijzen en Redeneren Bachelor 1ste fase Wiskunde. vrijdag 31 januari 2014, 8:30 12:30. Auditorium L.00.07

Samenvatting. TI1306 Redeneren & Logica Review Guide 2014 Door: David Alderliesten. Disclaimer

Wanneer zijn veelvouden van proniks proniks?

Uitwerkingen toets 12 juni 2010

De partitieformule van Euler

Gödels theorem An Incomplete Guide to Its Use and Abuse, Hoofdstuk 3

Tentamentips. Tomas Klos. 14 december 2010

Voortgezette Logica, Week 2

Logica voor Informatici najaar 2000 Opgaven en Oplossingen Hoofdstuk 3

Logica 1. Joost J. Joosten

Rekenen aan wortels Werkblad =

III.3 Supremum en infimum

Verzamelingen. Hoofdstuk 5

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

Wiskunde. Verzamelingen, functies en relaties. College 2. Donderdag 3 November

Predikatenlogica in Vogelvlucht

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

Eigenschap (Principe van welordening) Elke niet-lege deelverzameling V N bevat een kleinste element.

Logica voor Informatici najaar 2000 Opgaven en Oplossingen Hoofdstuk 2

Predikaatlogica, modellen en programma s

IMO-selectietoets I donderdag 1 juni 2017

Eerste ronde Nederlandse Wiskunde Olympiade

FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

V.4 Eigenschappen van continue functies

Geldwisselprobleem van Frobenius

Formeel Denken. Herfst 2004

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Inhoud eindtoets. Eindtoets. Introductie 2. Opgaven 3. Terugkoppeling 6

Opgaven Inleiding Analyse

Relevante examenvragen , eerste examenperiode

NATUURLIJKE, GEHELE EN RATIONALE GETALLEN

Gaap, ja, nog een keer. In één variabele hebben we deze formule nu al een paar keer gezien:

Transcriptie:

Parvulae Logicales INDUCTIE Extra materiaal bij het college Logica voor CKI 10/11 Albert Visser & Piet Lemmens & Vincent van Oostrom 15 september 2010

Inhoudsopgave 1 Inleiding 2 2 Inductieve Definities 3 2.1 Blurpsen................................ 3 2.2 Natuurlijke getallen......................... 4 2.3 De taal L van de Propositielogica.................. 4 2.4 BNF.................................. 5 3 Inductie 6 3.1 Inductie over Blurpsen........................ 6 3.2 Inductie over de natuurlijke getallen................ 8 3.3 Inductie over L............................ 8 4 Recursie 10 4.1 Recursie over Blurpsen........................ 10 4.2 Recursie over de natuurlijke getallen................ 12 4.3 Recursie over L............................ 12 5 Extra Opgaven 14 A Ontstaansgeschiedenis en desambiguering 17 B Wat gebeurt er precies bij recursie? 20 1

Hoofdstuk 1 Inleiding Inductieve definities, inductie en recursie vormen een krachtig hulpmiddel in informatica, logica, taalwetenschap en wiskunde. Het is mogelijk dit onderwerp zoals in de wiskunde gebruikelijk is binnen de Verzamelingenleer te ontwikkelen, omdat het echter direct inzichtelijk is (en volgens sommigen even fundamenteel als de Verzamelingenleer) prefereer ik een intuitieve benadering. Het begin van alle dingen op dit gebied is de inductieve definitie. Inductieve definities zijn een middel om verzamelingen te creëren. We beginnen met enkele voorbeelden. 2

Hoofdstuk 2 Inductieve Definities In dit hoofdstuk voeren we inductieve definities in met behulp van voorbeelden. Inductieve definities geven ons een manier om met eindige middelen oneindige totaliteiten in te voeren. 2.1 Blurpsen We beginnen met de definitie van de verzameling der Blurpsen. Definitie 2.1.1 De verzameling van de Blurpsen is de kleinste verzameling zodat: i. is een Blurps. ii. Als x een Blurps is, dan zijn ook x en xx Blurpsen. iii. Als x en y Blurpsen zijn, dan is ook x y een Blurps. Een inductieve definitie is een soort instructie om de elementen van de gedefinieerde verzameling te bouwen. Er is één startelement, te weten, op grond van clausule (i). In de context van onze definitie is de atomaire Blurps. Uit kunnen we op grond van (ii) de volgende elementen maken:,. Op grond van (iii) kunnen we uit, maken. Merk op dat we dus op twee manieren kunnen produceren. Uit de nieuw gevormde Blurpsen kunnen we met (ii) en (iii) weer nieuwe Blurpsen maken:,,,,,,,. Enzovoorts. De rituele frase dat de gedefinieerde verzameling de kleinste zij die aan de clausules voldoet, vertelt ons dat alleen maar dingen in de verzameling 3

mogen worden gestopt op grond van het hierboven geschetste constructieproces. Zo kunnen bijvoorbeeld en geen Blurpsen zijn. Bijvoorbeeld α := is geen blurps om de volgende reden. Het is duidelijk dat α niet van één van de vormen, x, of x y is. Dus als α een blurps was dan moet hij van de vorm xx zijn, waar x een blurps is. Maar x kan niet van de vorm, u, of u v zijn, omdat α geen bevat. Ergo, x is van de vorm yy. Dus α = yy yy. Maar dan heeft α te veel s. Een tegenspraak met de aanname dat α een blurps is. Opgave 2.1.2 Welke van de volgende rijtjes zijn Blurpsen:,,,,, De tekens x en y die we in de definitie van de Blurpsen gebruikt hebben zijn beslist niet zelf Blurpsen! Het zijn variabelen die wij gebruikten om over Blurpsen te spreken. 2.2 Natuurlijke getallen We definiëren de natuurlijke getallen. Definitie 2.2.1 De verzameling der natuurlijke getallen is de kleinste verzameling zodat: i. 0 is een natuurlijk getal. ii. Als x een natuurlijk getal is, dan is ook x + 1 een natuurlijk getal. Merk op dat we hier aannemen dat we al weten wat +1 betekent. Ga na dat volgens onze definitie 0, 1, 2, 3,... natuurlijke getallen zijn, maar niet: 1, 1/2, π en i. In onze nieuw verworven optiek is 0 het atoom van de natuurlijke getallen. 2.3 De taal L van de Propositielogica We definiëren de taal van de propositielogica. Definitie 2.3.1 L is de kleinste verzameling zodat: i. p 0, p 1, p 2, p 3,... zijn in L. ii. and zijn in L. iii. Als ϕ in L is, dan ook ϕ. iv. Als ϕ en ψ in L zijn, dan ook: (ϕ ψ), (ϕ ψ), (ϕ ψ), (ϕ ψ). 4

We gebruiken p, q, r als informele varianten van p 0, p 1. p 2. Bijvoorbeeld: p, q, (p q), r, r, r, ((p q) r) zijn in L, maar ((, p q, )p q( en ] zijn niet in L. De tekens ϕ en ψ die we in de definitie van L gebruikt hebben zijn niet zelf in L. Ze zijn variabelen die wij gebruiken in onze taal geheel analoog aan het gebruik van x en y bij de definitie van de Blurpsen. Merk op dat p 0, p 1, etc. ook wel propositievariabelen genoemd worden. Zij zijn echter geen variabelen die wij als variabele gebruiken, maar objecten waarover we spreken, dit in tegenstelling tot ϕ en ψ. We noemen om het contrast te benadrukken ϕ en ψ soms metavariabelen. 2.4 BNF Een alternatieve manier van opschrijven van sommige 1 inductieve definities is de Backus Naur Form, of BNF. John Backus heeft deze notatie uitgevonden ten behoeve van het specificeren van de computertaal ALGOL. Op het eerste World Computer Congress, in Parijs, 1959, presenteerde Backus The syntax and semantics of the proposed international algebraic language of the Zurich ACM-GAMM Conference, een formele beschrijving van IAL, later ALGOL 58. Peter Naur (ALGOL 60, 1963) vereenvoudigde Backus s notatie. In BNF ziet de definitie van L er zo uit. P ::= p 0 p 1 p 2..., ϕ ::= P ϕ (ϕ ϕ) (ϕ ϕ) (ϕ ϕ) (ϕ ϕ). Merk op dat in BNF de variabelen op alternatieve manier gebruikt worden. De verschillende voorkomens van dezelfde variabele mogen door willekeurige eerder gedefinieerde items van de juiste soort vervangen worden. Opgave 2.4.1 Waarom kunnen we de inductieve definitie die we van Blurpsen gaven niet in BNF omzetten? 2 1 Het gaat hier om de definities die met deterministische top-down tree automata corresponderen. 2 Het is veel moeilijker in te zien dat er geen BNF bestaat die de blurpsen definiëert. Zo n bewijs vergt de pompstelling, die we in dit dictaat niet behandelen. 5

Hoofdstuk 3 Inductie Bij elke inductief gedefinieerde verzameling hebben we de mogelijkheid dingen aangaande alle elementen van die verzameling te bewijzen met behulp van Volledige Inductie 1 over die verzameling. Ik geef voorbeelden van inductie over Blurpsen, over de natuurlijke getallen en over L. 3.1 Inductie over Blurpsen We bewijzen bijvoorbeeld: in elke Blurps komt een even aantal ruiten voor. Laten we eerst eens proberen dit op z n janboerenfluitjes in te zien. Elke Blurps is gemaakt volgens de instructies. De eerste Blurps die je kunt maken is. heeft 0 en dus een even aantal ruiten. Nu kunnen we bijvoorbeeld maken, omdat we geen ruiten hebben toegevoegd, hebben we nog steeds 0 en dus een even aantal ruiten. We kunnen ook maken, dit geeft ons 2 ruiten. Nu kunnen we weer maken uit en. We hebben 2 ruiten toegevoegd, we hadden er al 2, nu hebben we er dus vier. Verder experimenteren leert dat we niet in staat zijn een Blurps met oneven aantal ruiten te produceren, omdat je uit Blurpsen met een even aantal ruiten nooit Blurpsen met een oneven aantal ruiten kunt maken! In detail gaat het zo: bij toepassing van de eerste helft van clausule (ii) voegen we geen ruiten toe, dus als het aantal al even was blijft het even. Bij toepassing van de tweede helft van clausule (ii) maken we xx uit x. Als het aantal ruiten in x even is, zeg 2n, dan is het aantal ruiten in xx 1 Het Volledige in Volledige Inductie staat in contrast tot Onvolledige of Enumeratieve Inductie, de (ongeldige) redeneervorm waarin we uit het feit dat op de eerste drie daken een kat zit, concluderen dat op alle daken een kat zit. Omdat wij in dit dictaat alleen met Volledige Inductie van doen hebben, laten we het Volledige meestal weg. 6

gelijk aan 2n + 2n + 2, m.a.w. 2(2n + 1), een even aantal dus. Bij toepassing van clausule (iii) maken we x y uit x en y. Als het aantal ruiten in x even is, zeg 2n, en als het aantal ruiten in y even is, zeg 2m, dan is het aantal ruiten in x y gelijk aan 2n + 2m, dat is 2(n + m), een even aantal. Ons atoom heeft een even aantal ruiten, de eigenschap een even aantal ruiten hebben plant zich voort over de toegelaten constructiestappen, dus alle Blurpsen hebben een even aantal ruiten. Als we de minimaliteits clausule in de definitie van Blurpsen hadden laten vallen, hadden we deze conclusie natuurlijk niet kunnen trekken: dan had bes took een Blurps kunnen zijn. Bovenstaande redenering is in feite al een redenering met Volledige Inductie, we willen deze echter nog in standaardvorm zetten: Zij P (x) := x heeft een even aantal ruiten. P noemen we de Inductie Eigenschap. We kunnen het te bewijzene nu als volgt herformuleren: te bewijzen is: voor alle Blurpsen x geldt P (x). De Inductie verloopt nu in twee stadia: we controleren dat P opgaat voor de atomen en daarna laten we zien dat P zich voortplant bij het maken van nieuwe Blurpsen volgens clausules (ii) en (iii). Dit laatste betekent dat we laten zien dat als P opgaat voor de Blurpsen die we al gemaakt hebben, dat P dan ook opgaat voor de uit de oude Blurpsen aangemaakte nieuwe Blurpsen. De aanname dat P opgaat voor de al gemaakte Blurpsen noemen we de Inductie Hypothese (IH). stap 1. We hebben: P ( ) stap 2. Stel x is een Blurps met een even aantal ruiten (i.e. zodat P (x)). [Dit is de IH] Zeg het aantal ruiten in x is 2n. Dan heeft x ook 2n ruiten, en dan heeft xx 2 2n+2 oftewel 2(2n+1) ruiten. Er volgt: P (x ) en P ( xx ). stap 3. Stel x en y zijn Blurpsen met een even aantal ruiten (IH). Zeg x heeft 2n en y heeft 2m ruiten. Dan heeft x y het aantal 2n + 2m oftewel 2(n + m) ruiten. Dus: P (x y). Met Volledige Inductie volgt nu: voor alle Blurpsen x hebben we P (x). Opgave 3.1.1 Laat zien dat alle Blurpsen een oneven aantal driehoekjes hebben of tenminste één ruit bevatten. 7

3.2 Inductie over de natuurlijke getallen We laten zien dat voor alle natuurlijke getallen x geldt: 0 + 1 + + x = 1 x (x + 1). 2 Zij P (x) := 0 + 1 + x = 1 2 x (x + 1). stap 1. Het is eenvoudig in te zien dat P (0). stap 2. Stel P (x) (IH). We hebben: 0 + 1 + + x + (x + 1) = 1 x (x + 1) + (x + 1) 2 M.a.w. : P (x + 1). = ( 1 x + 1) (x + 1) 2 = 1 (x + 2) (x + 1) 2 = 1 (x + 1) (x + 2) 2 We concluderen nu met Volledige Inductie: voor alle natuurlijke getallen x geldt P (x). Opgave 3.2.1 1. Laat zien dat 2 n > n 2 voor alle n 5. 2. Laat zien dat 1 + 2 2 +... + n 2 = 1 6n(n + 1)(2n + 1). 3.3 Inductie over L We laten zien dat formules ϕ van L twee keer zoveel haakjes hebben als binaire logische voegtekens. We definiëren de eigenschap P (ϕ) als: ϕ heeft twee keer zoveel haakjes als binaire logische voegtekens stap 1. Als ϕ een atoom is, is in ϕ het aantal haakjes 0 en het aantal binaire logische voegtekens idem dito. stap 2. Stel ϕ is van de vorm ψ en stel (IH): P (ψ). We hebben: aantal haakjes in ϕ = aantal haakjes in ψ = twee keer aantal binaire logische voegtekens in ψ = twee keer aantal binaire logische voegtekens in ϕ. stap 3. Stel ϕ is van de vorm (ψ χ) en stel (IH) P (ψ) en P (χ). Zeg het aantal haakjes in ϕ, ψ en χ is respectievelijk h ϕ, h ψ en h χ en het aantal binaire logische voegtekens in ϕ, ψ en χ is respectievelijk b ϕ, b ψ en b χ. 8

We hebben h ϕ = h ψ + h χ + 2 = 2 b ψ + 2 b χ + 2 = 2 (b ψ + b χ + 1) = 2 b ϕ. De gevallen van (ψ χ), (ψ χ) en (ψ χ) zijn analoog. Concludeer met volledige inductie dat voor alle ϕ in L : P (ϕ). Opgave 3.3.1 heeft. 1. Laat zien dat elke ϕ in L evenveel linker als rechter haakjes 2. Laat zien dat het aantal voorkomens van atomen in ϕ in L groter of gelijk is aan het aantal linker haakjes in ϕ plus 1. 9

Hoofdstuk 4 Recursie Net zo als er met elke inductief gedefinieerde verzameling een bewijsmethode geassocieerd is (Volledige Inductie over die verzameling), is er ook met elke inductief gedefinieerde verzameling een definitie-methode geassocieerd: definitie met recursie over die verzameling. In principe definieer je met recursie een binaire relatie tussen de objecten van de gegeven inductief gedefinieerde verzameling en (eventueel) andere objecten. Meestal zal deze relatie functioneel zijn en definiëren we dus een functie met de gegeven inductief gedefinieerde verzameling als domein. Het idee achter recursieve definities lijkt sterk op dat achter inductie 1 : je definieert eerst de relatie voor atomen, en dan voor samengestelde objecten in termen van de relatie zoals zij al gedefinieerd was op eenvoudigere objecten. Recursief definiëren van relaties levert geen problemen: het resultaat is altijd wel weer een relatie. Maar voor het recursief definiëren van een functionele relatie (waarbij er voor iedere x slechts één y is met R(x, y)) moet men voorzichtig zijn. Ik geef weer een aantal voorbeelden. 4.1 Recursie over Blurpsen Definieer: i. f( ) := 1, ii. f(x ) := f(x) + 2, f( xx ) := 2 f(x), iii. f(x y) := f(x) + f(y) + 1 1 Vanuit een hoger standpunt gezien, te weten de Typentheorie, is inductie gewoon een speciaal geval van recursie. 10

Zo is bijvoorbeeld: f( ) = f( ) + f( ) + 1 = f( ) + 2 + 2 f( ) + 1 = 2 f( ) + 2 + 2 1 + 1 = 2 2 f( ) + 5 = 4 1 + 5 = 9 Opgave 4.1.1 Ga na dat f het aantal s telt in een Blurps. We hebben hier een functie gedefinieerd. Dit lukt alleen onder bepaalde condities. Als we bijvoorbeeld f( ) := 2 genomen hadden met de overige clausules hetzelfde, dan waren er twee mogelijke uitkomsten geweest voor f( ), te weten: f( ) = f( ) + f( ) + 1 = 5 en f( ) = f( ) + 2 = 4. De reden is dat één en dezelfde Blurps verschillende ontstaansgeschiedenissen kan hebben. Blurpsen zijn wat dit betreft analoog aan zinnen uit de natuurlijke taal die structurele ambiguïteit kunnen vertonen. Bij inductieve verzamelingen waar elk object slechts één ontstaansgeschiedenis heeft levert een definitie als hierboven altijd de gewenste functie. Gelukkig heeft bij de natuurlijke getallen en bij L elk object slechts één ontstaansgeschiedenis! Omdat Blurpsen ambigu zijn, kunnen we proberen gedesambigueerde Blurpsen te definiëren. Laten we deze Glurpsen noemen. Definitie 4.1.2 De verzameling van Glurpsen is de kleinste verzameling zodat: i. ( ) is een Glurps. ii. Als x een Glurps is, dan zijn ook (x ) en ( xx ) Glurpsen. iii. Als x en y Glurpsen zijn, dan is ook (x y) een Glurps. Men kan nu laten zien dat elke Glurps slechts één ontstaansgeschiedenis kan hebben. De relatie tussen een Blurps en zijn desambiguaties kunnen we nu recursief definiëren. Definieer de relatie R als volgt: i. R(, ( )). ii. Als R(x, x ) dan ook R(x, (x )) en R( xx, ( x x )). iii. Als R(x, x ) en R(y, y ) dan ook R(x y, (x y )). Opgave 4.1.3 Ga na dat R(, (( ) )) en R(, (( ) ( ))). Andersom kunnen we een functie f definiëren die aan elke Glurps de bijbehorend Blurps toevoegt: i. f(( )) :=. 11

ii. f((x )) := f(x), f(( xx )) := f(x)f(x). iii. f((x y)) := f(x) f(y). Opgave 4.1.4 Ga na dat f((( ) )) = f((( ) ( ))) =. Omdat Glurpsen niet ambigu zijn is onze definitie een correcte definitie van een functie. 4.2 Recursie over de natuurlijke getallen Natuurlijke getallen hebben unieke ontstaansgeschiedenissen dus kunnen we met recursie functies over de natuurlijke getallen definiëren. Ik geef een aantal voorbeelden: Opgave 4.2.1 1. Definieer: f m (0) := m, f m (n + 1) := f m (n) + 1. Ga na: f m (n) = m + n. 2. Definieer: g m (0) := 0, g m (n + 1) := g m (n) + m. Ga na: g m (n) = m n. 3. Definieer: h m (0) := 1, h m (n + 1) := h m (n) m. Ga na: h m (n) = mn. 4. Definieer: (0)! := 1, (n + 1)! := (n)! (n + 1). Ga na dat (n)! het aantal manieren is waarop je n verschillende objecten op volgorde kunt leggen. (Bijvoorbeeld je kunt a, b en c in de volgende volgordes zetten: abc, acb, bac, bca, cab, cba: 6 manieren dus en (3)! = 6.) 5. Definieer: ϕ 0 := p, ϕ n+1 := (ϕ n q). Wat is ϕ 5? 4.3 Recursie over L We geven een aantal voorbeelden van recursie over L. staande voor de binaire connectieven,, en. We gebruiken als Opgave 4.3.1 1. Definieer: f( ) := f( ) := f(p) := 0 voor alle propositionele variabelen p, f( ϕ) := f(ϕ), f((ϕ ψ)) := f(ϕ) + f(ψ) + 2. Ga na: f(ϕ) is het aantal haakjes in ϕ. 2. Definieer: g(p) := 1 voor alle propositionele variabelen p, g( ) := g( ) := 0, g( ϕ) := g(ϕ), g((ϕ ψ)) := g(ϕ) + g(ψ). Ga na: g(ϕ) is het aantal voorkomens van propositionele variabelen in ϕ. 3. Definieer: (a) h(p) := p voor alle propositionele variabelen p, (b) h( ) :=, h( ) :=, (c) h( ϕ) := h(ϕ), 12

(d) h((ϕ ψ)) := ( h(ϕ) h(ψ)), (e) h((ϕ ψ)) := (h(ϕ) h(ψ)), (f) h((ϕ ψ)) := (h(ϕ) h(ψ)), (g) h((ϕ ψ)) := ( (h(ϕ) h(ψ)) (h(ψ) h(ϕ))) Ga na: in h(ϕ) komen alleen maar haakjes, atomen, en voor. Ga ook na: h(ϕ) is logisch equivalent met ϕ. Opgave 4.3.2 1. Definieer met recursie: het aantal linkerhaakjes in ϕ. 2. Definieer met recursie: het aantal voorkomens van in ϕ. 3. Definieer met recursie: ϕ achterste voren gelezen. 4. (Bijvoorbeeld ((p q) r) achterstevoren gelezen is (r (q p)).) 5. Definieer met recursie: het resultaat van het vervangen van elk atoom p in ϕ door p. 13

Hoofdstuk 5 Extra Opgaven Opgave 5.0.3 Geef een inductieve definitie van de verzameling der natuurlijke getallen n met n 5. Opgave 5.0.4 Beschouw voor een natuurlijk getal n 1 de uitspraak: P (n) := in elke groep van n meisjes hebben alle meisjes even lang haar Als we om ons heen kijken, zien we dat P (n) niet waar is. Waar zit dus de fout in het volgende bewijs van P (n) voor alle n 1: stap 1. P (1), want dan bestaat de groep maar uit 1 meisje stap 2. Stel P (x) en neem een groep van x + 1 meisjes. Stuur een van meisjes, zeg Sandra, even uit de groep. De overige meisjes vormen een groep van x meisjes, en hebben dus even lang haar (IH). Haal nu Sandra terug in de groep, en stuur een ander meisje uit de groep. Weer hebben we nu een groep van x meisjes, waaronder Sandra. Sandra heeft dus even lang haar als de andere meisjes. Dus in de complete groep van x + 1 meisjes hebben alle meisjes even lang haar: P (x + 1). Opgave 5.0.5 1. Toon aan: voor ieder natuurlijk getal n 1 geldt: 3 + 11 + + (8n 5) = 4 n 2 n. 2. Toon aan: voor ieder natuurlijk getal n 1 geldt: 1/2 + 1/6 + + 1/(n 2 + n) = n/(n + 1). 3. Toon aan: voor ieder natuurlijk getal n is n 5 n deelbaar door 10. 4. Toon aan: voor ieder natuurlijk getal n 1 geldt: 1 + 1/2 + 1/3 + + 1/n ln(n + 1). 5. Toon aan: voor ieder natuurlijk getal n is n 3 + 2n deelbaar door 3. 6. Toon aan: voor ieder natuurlijk getal n 5 is 2 n > n 2. 14

7. Toon aan: voor ieder natuurlijk getal n is n < 2 n. 8. Toon aan: voor ieder natuurlijk getal n is 3 n + 7 n 2 deelbaar door 8. 9. Toon aan: voor ieder natuurlijk getal n 1 geldt: 1 + 1/ 2 + 1/ 3 + + 1/ n 2 n + 1 2. Opgave 5.0.6 Bedenk een formule voor 2+6+ n(n+1) en bewijs vervolgens dat deze klopt voor alle natuurlijke getallen n 1. Opgave 5.0.7 Een spel begint met n > 1 pionnen. Vooraf wordt een getal m vastgesteld met 1 m < n. Spelers A en B gooien om beurten hoogstens m pionnen om (telkens minimaal 1 pion). Winnaar is degene die de laatste pion(nen) omgooit. Bewijs dat de beginner kan winnen, dan en slechts dan als n geen veelvoud van m is. Aanwijzing: stel n = k(m + 1) + r met 0 r m en pleeg inductie naar k. Opgave 5.0.8 Een spel wordt gespeeld met twee stapels fiches, n 1 fiches op de ene stapel en n 2 fiches op de andere stapel. Spelers A en B mogen om beurten fiches van één van de stapels pakken, minstens 1 en maximaal alle fiches van een stapel. Winnaar is degene die de laatste fiches pakt. Bewijs: de beginner kan winnen dan en slechts dan als n 1 n 2. Aanwijzing: inductie naar n 1 + n 2. Opgave 5.0.9 De Torens van Hanoi of Torens van Brahma. Gegeven zijn n ronde schijven met een gat in het midden. Geen twee schijven hebben dezelfde diameter. Er zijn drie pinnen, A, B en C. Aanvankelijk liggen alle schijven naar grootte gerangschikt op pin A (de grootste schijf onder). Men mag telkens de bovenste schijf van een pin halen en op een andere pin plaatsen, maar nooit mag een schijf op een kleinere schijf worden geplaatst. Toon aan dat het mogelijk is om alle schijven uiteindelijk op pin C te krijgen. Opgave 5.0.10 Maak een inductieve definitie van de verzameling van strings op alfabet {a, b} waarin de substring bb niet voorkomt. Opgave 5.0.11 Maak een inductieve definitie van de verzameling van strings op alfabet {a, b} die er achterstevoren hetzelfde uitzien (z.g. palindromen, bijvoorbeeld abba ). Opgave 5.0.12 Bedenk en bewijs een eigenschap voor de elementen van de taal L waaruit blijkt dat )p q( niet in L zit. Opgave 5.0.13 De verzameling Pluseqs is de kleinste verzameling zodat i. = is een Pluseq, ii. als x een Pluseq is, dan ook +x, x+ en 1x1. Geef enige voorbeelden van Pluseqs. Kun je een zinnige interpretatie geven aan de Pluseqs? 15

Opgave 5.0.14 De verzameling (niet lege) Binaire Strings is de kleinste verzameling zodat: I. 0 en 1 zijn Binaire Strings, II. als x een Binaire String is dan ook 0x en 1x. Definieer met recursie voor Binaire Strings x de functies l(x), de lengte van x, en val(x), de waarde van x beschouwd als een binaire notatie. We nemen als waarde voor bijvoorbeeld 0010 gewoon 2. Aanwijzing: gebruik l als hulpfunctie. Opgave 5.0.15 Deze opgave kan men interpreteren als de Poolse notatie van rekenkundige bewerkingen, waarin +xy betekent (x+y) en xy betekent (x y) en +xyz betekent (x+y) z. Hierbij worden + en gezien als functiesymbolen van ariteit 2 (d.w.z. gedefinieerd op 2-tallen). Bezie een alfabet A en een functie Ar van A naar de natuurlijke getallen (inclusief 0). De letters van A zijn op te vatten als functiesymbolen met inbegrip van constanten. Ar geeft de bijbehorende ariteiten. De verzameling T van termen is de kleinste verzameling zodat voor elke a in A: i. als Ar(a) = 0 dan is a in T, ii. als Ar(a) = n > 0 en t 0,..., t n 1 in T zijn, dan is at 0... t n 1 in T. Er worden geen haakjes en commas gebruikt! Bewijs de volgende beweringen: 1. Het aantal letters in een term is 1 plus de som van de ariteiten van die letters. 2. Voor iedere finale substring van een term is het aantal letters minstens gelijk aan 1 plus de som van de ariteiten. 3. Geen echte initiële substring van een term is een term. 4. Er is maar één manier waarop een term in het inductieve proces gegenereerd kan worden (unique reading). 16

Bijlage A Ontstaansgeschiedenis en desambiguering Het begrip één ontstaansgeschiedenis (vakterm: unique reading) betekent niet meer of minder dan dat elk element slechts door toepassing van één productieregel vanuit uniek bepaalde voorgaande elementen kan ontstaan. Dat wordt afgedwongen door bijvoorbeeld haakjes te gebruiken zoals bij de Glurpsen. De eenduidige ontstaanswijze is dan een louter textuele kwestie, het heeft alleen met de vorm van de uitdrukking te maken: het is een syntactische kwestie. Een nadeel van deze vorm van desambiguering is dat Blurpsen en Glurpsen verschillende verzamelingen zijn. Dat elk natuurlijk getal maar op één manier kan ontstaan, is in de bovenstaande presentatie (juist door de opmerking dat we al weten wat +1 betekent) een gevolg van de betekenis van x+1 : hier is het een semantische kwestie. Eigenlijk hebben we de natuurlijke getallen gedefinieerd als een deelverzameling van de bekend veronderstelde verzameling van (bijvoorbeeld) de complexe getallen. Men kan syntactisch een verzameling NS definiëren door de twee regels (i) 0 in NS, (ii) Als x in NS dan ook x + 1 in NS. In dit geval bestaat NS uit de strings 0, 0 + 1, 0 + 1 + 1, 0 + 1 + 1 + 1, etcetera. De ons vertrouwde verzameling N van natuurlijke getallen, samen met de interpretatiefunctie die aan elke string in NS het bijbehorend natuurlijke getal toevoegt, is dan een model van NS. De eenduidige ontstaansgeschiedenis van elementen van NS wordt gegerandeerd doordat de productieregel (ii) alleen aan de rechterkant +1 toevoegt. Vaak zijn er verschillende inductieve definities mogelijk voor dezelfde verzameling. Zo kunnen we een deelverzameling M van de complexe getallen C als volgt definiëren: M is de kleinste verzameling zodat: 17

I. 0 en 1 zijn in M, II. als x en y in M dan ook x + y in M. We definiëren de natuurlijke getallen N als deelverzameling van C als de kleinste verzameling zodat: I. 0 in N, II. Als x in N, dan is ook x + 1 in N. Het is duidelijk dat N een deelverzameling van M is (waarom?). We willen nu aantonen dat M een deel van N is. Het wezenlijke onderdeel van het bewijs dat elk element van M in N zit, is aan te tonen dat: als x en y in N, dan ook x + y in N. We tonen dit aan met volledige inductie over y. Preciezer zullen we aantonen Lemma A.0.1 Als x in N, dan geldt voor iedere y in N, dat x + y in N. Bewijs stap 1. Stel x in N. We hebben x + 0 in N omdat N een deelverzameling is van de complexe getallen, waarin x + 0 = x. stap 2. Stel dat x + y in N (IH). Volgens productieregel (ii) staat ons nu te bewijzen dat x + (y + 1) in N. We hebben (x + y) + 1 in N wegens (ii), maar (x + y) + 1 = x + (y + 1) omdat N een deelverzameling is van de complexe getallen en de optelling van de complexe getallen associatief is. Dus x + (y + 1) in N. Met volledige inductie volgt nu het lemma. Een ander mooi voorbeeld is de verzameling van (niet lege) binaire strings (zie opgave 39), die we ook zouden kunnen definiëren als de kleinste verzameling zodat I. 0 en 1 zijn binaire strings, II. als x en y binaire strings zijn dan ook xy. Deze definitie is ambigu, want bijvoorbeeld xy = 001 kan ontstaan uit x = 00 en y = 1, maar ook uit x = 0 en y = 01. Op de standaardmanier desambigueren (gebruiken van haakjes) heeft weer het nadeel dat we een andere verzameling strings krijgen. We zullen aantonen dat de definitie volgens opgave 39 dezelfde verzameling oplevert. Voor de duidelijkheid herhalen we die definitie nog eens: i. 0 en 1 zijn Binaire Strings, ii. als x een Binaire String is dan ook 0x en 1x. 18

Noem BS1 de verzameling die ontstaat uit (I) en (II), en BS2 de verzameling die ontstaat uit (i) en (ii). Dan is het duidelijk dat BS2 een deelverzameling is van BS1, en we willen nog aantonen dat ook BS1 een deelverzameling is van BS2, dus dat iedere z in BS1 ook in BS2 zit. Volgens (I) en (II) moeten we dus laten zien: 0 in BS2, 1 in BS2, als x en y in BS2 dan xy in BS2. De eerste twee beweringen staan precies in (i), en de derde bewering tonen we aan met volledige inductie naar x: voor iedere x in BS2 is xy in BS2, aangenomen dat y in BS2. Hiervoor controleren we de productieregels van BS2. stap 1. 0y en 1y in BS2 volgens (II) stap 2. Stel xy in BS2. De concatenatie 0xy van 0x en y is ook te verkrijgen als concatenatie van 0 en xy, en is dus in BS2 wegens (i), (ii) (toegepast op 0 en xy). Een analoge redenering toont aan dat 1xy in BS2. Opgave A.0.16 Toon aan dat in de definitie volgens (i) en (ii) elke binaire string een unieke ontstaansgeschiedenis heeft. 19

Bijlage B Wat gebeurt er precies bij recursie? Als voorbeeld nemen we de Binaire Strings. Zei V de evaluatie functie van de binaire strings gelezen als binaire getal notaties. Dus bijvoorbeeld V (00101) = 3. (Zie ook Opgave 5.0.14, waar we val gebruikten voor V.) Het recursief berekenen van V (111) kan dan bijvoorbeeld als volgt. V (111) = V (11) + 2 l(11) = V (1) + 2 l(1) + 2 1+l(1) = 1 + 2 1 + 2 1+1 = 7. Bij een echte berekening op de computer gaat het tegenwoordig vooral om de tijd die het uitvoeren van een programma kost. De berekening daarvan is nogal ingewikkeld omdat verschikkende operaties ook een verschillende hoeveelheid tijd kosten. Zo is een machtsverheffing veel tijdrovender dan een simpele optelling. Bovendien slaat de computer bij het in recursie gaan veel meer gegevens voor later gebruik op dan strikt noodzakelijk is: het programma weet vooraf niet wat er allemaal nodig kan zijn als het uit de recursive duik weer boven komt. In dit speciale voorbeeld wordt de precieze gang van zaken vertroebeld omdat de functie l ook recursief gedefinieerd is. Het is soms mogelijk om dit te vermijden door één nieuwe functie te maken die de verschillende oude functies als componenten heeft. Zo kunnen we in het onderhavige voorbeeld een functie G definiëren van de Binaire Strings naar de paren van gehele getallen: G(x) = (l(x), V (x)), waarbij dus (G(x)) 0 = l(x) en (G(x)) 1 = V (x). De recursieve definitie van G(x) is dan: a. G(0) = (1, 0), 20

b. G(1) = (1, 1), c. G(0x) = (1 + G(x) 0, G(x) 1 ), d. G(1x) = (1 + G(x) 0, G(x) 1 + 2 G(x)0 ) De berekening van G(111) verloopt nu als volgt: G(111) = (1 + G(11) 0, G(11) 1 + 2 G(11)0 ) = (1 + 1 + G(1) 0, G(1) 1 + 2 G(1)0 + 2 1+G(1)0 ) = (2 + 1, 1 + 2 1 + 2 1+1 ) = (3, 7). 21