0.1  Statements, Implications, and Quantifiers

Linear algebra is a subject of proofs. Every theorem in this book has the shape “if these hypotheses hold, then this conclusion holds”, and most definitions hide a “for every” or a “there exists”. Before we can prove anything, we need to read such sentences exactly: when they are true, what they claim, and what their opposite says. This section builds that reading skill. It is the grammar that the rest of the book is written in.

0.1.1. Statements and connectives

A statement is a sentence that is either true or false, but not both. “7 is prime” is a statement, and it is true. “2+2=5” is a statement, and it is false. “Is 7 prime?” is not a statement, and neither is “x>3” on its own: its truth depends on x, which nobody has chosen yet. Sentences with a free variable are handled by quantifiers later in this section.

We build longer statements from shorter ones with a few fixed words. Everyday language uses these words loosely, so mathematics pins each one down by saying exactly when the combined statement is true.

A connective builds a new statement whose truth depends only on the truth of its parts.

Definition 0.1.1 (Negation, conjunction, disjunction)

Let P and Q be statements.

  • The negation ¬P (“not P”) is true when P is false, and false when P is true.
  • The conjunction P∧Q (“P and Q”) is true when both P and Q are true, and false otherwise.
  • The disjunction P∨Q (“P or Q”) is true when at least one of P, Q is true, and false only when both are false.

A truth table lists every combination of truth values of the parts, one per row, and records the value of the compound statement. With T for true and F for false:

P Q ¬P P∧Q P∨Q
T T F T T
T F F F T
F T T F T
F F T F F

Two statement forms are logically equivalent, written ≡, if they have the same truth value in every row of the truth table. For example, ¬(¬P)≡P: negating twice returns the original value in both rows.

A few examples, checked against the definition:

  • “7 is prime and 7 is even” is false, because its second part is false.
  • “7 is prime or 7 is even” is true, because its first part is true.
  • “2<3 or 3<4” is true. Both parts are true, and that is allowed.

Warning. In mathematics “or” is inclusive: P∨Q is true when both parts are true. The menu phrase “soup or salad”, which forbids having both, is a different connective. So “6 is even or 6 is divisible by 3” is true, even though both halves hold.

0.1.2. Implication

Almost every theorem is an implication: “if P, then Q”. It is worth being completely precise about when such a sentence counts as true, because the answer surprises many readers in one row of the table.

Think of an implication as a promise. A parent says: “If you finish your homework, then you may watch a film.” When has the parent broken the promise? Only when the homework is finished and the film is still refused. If the homework is not finished, the promise says nothing about what happens, so whatever happens, the promise was not broken.

An implication is false only when the hypothesis holds and the conclusion fails.

Definition 0.1.2 (Implication, converse, contrapositive)

Let P and Q be statements.

  • The implication P⇒Q (“if P then Q”) is false when P is true and Q is false, and it is true in every other case. We call P the hypothesis and Q the conclusion.
  • The converse of P⇒Q is the implication Q⇒P.
  • The contrapositive of P⇒Q is the implication ¬Q⇒¬P.

In words: the first clause says an implication can only fail in one way, by a true hypothesis leading to a false conclusion. The converse swaps the roles of hypothesis and conclusion. The contrapositive swaps them and negates both.

P Q P⇒Q
T T T
T F F
F T T
F F T

The implication P⇒Q is read in many ways, and all of them mean the same thing:

  • “P implies Q”, “Q whenever P”, “Q if P”;
  • “P only if Q”;
  • “P is sufficient for Q”, “Q is necessary for P”.

The phrase “only if” trips people up. “P only if Q” says that P cannot happen without Q, which is exactly P⇒Q.

The last two rows of the table, where the hypothesis is false, are called vacuous cases. An implication with a false hypothesis is vacuously true.

Example (A vacuously true implication)

Let n be an integer. Is the statement “if n is odd and n is even, then n=7” true?

Solution. Yes. No integer is both odd and even, so the hypothesis “n is odd and n is even” is false for every integer n. By Definition 0.1.2, an implication with a false hypothesis is true, whatever the conclusion says. So the statement is true for every integer n, including n=7 and n=0. It is true, but it tells us nothing.

Why this definition. The two vacuous rows may look like a convention picked for convenience. They are forced once we want implications to work inside “for every” statements. Consider the true fact

