• No results found

met de computer bewijzen correct bewijzen Freek Wiedijk

N/A
N/A
Protected

Academic year: 2021

Share "met de computer bewijzen correct bewijzen Freek Wiedijk"

Copied!
48
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

⇐←0→

met de computer bewijzen correct bewijzen

Freek Wiedijk

Raboud Universiteit Nijmegen

Vakantiecursus Wiskunde

Eindhoven, 26 augustus 2017

Amsterdam, 2 september 2017

(2)

⇐←1→

het vermoeden van Kepler

Johannes Kepler en de zeshoekige sneeuwvlok

Strena Seu De Nive Sexangula, 1611

(3)

⇐←2→

Tom Hales en het Flyspeck-project

(4)

⇐←3→

John Harrison, Intel en HOL Light

(5)

⇐←4→

efficiënt bollen stapelen verschillende dichtste stapelingen

π

18 = 74,0480 . . . %

FCC = face-centered cubic = kubisch vlakgecentreerd

HCP = hexagonal close-packed = hexagonale dichtst

(6)

⇐←5→

hexagonale lagen

(7)

⇐←5→

hexagonale lagen

c a

a b c a

b c a b c

c a b c a

a b c a b

b c a b c

c a b c a

a b c a b

a b

c a

(8)

⇐←5→

hexagonale lagen

a

a b

c a

a b

c a

a b

FCC

(9)

⇐←5→

hexagonale lagen

a b a

b

a b a

b

a b a

b

HCP

(10)

⇐←6→

kubisch vlakgecentreerd

a

a

a

a

a

a b

b

b

b

b

b c

(11)

⇐←6→

kubisch vlakgecentreerd

(12)

⇐←6→

kubisch vlakgecentreerd

(13)

⇐←6→

kubisch vlakgecentreerd

(14)

⇐←6→

kubisch vlakgecentreerd

(15)

⇐←7→

vierkante lagen

(16)

⇐←7→

vierkante lagen

(17)

⇐←8→

het Flyspeck-bewijs de precieze formulering

voor iedere stapeling van bollen met straal één bestaat er een reëel getal c zodat voor het aantal middelpunten N van de gestapelde bollen binnen een groeiende grote bol met straal R geldt dat

N ≤ π

√ 18 R

3

+ cR

2

volume gestapelde bollen: N ·

43

π volume groeiende grote bol:

43

πR

3

verhouding volumes: N ·

43

π

4

3

πR

3

= N R

3

π

√ 18 + c

R

(18)

⇐←8→

het Flyspeck-bewijs de precieze formulering

voor iedere stapeling van bollen met straal één bestaat er een reëel getal c zodat voor het aantal middelpunten N van de gestapelde bollen binnen een groeiende grote bol met straal R geldt dat

N ≤ π

√ 18 R

3

+ cR

2

volume gestapelde bollen: N ·

43

π volume groeiende grote bol:

43

πR

3

verhouding volumes: N ·

43

π

4

3

πR

3

= N R

3

π

√ 18 + c

R

(19)

⇐←8→

het Flyspeck-bewijs de precieze formulering

voor iedere stapeling van bollen met straal één bestaat er een reëel getal c zodat voor het aantal middelpunten N van de gestapelde bollen binnen een groeiende grote bol met straal R geldt dat

N ≤ π

√ 18 R

3

+ cR

2

volume gestapelde bollen: N ·

43

π volume groeiende grote bol:

43

πR

3

verhouding volumes: N ·

43

π

4

3

πR

3

= N R

3

π

√ 18 + c

R

(20)

⇐←9→

Voronoi-cellen

(21)

⇐←10→

verwaarloosbare FCC-compatible functies

4 √

2 = 5,55685 . . .

volume Voronoi-cel van de FCC-stapeling

voor iedere stapeling V

S

bestaat er een functie G(v) met X

v∈VS(0,R)

G(v) ≤ c

1

R

2

vol(Ω(V

S

, v)) ≥ 4

2 − G(v)

(22)

⇐←11→

de lokale annulus-ongelijkheid

X

v∈VS

L(h(v)) ≤ 12

1 1.26 1

0 L(h)

(23)

⇐←12→

19.715 tamme grafen

(24)

⇐←13→

23.242 niet-lineaire ongelijkheden

tan( π

2 −0.74) >

−x

