Step by step
The question
Question: are p ↔ q and (p → q) ∧ (q → p) equivalent?
1 Rows for p and q
Each letter can be true or false.
Two letters give 2 × 2 = 4 rows: every way they can go.
We make a table: a column for each letter, then a column for each part, from the inside out.
We write T for true and F for false.
p: the first half T, the second half F.
This way no row is missed.
q: T, F, T, F, down the column.
2 Column for p ↔ q
We read the double arrow as if and only if.
p ↔ q is true when both sides are the same: both T, or both F.
So it is T only in rows 1 and 4.
3 Column for p → q
We read the arrow as if, then.
p → q is a promise: if p, then q.
It is broken only when p is true and q is false.
So it is F only in row 2.
4 Column for q → p
q → p is a promise: if q, then p.
It is broken only when q is true and p is false.
So it is F only in row 3.
5 Column for (p → q) ∧ (q → p)
We read this sign as and.
(p → q) ∧ (q → p) is true only when p → q and q → p are both true.
So it is T only in rows 1 and 4.
6 Compare the columns
Now compare the two last columns.
p ↔ q in red, (p → q) ∧ (q → p) in purple.
Row by row they are the same: T, F, F, T and T, F, F, T.
Careful!
To be equivalent they must match in every row.
One row that differs is enough to say no.
So they are equivalent.
We write p ↔ q ≡ (p → q) ∧ (q → p).
7 Check
Let's check row 2 by hand.
In row 2, p is true and q is false.
The first: T ↔ F gives F.
And the second: (T → F) ∧ (F → T) gives F.
The same, as the table says.
Right!
Let's look back.
First: rows for p and q.
Then: column for p ↔ q.
Then: column for p → q.
Then: column for q → p.
Then: column for (p → q) ∧ (q → p).
Then: compare the columns.
Last: check.