for every integer n, if n>2 then n2>4.

For this to be true, the implication must be true for every integer n. Try n=−3: the hypothesis −3>2 is false, and the conclusion 9>4 is true. Try n=1: the hypothesis 1>2 is false, and the conclusion 1>4 is false. If either row were declared false, this perfectly good theorem would become false. So both vacuous rows must be T. In the same way, a theorem with hypotheses says nothing about objects that fail them, and that is exactly how we want to read it.

Remark. The implication P⇒Q does not claim that P causes Q, or that the two are related at all. “If 2+2=4, then 7 is prime” is a true implication, because both parts are true. In practice we only ever prove implications where the hypothesis is used, but the truth value does not depend on that.

The contrapositive is the most useful rewriting of an implication, because it is always interchangeable with the original.

Theorem 0.1.1 (Contrapositive equivalence)

For all statements P and Q, the implication P⇒Q is logically equivalent to its contrapositive ¬Q⇒¬P.

Proof. Let P and Q be statements. We compute both sides in each of the four rows, using Definition 0.1.1 for the negations and Definition 0.1.2 for the implications.

P Q ¬Q ¬P P⇒Q ¬Q⇒¬P
T T F F T T
T F T F F F
F T F T T T
F F T T T T

In the second row, ¬Q is true and ¬P is false, so ¬Q⇒¬P is false. In every other row the hypothesis ¬Q is false or the conclusion ¬P is true, so the contrapositive is true. The last two columns agree in every row. This proves that the two statements are logically equivalent.

So to prove “if P then Q” we may instead prove “if Q fails then P fails”. The next section turns this into a proof technique.

The converse is a different matter. It is a separate statement, and it can be false while the original is true.

Warning. The converse is not the contrapositive. “If x=2, then x2=4” is true for every real number x. Its converse “if x2=4, then x=2” is false: x=−2 satisfies the hypothesis and fails the conclusion. Proving P⇒Q never proves Q⇒P.

Later in the book the converse question comes up constantly. In Chapter 3 we will see that if a square matrix A is invertible, then Ax=0 has only the solution x=0. The converse, “if Ax=0 has only the solution x=0, then A is invertible”, also turns out to be true for square matrices. But it is a separate theorem, it needs its own proof, and that proof takes real work.

Quick check. Consider “if an integer n is divisible by 6, then n is even”. Write its converse and its contrapositive, and decide which of the three statements are true for every integer n.

Solution. The converse is “if n is even, then n is divisible by 6”. The contrapositive is “if n is not even, then n is not divisible by 6”, that is, “if n is odd, then 6∤n”.

The original is true: if n=6k then n=2(3k) is even. The contrapositive is true, by Theorem 0.1.1. The converse is false: n=2 is even but not divisible by 6.

When an implication and its converse are both true, we say the two statements are equivalent.

The biconditional P⇔Q (“P if and only if Q”, often written “P iff Q”) is the statement (P⇒Q)∧(Q⇒P). It is true exactly when P and Q have the same truth value:

P Q P⇒Q Q⇒P P⇔Q
T T T T T
T F F T F
F T T F F
F F T T T

The phrase splits in two: “P if Q” is Q⇒P, and “P only if Q” is P⇒Q. Other phrasings are “P is necessary and sufficient for Q” and “P and Q are equivalent”. Proving an “iff” therefore always means proving two implications.

0.1.3. Quantifiers

The sentence “x2≥0” is not yet a statement, because x is not specified. A sentence P(x) that becomes a statement once a value of x is substituted is called a predicate (or open sentence) in the variable x. There are two standard ways to turn a predicate into a statement: claim it for every value, or claim it for at least one.

“For every” makes a claim about each element; “there exists” asks for a single witness.

Definition 0.1.3 (Quantifiers)

Let P(x) be a predicate whose variable x ranges over a fixed collection S.

  • The universal statement ∀x∈S:P(x) (“for every x in S, P(x)”) is true when P(x) is true for every element x of S, and false otherwise.
  • The existential statement ∃x∈S:P(x) (“there exists x in S such that P(x)”) is true when P(x) is true for at least one element x of S, and false otherwise.

The symbols ∀ and ∃ are the universal and existential quantifiers.

In words: a universal statement is a promise about every element, so a single element where P fails makes it false. An existential statement needs one element that works. It does not say which one, and it does not say there is only one.