1

x

3

− x

2

x

4

+ x

1

x

5

+ x

3

x

6

− x

5

x

6

+ x

2

(−x

2

+ x

1

+ x

3

− x

4

+ x

5

+ x

6

) v

u u u u t

4x

2

x

2

x

4

(−x

2

+ x

1

+ x

3

− x

4

+ x

5

+ x

6

) + x

1

x

5

(x

2

− x

1

+ x

3

+ x

4

− x

5

+ x

6

) +

x

3

x

6

(x

2

+ x

1

− x

3

+ x

4

+ x

5

− x

6

)

− x

1

x

3

x

4

− x

2

x

3

x

5

− x

2

x

1

x

6

− x

4

x

5

x

6

(25)

⇐←14→

HOL Light een lemma uit het boek van Hales

Dense Sphere Packings: a Blueprint for Formal Proofs

(26)

⇐←15→

hetzelfde lemma in HOL Light

let NORM_CAUCHY_SCHWARZ = prove

(‘!(x:real^N) y. x dot y <= norm(x) * norm(y)‘, REPEAT STRIP_TAC THEN MAP_EVERY ASM_CASES_TAC

[‘norm(x:real^N) = &0‘; ‘norm(y:real^N) = &0‘] THEN ASM_SIMP_TAC[NORM_EQ_0_IMP; DOT_LZERO; DOT_RZERO;

REAL_MUL_LZERO; REAL_MUL_RZERO] THEN

MP_TAC(ISPEC ‘norm(y:real^N) % x - norm(x:real^N) % y‘ DOT_POS_LE) THEN REWRITE_TAC[DOT_RSUB; DOT_LSUB; DOT_LMUL; DOT_RMUL; GSYM NORM_POW_2;

REAL_POW_2; REAL_LE_REFL] THEN REWRITE_TAC[DOT_SYM; REAL_ARITH

‘&0 <= y * (y * x * x - x * d) - x * (y * d - x * y * y) <=>

x * y * d <= x * y * x * y‘] THEN

ASM_SIMP_TAC[REAL_LE_LMUL_EQ; REAL_LT_LE; NORM_POS_LE]);;

(27)

⇐←15→

hetzelfde lemma in HOL Light

let NORM_CAUCHY_SCHWARZ = prove

(‘!(x:real^N) y. x dot y <= norm(x) * norm(y)‘, REPEAT STRIP_TAC THEN MAP_EVERY ASM_CASES_TAC

[‘norm(x:real^N) = &0‘; ‘norm(y:real^N) = &0‘] THEN ASM_SIMP_TAC[NORM_EQ_0_IMP; DOT_LZERO; DOT_RZERO;

REAL_MUL_LZERO; REAL_MUL_RZERO] THEN

MP_TAC(ISPEC ‘norm(y:real^N) % x - norm(x:real^N) % y‘ DOT_POS_LE) THEN REWRITE_TAC[DOT_RSUB; DOT_LSUB; DOT_LMUL; DOT_RMUL; GSYM NORM_POW_2;

REAL_POW_2; REAL_LE_REFL] THEN REWRITE_TAC[DOT_SYM; REAL_ARITH

‘&0 <= y * (y * x * x - x * d) - x * (y * d - x * y * y) <=>

x * y * d <= x * y * x * y‘] THEN

ASM_SIMP_TAC[REAL_LE_LMUL_EQ; REAL_LT_LE; NORM_POS_LE]);;

(28)

⇐←16→

een klein voorbeeld: bewijs met inductie

n

X

i=1

i = n(n + 1)

2

(29)

⇐←16→

een klein voorbeeld: bewijs met inductie

0

X

i=1

i = 0 (0 + 1) 2

n

X

i=1

i = n(n + 1) 2

n+1

X

i=1

i = (n + 1)((n + 1) + 1)

2

(30)

⇐←16→

een klein voorbeeld: bewijs met inductie

0

X

i=1

i = 0 (0 + 1) 2

n

X

i=1

i = n(n + 1) 2

n+1

X

i=1

i = (n + 1)((n + 1) + 1) 2

n+1

X

i=1

i =

n

X

i=1

i + (n + 1) = ( n(n + 1)

2 ) + (n + 1) = (n + 1)((n + 1) + 1)

2

(31)

⇐←17→

Proofs without Words: Exercises in Visual Thinking

