Proofs without words
The following demonstrate proofs of various identities and theorems using pictures, inspired from this gallery.
Summations
![[asy]defaultpen(linewidth(0.7)); unitsize(15); pen heavy = linewidth(2); /* global configurable variables */ int n2 = 4, n = floor(n2*(n2+1)/2); // number of colors, number of layers real h = 0.6; // scale factor of diagram pair shiftR1 = (n*h+1,0), // middle diagram shift offset shiftR2 = shiftR1 + (n*h+1,0); // right diagram shift offset int lvl(int i) { return ceil(((8*i+9)^.5-1)/2); } /* return level of square i */ pen colors(int i) { return rgb(0.2+lvl(i)/6,0.3+lvl(i)/7,1-lvl(i)/6); } /* shading */ /* draw tick line with label, segment between A and B */ void htick(pair A, pair B,pair ticklength = (0.15,0)) { draw(A--B ^^ A-ticklength--A+ticklength ^^ B-ticklength--B+ticklength); } /* gradient triangle */ for(int i = 0; i < n; ++i){ for(int j = 0; j < 2*i+1; ++j){ filldraw(shift(shiftR1)*scale(h)*shift((j-i,-i))*unitsquare,colors(i)); /* if(j % lvl(i) == 0 && j != lvl(i)^2) draw(shift(shiftR1)*scale(h)*shift((j-i,-i))*((0,0)--(0,1)--(1,1)), heavy); if(j == 2*i) // right border draw(shift(shiftR1)*scale(h)*shift((j-i,-i))*((1,0)--(1,1)--(0,1)), heavy); */ } draw(shift(shiftR1)*scale(h)*shift((-i,-i))*((0,0)--(0,1)--(1,1)), heavy); draw(shift(shiftR1)*scale(h)*shift(( i,-i))*((1,0)--(1,1)--(0,1)), heavy); } // return kth triangular number (actually, 1+2+...+k) int tri(int k) { return ((int) (k*(k+1)/2)); } for(int i = 0; i < n2; ++i) { draw(shift(shiftR1)*scale(h)*shift((0-tri(i),0-tri(i)))*((0,1)--(2*tri(i)+1,1)), heavy); if(i % 2 == 0) { // vertical heavy lines for odd layers draw(shift(shiftR1)*scale(h)*((-i/2,1-tri(i))--(-i/2,-i-tri(i))), heavy); draw(shift(shiftR1)*scale(h)*((1+i/2,1-tri(i))--(1+i/2,-i-tri(i))), heavy); } else { // jagged heavy lines for even layers pair jag1 = (-(i+1)/2,-(i-1)/2-tri(i)), jag2 = (1+(i+1)/2,-(i-1)/2-tri(i)); draw(shift(shiftR1)*scale(h)*(jag1+(0,1+(i-1)/2) -- jag1 -- jag1+(1,0) -- jag1+( 1,-(i+1)/2)), heavy); draw(shift(shiftR1)*scale(h)*(jag2+(0,1+(i-1)/2) -- jag2 -- jag2-(1,0) -- jag2+(-1,-(i+1)/2)), heavy); } } draw(shift(shiftR1)*scale(h)*shift((-n2*(n2+1)/2,-n2*(n2+1)/2))*((1,1)--(2*n2*(n2+1)/2,1)), heavy); /* gradient square */ for(int i = 0; i < n; ++i) for(int j = 0; j < n; ++j) filldraw(shift(shiftR2)*scale(h)*shift((j,-i))*unitsquare, colors((i>j)?i:j)); for(int i = 0; i < n2; ++i) { draw(shift(shiftR2)*scale(h)*((0,0-tri(i))--(tri(i),0-tri(i))--(tri(i),0)),heavy); } draw(shift(shiftR2)*scale(h)*shift((0,1-n))*scale(n)*unitsquare, heavy); /* n nxn squares */ for(int i = 0; i < n2; ++i){ filldraw(scale(h)*shift((-i,-(i+1)*(i+2)/2+1))*xscale(i+1)*yscale(i+1)*unitsquare, colors(floor(i*(i+1)/2)), heavy); } [/asy]](http://latex.artofproblemsolving.com/4/f/6/4f6d0783e105603b8a01e66aad8c97a3953acdd8.png)
Nichomauss' Theorem: can be written as the sum of
consecutive integers, and consequently that
.
Another proof of the identity

Geometry
![[asy] defaultpen(linewidth(0.7)); unitsize(15); real a = 3.6, b = 4.8, c = (a^2 + b^2)^.5; pair shiftR = (a+b+2,0); pen sm = fontsize(10), heavy = linewidth(1.6); void htick(pair A, pair B, pair ticklength = (0.15,0)){ draw(A--B ^^ A-ticklength--A+ticklength ^^ B-ticklength--B+ticklength); } void makeshiftarrow(pair A, real dir, real arrowlength = 0.5){ /* Arrow option resizes */ fill(A--A+arrowlength*expi(dir+pi/8)--A+arrowlength*expi(dir-pi/8)--cycle); } { /* left side */ filldraw(xscale(a+b)*yscale(a+b)*unitsquare, rgb(1,0.9,0.8)); filldraw((b,0) --(b,a)--(0,a) --cycle, rgb(0.9,1,0.9)); filldraw((0,a) --(a,a)--(a,a+b)--cycle, rgb(0.9,1,0.9)); filldraw((a,a+b)--(a,b)--(a+b,b)--cycle, rgb(0.9,1,0.9)); filldraw((a+b,b)--(b,b)--(b,0) --cycle, rgb(0.9,1,0.9)); htick((0,-c/10),(b,-c/10),(0,0.15)); htick((-c/10,0),(-c/10,a),(0.15,0)); label("$a$",(-c/10,a/2),W,sm); label("$b$",(b/2,-c/10),S,sm); label("$c$", (a/2,a+b/2),NW,sm); label("$b-a$",(b,(a+b)/2),E,sm); } { /* right side */ filldraw(shift(shiftR)*xscale(a+b)*yscale(a+b)*unitsquare, rgb(1,0.9,0.8)); filldraw(shift(shiftR)*((0,a) --(a,a)--(a,a+b)--cycle), rgb(0.9,1,0.9)); filldraw(shift(shiftR)*((a,a+b)--(a,b)--(a+b,b)--cycle), rgb(0.9,1,0.9)); fill(shift(shiftR )*xscale(a)*yscale(a)*unitsquare,rgb(0.9,0.7,0.7)); fill(shift(shiftR+(a,0))*xscale(b)*yscale(b)*unitsquare,rgb(0.9,0.7,0.7)); filldraw(shift(shiftR)*((a+b,b)--(b,b)--(b,0) --cycle), rgb(0.7,0.9,0.7)); filldraw(shift(shiftR)*((b,0) --(b,a)--(0,a) --cycle), rgb(0.7,0.9,0.7)); draw(shift(shiftR )*xscale(a)*yscale(a)*unitsquare,heavy); draw(shift(shiftR+(a,0))*xscale(b)*yscale(b)*unitsquare,heavy); draw(shift(shiftR)*((2*a/3,a+b/3)--(b/3,a/3) ^^ (a+b/3,b+a/3)--(b+2*a/3,b/3))); makeshiftarrow(shiftR+(b/3,a/3),angle((2*a/3,a+b/3)-(b/3,a/3))); makeshiftarrow(shiftR+(b+2*a/3,b/3),angle((a+b/3,b+a/3)-(b+2*a/3,b/3))); label("$a$",shiftR+(0,a/2),W,sm); label("$b$",shiftR+(a+b,b/2),E,sm); label("$c$",shiftR+(a/2,a+b/2),NW,sm); } [/asy]](http://latex.artofproblemsolving.com/0/3/e/03efca9d35086370764cd02505bf7e80846486ef.png)
The Pythagorean Theorem (first of many proofs): the left diagram shows that



![[asy] defaultpen(linewidth(0.7)); unitsize(15); pen sm = fontsize(10); real a = 3/1.2, b = 4/1.2, c = (a^2 + b^2)^.5, rot1 = acos(a/c); pair shiftR = (a+b+c,0); path top = (0,c)--a*expi(rot1)+(0,c)--(c,c), sq1=rotate(rot1*180/pi)*xscale(a)*yscale(a)*unitsquare, sq2=shift(c,0)*rotate(rot1*180/pi)*xscale(b)*yscale(b)*unitsquare; void htick(pair A, pair B, pair ticklength = (0.15,0)){ draw(A--B ^^ A-ticklength--A+ticklength ^^ B-ticklength--B+ticklength); } { /* first picture */ filldraw((0,0)--(c,0)--a*expi(rot1)--cycle, rgb(1,0.85,0.7)); fill(sq1, rgb(0.95,1,0.95)); fill(sq2, rgb(0.95,1,0.95)); filldraw(rotate(270)*xscale(c)*yscale(c)*unitsquare, rgb(0.96,1,0.96)); filldraw((0,0)--top--(c,0)--a*expi(rot1)--cycle, rgb(0.5,0.9,0.5)); draw(sq1 ^^ sq2); draw(a*expi(rot1+pi/2)--top ^^ a*expi(rot1)--a*expi(rot1)+(0,c)); label("$a$",a/2*expi(rot1),NW,sm); label("$b$",a/2*expi(rot1)+(c/2,0),NE,sm); label("$c$",(c/2,0),S,sm); } { /* second picture */ fill(shift(shiftR)*sq1, rgb(0.95,1,0.95)); fill(shift(shiftR)*sq2, rgb(0.95,1,0.95)); filldraw(shift(shiftR)*rotate(270)*xscale(c)*yscale(c)*unitsquare, rgb(0.96,1,0.96)); filldraw(shift(shiftR+(0,-c))*((0,0)--top--(c,0)--a*expi(rot1)--cycle), rgb(0.5,0.9,0.5)); filldraw(shift(shiftR+(0,-c))*((0,0)--(c,0)--a*expi(rot1)--cycle), rgb(1,0.85,0.7)); draw(shift(shiftR)*((0,0)--(c,0) ^^ sq1 ^^ sq2 ^^ a*expi(rot1+pi/2)--top ^^ a*expi(rot1)--a*expi(rot1)+(0,c))); label("$a$",shiftR+a/2*expi(rot1),NW,sm); label("$b$",shiftR+a/2*expi(rot1)+(c/2,0),NE,sm); label("$c$",shiftR+(c/2,0),S,sm); } [/asy]](http://latex.artofproblemsolving.com/7/3/9/73925776fe9c42e0ee108acf65590198b736e57e.png)
Another proof of the Pythagorean Theorem (animated version).
![[asy] defaultpen(linewidth(0.7)); unitsize(15); pen sm = fontsize(10); real a = 3/1.2, b = 4/1.2, c = (a^2 + b^2)^.5, rot1 = acos(a/c); pair shiftR = (a+b+c,0); path top = (0,c)--a*expi(rot1)+(0,c)--(c,c), sq1=rotate(rot1*180/pi)*xscale(a)*yscale(a)*unitsquare, sq2=shift(c,0)*rotate(rot1*180/pi)*xscale(b)*yscale(b)*unitsquare, tri = (0,0)--(0,a)--(b,0)--cycle; void htick(pair A, pair B, pair ticklength = (0.15,0)){ draw(A--B ^^ A-ticklength--A+ticklength ^^ B-ticklength--B+ticklength); } { /* first picture */ filldraw(xscale(a+b)*yscale(a+b)*unitsquare, rgb(1,0.85,0.75)); filldraw(tri, rgb(0.6,0.9,0.6)); filldraw(shift((a+b,0))*rotate(90)*tri, rgb(0.6,0.9,0.6)); filldraw(shift((a+b,a+b))*rotate(180)*tri, rgb(0.6,0.9,0.6)); filldraw(shift((0,a+b))*rotate(270)*tri, rgb(0.6,0.9,0.6)); draw((0,a)--(a+b,b), linetype("2 4")+linewidth(0.7)); label("$a$",(0,a/2),W,sm); label("$b$",(b/2,0),S,sm); label("$c$",(b/2,a/2),NE,sm); } { /* second picture */ filldraw(shift(shiftR)*xscale(a+b)*yscale(a+b)*unitsquare, rgb(1,0.85,0.75)); filldraw(shift(shiftR+(a,a) )*rotate(270)*reflect((0,0),(1,1))*tri, rgb(0.6,0.9,0.6)); filldraw(shift(shiftR+(a+b,0))*rotate(90)*reflect((0,0),(1,1))*tri, rgb(0.6,0.9,0.6)); filldraw(shift(shiftR+(a,a) )*rotate(90)*tri, rgb(0.6,0.9,0.6)); filldraw(shift(shiftR+(0,a+b))*rotate(270)*tri, rgb(0.6,0.9,0.6)); label("$a$",shiftR+(0,a/2),W,sm); label("$a$",shiftR+(a/2,0),S,sm); label("$b$",shiftR+(a+b,a+b/2),E,sm); label("$b$",shiftR+(a+b/2,a+b),N,sm); } [/asy]](http://latex.artofproblemsolving.com/a/f/1/af1ed80c71b6e50af6c1e6f18f992a9a123a3f98.png)
Another proof of the Pythagorean Theorem; the left-hand diagram suggests the identity

![[asy] defaultpen(linewidth(0.7)); unitsize(15); pen sm = fontsize(10); real a = 3/1.2, b = 4/1.2, c = (a^2 + b^2)^.5, rot1 = acos(a/c); path top = (0,c)--a*expi(rot1)+(0,c)--(c,c), sq1=rotate(rot1*180/pi)*xscale(a)*yscale(a)*unitsquare, sq2=shift(c,0)*rotate(rot1*180/pi)*xscale(b)*yscale(b)*unitsquare; void htick(pair A, pair B, pair ticklength = (0.15,0)){ draw(A--B ^^ A-ticklength--A+ticklength ^^ B-ticklength--B+ticklength); } filldraw((0,0)--(c,0)--a*expi(rot1)--cycle, rgb(1,0.85,0.7)); /* draw(rightanglemark((0,0),a*expi(rot1),(c,0))); */ filldraw(sq1, rgb(0.95,1,0.95)); filldraw(sq2, rgb(0.95,1,0.95)); filldraw(rotate(270)*xscale(c)*yscale(c)*unitsquare, rgb(0.96,1,0.96)); label("$a$",a/2*expi(rot1),SE,sm); label("$b$",a/2*expi(rot1)+(c/2,0),SW,sm); label("$c$",(c/2,-c),S,sm); [/asy]](http://latex.artofproblemsolving.com/6/f/a/6fabd803733c36b1f39ecdec838548a74087b3b1.png)
COMING: The last (sixth) proof of the Pythagorean Theorem we shall present on this page, this one by dissection.
![[asy] pathpen = linewidth(1); unitsize(15); pen dotted = linetype("2 4"); path xaxis = (-3,0)--(3,0); pair A = (-2,2), B = (1.5,1.5), B3 = (-1.5,0), B2 = (B.x,-B.y), C2 = IP(xaxis, A--B2); D(xaxis,Arrows(8)); D(D(A)--D(C2)--D(B)); D(D(B2)--C2,dashed+linewidth(0.7)); D(A--D(B3)--B,dotted+linewidth(0.7)); D(B3--B2,dotted); MP("(a,b)",A,W); MP("(c,d)",B,E); MP("(c,-d)",B2,E); [/asy]](http://latex.artofproblemsolving.com/c/4/9/c49daf6225720830966a6808cc8337f079bd12fb.png)
The smallest distance necessary to travel between




![[asy]defaultpen(linewidth(1)); unitsize(15); pen dotted = linetype("2 4"), sm = fontsize(10); real r = 2; pair A = r*(0,0), B = (r*18/5,A.y), C = r*(16/5,12/5), D = (r*9/5,C.y); pair refl(pair a, pair b = (C+B)/2) { return a+2*(b-a); } void makeshiftarrow(pair a, real dir, real arrowlength = r){ /* Arrow option resizes */ fill(a--a+arrowlength*expi(dir+pi/8)--a+arrowlength*expi(dir-pi/8)--cycle); } draw(A--B--C--D--cycle); draw(A--C^^B--D); draw(refl(A)--C--B--refl(D)--cycle ^^ C--refl(D), dotted); draw(rightanglemark(A,C,refl(D),15)^^rightanglemark(A,IP(A--C,B--D),B,15), linewidth(0.7)); label("$A$",A,S,sm);label("$B$",B,S,sm);label("$C$",C,N,sm);label("$D$",D,N,sm);label("$A'$",refl(A),N,sm);label("$D'$",refl(D),S,sm); /* arrow */ draw(arc((B+C)/2,C.y,240,300),linewidth(0.7)); makeshiftarrow((B+C)/2+C.y*expi(pi*300/180),210*pi/180,r/4); [/asy]](http://latex.artofproblemsolving.com/e/9/2/e92139deedc0ef1697160daa79d632b4ed2e878e.png)
In trapezoid



Miscellaneous
![[asy]unitsize(15); defaultpen(linewidth(0.7)); real a=2.5,b=5,s=a+b; pen colors[] = {rgb(0.9,0.2,0.2), rgb(0.2,0.9,0.2), rgb(0.2,0.2,0.9)}; pen sm = fontsize(8); void fillrect(pair A, pair B, pen p = invisible, pen l = linewidth(1)){ filldraw(A--(A.x,B.y)--B--(B.x,A.y)--cycle, p, l); } void htick(pair A, pair B, pair ticklength = (0.2,0)){ draw(A--B); draw(A-ticklength--A+ticklength); draw(B-ticklength--B+ticklength); } fillrect((0,0),(s,s)); fillrect((a,b),(s,s),colors[0]); filldraw((0,a)--(a,a)--(s/2,s/2)--(a,b)--(a,s)--(0,s)--cycle,colors[1],linewidth(1)); filldraw((0,0)--(b,0)--(b,b)--(a,a)--(0,a)--cycle,colors[2],linewidth(1)); draw((0,0)--(a,a),linewidth(1)); draw((s/2,s/2)--(b,a)--(a,a)--(a,b),linewidth(0.7)+linetype("4 2")); htick((s+1,0),(s+1,b)); htick((s+1,b),(s+1,s)); /* in labels, a,b swapped */ label("$a$",(s+1,b/2),E);label("$b$",(s+1,(s+b)/2),E); label("$ab$",(a+s,b+s)/2,sm); label("$\frac{(a+b)^2}{4}$",(a,a+s)/2,sm); label("$\frac{a^2}2$",(s/2,a*2/3),sm); label("$\frac{b^2}2$",(a/4,a*2/3),sm); [/asy]](http://latex.artofproblemsolving.com/1/7/b/17b7d227148c002ef58e4b0ab8e99024c2d844d1.png)
The Root-Mean Square-Arithmetic Mean-Geometric Mean inequality,

![[asy] unitsize(15); defaultpen(linewidth(0.7)); void htick(pair A, pair B,pair ticklength = (0,0.15)){ draw(A--B); draw(A-ticklength--A+ticklength); draw(B-ticklength--B+ticklength); } real a=10,b=3,r=(a+b)/2; pen sm = fontsize(8), dark = linewidth(1); pen colors[] = {rgb(0.9,0.2,0.2) + dark, /* GM */ rgb(0.2,0.9,0.2) + dark, /* AM */ rgb(0.2,0.2,0.9) + dark, /* QM */ rgb(0.2,0.9,0.9) + dark }; /* HM */ pair A = (r-b,(r^2-(r-a)^2)^.5),B=foot((A.x,0),(0,0),A); draw(arc((0,0),r,0,180)--cycle); dot(A); dot((0,r)); dot((A.x,0)); dot((0,0)); draw(B--A,colors[3]); label("HM",(A+B)/2, E, sm+colors[3]); draw((0,0)--(0,r),colors[1]); label("AM",(0,r*2/3), NW, sm+colors[1]); draw((A.x,0)--A,colors[0]); label("GM",(A.x,A.y/2), SE, sm+colors[0]); draw((A.x,0)--(0,r),colors[2]); label("RMS",(A.x/5,r*4/5), NE, sm+colors[2]); draw((-r,0)--A--(r,0), linetype("4 2")); draw((0,0)--B--(A.x,0), linetype("4 2")); draw(rightanglemark((-r,0),A,(r,0))); draw(rightanglemark((0,0),B,(A.x,0))); htick((-r,-1),(A.x,-1)); htick((A.x,-1),(r,-1)); label("$a$",((-r+A.x)/2,-1),S); label("$b$",((r+A.x)/2,-1),S); [/asy]](http://latex.artofproblemsolving.com/f/b/c/fbc7c9442d05431c8665be2a1052a21c3ec7874e.png)
The Root-Mean Square-Arithmetic Mean-Geometric Mean-Harmonic mean Inequality.[5]
![[asy] unitsize(15); defaultpen(linewidth(0.7)); real r = 0.3, row1 = 3.5, row2 = 0, row3 = -3.5; void necklace(pair k, pen colors[]){ draw(shift(k)*unitcircle); for(int i = 0; i < colors.length; ++i){ pair p = k+expi(pi/2+2*pi*i/colors.length); fill(Circle(p,r),colors[i]); draw(Circle(p,r)); } } void htick(pair A, pair B,pair ticklength = (0.15,0)){ draw(A--B); draw(A-ticklength--A+ticklength); draw(B-ticklength--B+ticklength); } /* draw necklaces */ pen BEADS1[] = {red,red,red},BEADS2[] = {blue,blue,blue},BEADS3[] = {red,red,blue},BEADS4[] = {blue,red,red},BEADS5[] = {red,blue,red},BEADS6[] = {blue,blue,red},BEADS7[] = {red,blue,blue},BEADS8[] = {blue,red,blue}; necklace((-10,(row2+row3)/2),BEADS1);necklace((-7.5,(row2+row3)/2),BEADS2); necklace((-2.5,row2),BEADS3);necklace((0,row2),BEADS4);necklace((2.5,row2),BEADS5); necklace((-2.5,row3),BEADS6);necklace((0,row3),BEADS7);necklace((2.5,row3),BEADS8); /* box them and label */ draw((-4,row2-1.3)--(4,row2-1.3)--(4,row2+1.6)--(-4,row2+1.6)--cycle,linewidth(0.9)+linetype("4 2")); draw((-4,row3-1.3)--(4,row3-1.3)--(4,row3+1.6)--(-4,row3+1.6)--cycle,linewidth(0.9)+linetype("4 2")); htick((-4,row2+2),(4,row2+2),(0,0.15)); label("$p$",(0,row2+2),N,fontsize(10)); htick((-11.5,(row2+row3)/2+2),(-6,(row2+row3)/2+2),(0,0.15)); label("$a$",(-17.5/2,(row2+row3)/2+2),N,fontsize(10)); [/asy]](http://latex.artofproblemsolving.com/1/8/4/184e1a740aad3360df022cc73483e55119ef068c.png)
Fermat's Little Theorem: for
(above
).
References
- ^ MathOverflow
- ^ Wolfram MathWorld
- ^ Attributed to the Chinese text Zhou Bi Suan Jing.
- ^ This is more of a proof without words of the AM-GM inequality
; though the lengths of the segments labeled RMS and HM can easily be verified to have values of
, respectively, it might not be obvious from the diagram. It still serves as a useful graphical demonstration of the inequality.