The collection S is part of the statement. Changing S can change the truth value, so always ask: ranging over what?

Example (Quantified statements)

Decide whether each statement is true.

  • (a) ∀x∈R:x2≥0.
  • (b) ∃x∈R:x2=−1.
  • (c) ∃n∈Z:n2=2.
  • (d) ∀n∈Z:n2≠2.

Solution.

  • (a) True. Every real number x is either ≥0 or <0, and in both cases x2=x⋅x≥0.

  • (b) False. By (a), x2≥0>−1 for every real x, so no real x is a witness. Over the complex numbers (introduced later in this chapter), x=i is a witness, so the same predicate becomes true when the range changes from R to C.

  • (c) False. If |n|≤1 then n2≤1<2, and if |n|≥2 then n2≥4>2. So no integer squares to 2.

  • (d) True. This is the statement shown in (c), said the other way round: every integer fails to square to 2.

Parts (c) and (d) already show the pattern of the next subsection: “there is no witness” is the same as “everything fails”.

A degenerate case. What if the range contains no elements at all? Take “every integer n with n2<0 satisfies n=7”. There are no such integers, so there is nothing that could fail, and the statement is true. It is the quantifier version of vacuous truth: it reads ∀n∈Z:(n2<0⇒n=7), and every instance has a false hypothesis. By contrast, “there exists an integer n with n2<0” is false, because there is no witness. This case matters later: facts about “every element of an empty list” will be vacuously true, and that is what makes certain edge cases of definitions work.

Remark. We write ∃!x∈S:P(x) for “there exists a unique x in S with P(x)”. It means two things: some x satisfies P, and any two elements satisfying P are equal. The next section shows how each half is proved.

0.1.4. The order of quantifiers

Most definitions in this book use several quantifiers in a row. Their order is part of the meaning.

Example (Swapping two quantifiers)

Compare the two statements

(i)  ∀x∈R ∃y∈R:y>x,(ii)  ∃y∈R ∀x∈R:y>x.

Decide which is true.

Solution. Statement (i) says: whichever real x you are given, you can find a real y larger than it. This is true. Given x, take y=x+1, and then y>x.

Statement (ii) says: there is one real number y that is larger than every real x. This is false. Whatever y is proposed, the choice x=y+1 gives y>x false. So no y is a witness.

The difference is who chooses first. In (i), x is chosen first and y may depend on it: y=x+1 changes with x. In (ii), y must be fixed before x is known, so it has to work for all x at once. Reading quantifiers as a game helps: ∀ is a move by an opponent, ∃ is your reply, and you may only use information already on the table.

Warning. Never swap a ∀ and an ∃ without a proof. The implication “∃y∀x⇒∀x∃y” is always valid, since the single y works for each x. The reverse direction fails, as Example (Swapping two quantifiers) shows. Two quantifiers of the same kind, such as ∀x∀y, may be swapped freely.

Quick check. Over the positive real numbers, statement (A) is “∀ε>0 ∃δ>0:δ<ε”. Statement (B) is obtained by swapping the quantifiers: “∃δ>0 ∀ε>0:δ<ε”. Are (A) and (B) both true?

Solution. No. (A) is true: given ε>0, take δ=ε/2, which is positive and smaller than ε. (B) is false: whatever δ>0 is proposed, the choice ε=δ makes δ<ε false. In (A) the number δ may depend on ε; in (B) it may not.

0.1.5. Negation

Much of mathematics consists of showing that something fails: a function is not injective, a list is not independent, a claimed theorem is false. To do this we need the negation of the statement written in a usable form. Putting “it is not the case that” in front is correct but useless; we want the negation with the “not” pushed all the way inside, next to a simple condition we can check.

First, the connectives.

Theorem 0.1.2 (De Morgan’s laws for statements)

For all statements P and Q:

  • (a) ¬(P∧Q)≡¬P∨¬Q;
  • (b) ¬(P∨Q)≡¬P∧¬Q;
  • (c) ¬(P⇒Q)≡P∧¬Q.

Proof. Let P and Q be statements. We compare truth tables, using Definition 0.1.1 and Definition 0.1.2.

P Q ¬(P∧Q) ¬P∨¬Q ¬(P∨Q) ¬P∧¬Q ¬(P⇒Q) P∧¬Q
T T F F F F F F
T F T T F F T T
F T T T F F F F
F F T T T T F F