(32)

⇐←18→

HOL Light sessie: doelen en tactieken

#

(33)

⇐←18→

HOL Light sessie: doelen en tactieken

#g ‘!n. nsum (1..n) (\i. i) = (n*(n + 1)) DIV 2‘;;

val it : goalstack = 1 subgoal (1 total)

‘!n. nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘

#

(34)

⇐←18→

HOL Light sessie: doelen en tactieken

#g ‘!n. nsum (1..n) (\i. i) = (n*(n + 1)) DIV 2‘;;

val it : goalstack = 1 subgoal (1 total)

‘!n. nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘

#e INDUCT_TAC;;

val it : goalstack = 2 subgoals (2 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘nsum (1..SUC n) (\i. i) = (SUC n * (SUC n + 1)) DIV 2‘

‘nsum (1..0) (\i. i) = (0 * (0 + 1)) DIV 2‘

#

(35)

⇐←18→

HOL Light sessie: doelen en tactieken

#g ‘!n. nsum (1..n) (\i. i) = (n*(n + 1)) DIV 2‘;;

val it : goalstack = 1 subgoal (1 total)

‘!n. nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘

#e INDUCT_TAC;;

val it : goalstack = 2 subgoals (2 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘nsum (1..SUC n) (\i. i) = (SUC n * (SUC n + 1)) DIV 2‘

‘nsum (1..0) (\i. i) = (0 * (0 + 1)) DIV 2‘

#NSUM_CLAUSES_NUMSEG;;

val it : thm =

|- (!m. nsum (m..0) f = (if m = 0 then f 0 else 0)) /\

(!m n.

nsum (m..SUC n) f =

(if m <= SUC n then nsum (m..n) f + f (SUC n) else nsum (m..n) f))

#

(36)

⇐←18→

HOL Light sessie: doelen en tactieken

#g ‘!n. nsum (1..n) (\i. i) = (n*(n + 1)) DIV 2‘;;

val it : goalstack = 1 subgoal (1 total)

‘!n. nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘

#e INDUCT_TAC;;

val it : goalstack = 2 subgoals (2 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘nsum (1..SUC n) (\i. i) = (SUC n * (SUC n + 1)) DIV 2‘

‘nsum (1..0) (\i. i) = (0 * (0 + 1)) DIV 2‘

#NSUM_CLAUSES_NUMSEG;;

val it : thm =

|- (!m. nsum (m..0) f = (if m = 0 then f 0 else 0)) /\

(!m n.

nsum (m..SUC n) f =

(if m <= SUC n then nsum (m..n) f + f (SUC n) else nsum (m..n) f))

#e (REWRITE_TAC[NSUM_CLAUSES_NUMSEG]);;

val it : goalstack = 1 subgoal (2 total)

‘(if 1 = 0 then 0 else 0) = (0 * (0 + 1)) DIV 2‘

#

(37)

⇐←18→

HOL Light sessie: doelen en tactieken

val it : goalstack = 1 subgoal (2 total)

‘(if 1 = 0 then 0 else 0) = (0 * (0 + 1)) DIV 2‘

#e ARITH_TAC;;

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘nsum (1..SUC n) (\i. i) = (SUC n * (SUC n + 1)) DIV 2‘

#

(38)

⇐←18→

HOL Light sessie: doelen en tactieken

val it : goalstack = 1 subgoal (2 total)

‘(if 1 = 0 then 0 else 0) = (0 * (0 + 1)) DIV 2‘

#e ARITH_TAC;;

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘nsum (1..SUC n) (\i. i) = (SUC n * (SUC n + 1)) DIV 2‘

#e (REWRITE_TAC[NSUM_CLAUSES_NUMSEG]);;

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then nsum (1..n) (\i. i) + SUC n else nsum (1..n) (\i. i)) = (SUC n * (SUC n + 1)) DIV 2‘

#

(39)

⇐←18→

HOL Light sessie: doelen en tactieken

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then nsum (1..n) (\i. i) + SUC n else nsum (1..n) (\i. i)) = (SUC n * (SUC n + 1)) DIV 2‘

#e (ASM_REWRITE_TAC[]);;

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then (n * (n + 1)) DIV 2 + SUC n else (n * (n + 1)) DIV 2) = (SUC n * (SUC n + 1)) DIV 2‘