For (a), P∧Q is true only in the first row, so its negation is false only there. The statement ¬P∨¬Q is false only when ¬P and ¬Q are both false, which is again only the first row. For (b), ¬(P∨Q) is true only in the last row, where both parts are false, and so is ¬P∧¬Q. For (c), P⇒Q is false only in the second row, so ¬(P⇒Q) is true only there, and P∧¬Q is also true only there. In each case the two columns agree in all four rows, as claimed.

Law (c) deserves a sentence. The negation of an implication is not another implication. To refute “if P then Q”, you must exhibit a situation where P holds and Q fails.

Now the quantifiers. A universal statement fails exactly when some element fails it, and an existential statement fails exactly when every element fails it. We record this as the rule we will use every time.

To negate, flip each quantifier and negate what is inside.

Definition 0.1.4 (Negation of quantifiers)

Let P(x) be a predicate with x ranging over S. Then

¬(∀x∈S:P(x)) ≡ ∃x∈S:¬P(x),¬(∃x∈S:P(x)) ≡ ∀x∈S:¬P(x).

For a statement with several quantifiers, apply these rules from the outside in: each ∀ becomes ∃, each ∃ becomes ∀, the ranges stay the same, and the innermost condition is negated using Theorem 0.1.2.

In words: “not every x works” means “some x fails”, and “no x works” means “every x fails”. Both rules are just Definition 0.1.3 read carefully. The universal statement is false precisely when it is not the case that every element satisfies P, which is precisely when at least one element satisfies ¬P. The ranges do not change: the negation of “every real number squared is nonnegative” talks about real numbers, not about some other collection.

Example (Negating simple quantified statements)

Negate each statement, and say which of the statement and its negation is true.

  • (a) ∀x∈R:x2≥0.
  • (b) ∃n∈Z:n is even and n>10.
  • (c) ∀x∈R ∃y∈R:y>x.

Solution.

  • (a) The negation is ∃x∈R:x2<0. The original is true, by Example (Quantified statements), so the negation is false.

  • (b) By Definition 0.1.4 and Theorem 0.1.2 (a), the negation is ∀n∈Z:n is odd or n≤10. The original is true, with witness n=12, so the negation is false: n=12 is neither odd nor ≤10.

  • (c) Flip both quantifiers and negate the inside: ∃x∈R ∀y∈R:y≤x. This says that some real number is at least as large as every real number. The original is true by Example (Swapping two quantifiers), so the negation is false.

The next two examples negate definitions that will appear over and over. We use the word function informally here, as a rule f that assigns to each a in a collection A one value f(a) in a collection B; functions are treated properly later in this chapter.

Example (What “not injective” means)

A function f from A to B is called injective if

∀a1∈A ∀a2∈A:(f(a1)=f(a2)⇒a1=a2).

Write down, with no “not” in front, what it means for f to be not injective. Then show that f(x)=x2, from R to R, is not injective.

Solution. By Definition 0.1.4, both ∀ become ∃, and the inside implication is negated. By law (c) of Theorem 0.1.2, ¬(f(a1)=f(a2)⇒a1=a2)≡f(a1)=f(a2)∧a1≠a2. So f is not injective if and only if

∃a1∈A ∃a2∈A:f(a1)=f(a2) and a1≠a2.

In words, two different inputs have the same output. For f(x)=x2, take a1=1 and a2=−1. Then f(1)=1=f(−1) and 1≠−1, so f is not injective.

Example (What “not surjective” means)

A function f from A to B is called surjective if

∀b∈B ∃a∈A:f(a)=b.

Negate this, and show that f(x)=x2, from R to R, is not surjective.

Solution. Flipping the two quantifiers and negating the equation gives: f is not surjective if and only if

∃b∈B ∀a∈A:f(a)≠b.

In words, one value in B is never reached. For f(x)=x2, take b=−1. For every real a we have f(a)=a2≥0>−1 by Example (Quantified statements), so f(a)≠−1. Hence f is not surjective.

The most important negation in the early chapters is that of a statement ending in “all zero”. We meet it here without any vector spaces, using pairs of real numbers added and scaled entry by entry.

Example (Negating “only the zero combination”)

Consider the pairs (1,2), (2,4), (0,1), and the statement

∀a,b,c∈R:(a(1,2)+b(2,4)+c(0,1)=(0,0) ⇒ a=0∧b=0∧c=0).

Negate it, and decide which of the statement and its negation is true.

Solution. Flip the quantifier, and use law (c) of Theorem 0.1.2 for the implication and law (a) for the conjunction. The negation is

∃a,b,c∈R:a(1,2)+b(2,4)+c(0,1)=(0,0)  and  (a≠0∨b≠0∨c≠0).

The last condition says that a,b,c are not all zero: at least one of them is nonzero.

The negation is true. Take a=2, b=−1, c=0. Then

2(1,2)−(2,4)+0(0,1)=(2−2+0, 4−4+0)=(0,0),

and a=2≠0. So the original statement is false.

In Chapter 1 the original statement is what “the list is linearly independent” means, and its negation is “linearly dependent”. The small words in the negation carry the weight.

Warning. “Not all zero” is not “all nonzero”. The negation of “a=b=c=0” is “at least one of a,b,c is nonzero”. In Example (Negating “only the zero combination”) the witness is (2,−1,0), which has a zero entry. In fact no witness has all three entries nonzero: comparing entries, a+2b=0 and 2a+4b+c=0, so c=−2(a+2b)=0. Negating with “all nonzero” would wrongly conclude that the original statement is true.

Quick check. Negate “every student passed some exam”, with no “not” in front of the whole sentence.

Solution. Write it as “∀ students s ∃ exam e : s passed e”. Flipping both quantifiers and negating the inside gives “∃ student s ∀ exams e : s did not pass e”. In words: some student passed no exam. The tempting answer “no student passed any exam” is the negation of “some student passed some exam”, a different statement.

Remark. Each form of statement suggests how to prove or refute it. To prove ∀x∈S:P(x), take an arbitrary x∈S and show P(x). To prove ∃x∈S:P(x), produce a witness. To refute a ∀, produce one counterexample. To refute an ∃, show every candidate fails. The next section develops these moves into proof techniques.

0.1.6. Exercises

A. Check your understanding

Exercise (A1)
  • (a) Decide whether each statement is true: (i) “3<2 or 3 is odd”; (ii) “if 3<2, then 3=5”; (iii) “if 3 is odd, then 3<2”.
  • (b) Write the converse and the contrapositive of “if an integer n is divisible by 4, then n is even”. Which of the three statements are true for every integer n?
  • (c) Negate ∀x∈R ∃n∈Z:n>x, with no ¬ in front. Which of the statement and its negation is true?
  • (d) True or false: ¬(P∧Q)≡¬P∧¬Q for all statements P,Q. Give a reason.

Solution.

  • (a)
    • (i) True: the second part is true, and a disjunction needs only one true part. (ii) True: the hypothesis 3<2 is false, so the implication is vacuously true. (iii) False: the hypothesis is true and the conclusion is false, which is the one case where an implication fails.
  • (b) The converse is “if n is even, then n is divisible by 4”. The contrapositive is “if n is odd, then n is not divisible by 4”. The original is true: n=4k gives n=2(2k). The contrapositive is true by Theorem 0.1.1. The converse is false: n=2 is even and not divisible by 4.

  • (c) By Definition 0.1.4, the negation is ∃x∈R ∀n∈Z:n≤x. The original is true: given x, some integer exceeds x (for instance the integer part of |x| plus 1). So the negation is false.

  • (d) False. Take P true and Q false. Then P∧Q is false, so ¬(P∧Q) is true, while ¬P∧¬Q is false because ¬P is false. The correct law is ¬(P∧Q)≡¬P∨¬Q, by Theorem 0.1.2.

B. Practice

Exercise (B1: Negating definitions)

Write the negation of each definition as a quantified statement with no ¬ in front, and then say it in words.

  • (a) A function f from R to R is bounded if ∃M∈R ∀x∈R:|f(x)|≤M.
  • (b) A function f from A to B is injective if ∀a1,a2∈A:(a1≠a2⇒f(a1)≠f(a2)). Compare your answer with Example (What “not injective” means).
  • (c) “Every pair of reals is a combination of (1,0) and (1,1)”: ∀p,q∈R ∃a,b∈R:(p,q)=a(1,0)+b(1,1), where pairs are added and scaled entry by entry.