#

(40)

⇐←18→

HOL Light sessie: doelen en tactieken

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then nsum (1..n) (\i. i) + SUC n else nsum (1..n) (\i. i)) = (SUC n * (SUC n + 1)) DIV 2‘

#e (ASM_REWRITE_TAC[]);;

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then (n * (n + 1)) DIV 2 + SUC n else (n * (n + 1)) DIV 2) = (SUC n * (SUC n + 1)) DIV 2‘

#e ARITH_TAC;;

val it : goalstack = No subgoals

#

(41)

⇐←18→

HOL Light sessie: doelen en tactieken

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then nsum (1..n) (\i. i) + SUC n else nsum (1..n) (\i. i)) = (SUC n * (SUC n + 1)) DIV 2‘

#e (ASM_REWRITE_TAC[]);;

val it : goalstack = 1 subgoal (1 total) 0 [‘nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2‘]

‘(if 1 <= SUC n then (n * (n + 1)) DIV 2 + SUC n else (n * (n + 1)) DIV 2) = (SUC n * (SUC n + 1)) DIV 2‘

#e ARITH_TAC;;

val it : goalstack = No subgoals

#top_thm();;

val it : thm = |- !n. nsum (1..n) (\i. i) = (n * (n + 1)) DIV 2

#

(42)

⇐←18→

HOL Light sessie: doelen en tactieken

let TRIANGULAR_SUM = prove

(‘!n. nsum (1..n) (\i. i) = (n*(n + 1)) DIV 2‘, INDUCT_TAC THENL

[REWRITE_TAC[NSUM_CLAUSES_NUMSEG] THEN ARITH_TAC;

REWRITE_TAC[NSUM_CLAUSES_NUMSEG] THEN ASM_REWRITE_TAC[] THEN

ARITH_TAC]);;

(43)

⇐←18→

HOL Light sessie: doelen en tactieken

let TRIANGULAR_SUM = prove

(‘!n. nsum (1..n) (\i. i) = (n*(n + 1)) DIV 2‘, INDUCT_TAC THEN

ASM_REWRITE_TAC[NSUM_CLAUSES_NUMSEG] THEN ARITH_TAC);;

(44)

⇐←19→

formele bewijzen in de computer

Coq en Isabelle

(45)

⇐←20→

formalisaties van George Gonthier

iedere vlakke kaart is kleurbaar met vier kleuren

iedere eindige groep van oneven orde is oplosbaar

(46)

⇐←21→

het criterium van N.G. de Bruijn

eenvoudige checker die volledige wiskundige correctheid garandeert

(47)

⇐←22→

de drie revoluties in de wiskunde

bewijzen rigoreus formeel

bewijzen rigoreus

bewijzen

(48)

⇐←23→

table of contents contents

het vermoeden van Kepler

efficiënt bollen stapelen

het Flyspeck-bewijs

HOL Light

formele bewijzen in de computer

table of contents

Referenties

GERELATEERDE DOCUMENTEN

Bij deze keuze is er een waarde van a waarvoor de formule een lorenzcurve geeft van een land waarin de minst verdienende 50% van de bevolking tezamen 17% van het totale inkomen

Merk op dat het in C of R n geen zin heeft om te spreken van niet-lege naar boven of naar onder begrensde deelverzamelingen en van suprema en infima, omdat er geen ordening aanwezig

Elke vraag staat op tien punten met een gegeven onderverdeling voor elke vraag1. (Een formeel bewijs is

Bewijs of geef een

• Deze opdracht telt mee voor 2 punten op 20 bij de bepaling van het eindcijfer voor Bewijzen en Redeneren.. Zowel het correct en verzorgd gebruik van L A TEX wordt beoordeeld als

• Deze opdracht telt mee voor 2 punten op 20 bij de bepaling van het eindcijfer voor Bewijzen en Redeneren.. Zowel het correct en verzorgd gebruik van L A TEX wordt beoordeeld als

Het tweede punt markeert de didactische situatie waarbij de docent de leerling prikkelt zelf een aantal leer- functies over te nemen met vragen als ‘Is dat altijd zo?’, ‘Wanneer heb

Op deze wijze is het niet alleen mogelijk om de absolu- te effectiviteit van convenanten te meten (verbeteren prestaties als conve- nanten ingezet worden ten opzichte van de