Solution.

  • (a) By Definition 0.1.4, f is not bounded if and only if ∀M∈R ∃x∈R:|f(x)|>M. In words: whatever bound M is proposed, some value of f exceeds it in absolute value.

  • (b) Flip both quantifiers and negate the implication using law (c) of Theorem 0.1.2: ∃a1,a2∈A:a1≠a2∧f(a1)=f(a2). In words: two different inputs share an output. This is the same condition as in Example (What “not injective” means). That is expected: the given implication is the contrapositive of f(a1)=f(a2)⇒a1=a2, so by Theorem 0.1.1 the two definitions agree, and so do their negations.

  • (c) Flip all the quantifiers and negate the equation: ∃p,q∈R ∀a,b∈R:(p,q)≠a(1,0)+b(1,1). In words: some pair is not a combination of (1,0) and (1,1), whatever coefficients are used. (The original is in fact true, since (p−q)(1,0)+q(1,1)=(p,q), so this negation is false.)

Exercise (B2: Integers versus reals)

For each statement, decide whether it is true when x and y range over Z, and whether it is true when they range over R. Justify your answer.

  • (a) ∀x ∃y:x<y<x+1.
  • (b) ∀x (x≠0⇒∃y:xy=1).
  • (c) ∃x ∀y:xy=y.
  • (d) ∀x ∃y:y2=x.

Solution.

  • (a) Over Z: false. Take x=0. No integer y satisfies 0<y<1. Over R: true. Given x, take y=x+12; then x<y<x+1.

  • (b) Over Z: false. Take x=2, which is nonzero. If 2y=1 for an integer y, then 1 would be even, which is false. Over R: true. Given x≠0, take y=1/x, which exists because x≠0, and then xy=1.

  • (c) True over both. Take x=1, which lies in Z and in R. Then xy=y for every y. Here one x works for all y, so the order ∃x∀y causes no difficulty.

  • (d) False over both. Take x=−1. For every y, integer or real, y2≥0>−1 by Example (Quantified statements), so y2≠−1.

C. Going deeper

Exercise (C1: Exporting a hypothesis)

Prove that P⇒(Q⇒R) is logically equivalent to (P∧Q)⇒R for all statements P,Q,R. Explain in one sentence why this lets a theorem with two hypotheses be stated either way.

Solution. Let P,Q,R be statements. By Definition 0.1.2, an implication is false exactly when its hypothesis is true and its conclusion is false.

The statement (P∧Q)⇒R is false exactly when P∧Q is true and R is false, that is, when P is true, Q is true, and R is false.

The statement P⇒(Q⇒R) is false exactly when P is true and Q⇒R is false. By the same definition, Q⇒R is false exactly when Q is true and R is false. So P⇒(Q⇒R) is false exactly when P is true, Q is true, and R is false.

Both statements are false in exactly the same row of the eight-row truth table, and true in the other seven. Hence they are logically equivalent.

Consequently “if P, then (if Q, then R)” and “if P and Q, then R” say the same thing, so a theorem may list its hypotheses one after another or all together.

Exercise (C2: When can a converse fail too?)
  • (a) Determine whether there exist statements P and Q such that both P⇒Q and its converse Q⇒P are false. Justify your answer.
  • (b) Give predicates P(n) and Q(n) about integers such that both ∀n∈Z:(P(n)⇒Q(n)) and ∀n∈Z:(Q(n)⇒P(n)) are false.
  • (c) Explain why (a) and (b) do not contradict each other.

Solution.

  • (a) No such statements exist. Suppose P⇒Q is false. By Definition 0.1.2, P is true and Q is false. Then Q⇒P has a false hypothesis, so it is true. Hence an implication and its converse can never both be false.

  • (b) Let P(n) be “n is even” and Q(n) be “n is divisible by 3”. The first universal statement is false: n=2 is even and not divisible by 3. The second is false: n=3 is divisible by 3 and not even.

  • (c) In (a), P and Q are single statements, each with one fixed truth value. In (b), each universal statement is refuted by its own counterexample, and the two counterexamples are different integers. At n=2 the converse Q(2)⇒P(2) is vacuously true, and at n=3 the original P(3)⇒Q(3) is vacuously true, in line with (a). A “for every” statement can fail at one place while its converse fails somewhere else.

Found a typo or a mistake? Report it, or read this page’s source

The text of this book is licensed under CC BY-NC-SA 4.0.