[proofplan]
We prove Poincaré duality by a bootstrapping argument. We call a manifold $M$ "good" if the cap product map $D_M$ is an isomorphism in every degree. We establish five claims in sequence: (Claim 0) $\mathbb{R}^d$ is good, verified by direct computation using the fundamental class of $(\mathbb{R}^d, \mathbb{R}^d \setminus \{0\})$; (Claim 1) if $U$ and $V$ are good open sets whose intersection $U \cap V$ is also good, then $U \cup V$ is good, proved via the five lemma applied to the Mayer--Vietoris sequences for ordinary homology and compactly supported cohomology; (Claim 2) a countable increasing union of good open sets is good, proved using the direct limit description of compactly supported cohomology; (Claim 3) every open subset of $\mathbb{R}^d$ is good, proved by expressing it as a countable union of convex sets and applying Claims 0--2; (Claim 4) any $d$-manifold with a countable cover by Euclidean coordinate charts is good, proved by another application of Claims 1--3.
[/proofplan]
[step:Verify that $\mathbb{R}^d$ is good]
We must show that the cap product map
\begin{align*}
D_{\mathbb{R}^d}: H_c^k(\mathbb{R}^d; R) \to H_{d-k}(\mathbb{R}^d; R)
\end{align*}
is an isomorphism for all $k$. By the [Computation of $H_c^*(\mathbb{R}^d)$](/theorems/2288), $H_c^k(\mathbb{R}^d; R) = 0$ for $k \neq d$ and $H_c^d(\mathbb{R}^d; R) \cong R$. Since $\mathbb{R}^d$ is contractible, $H_0(\mathbb{R}^d; R) \cong R$ and $H_j(\mathbb{R}^d; R) = 0$ for $j > 0$. So the only potentially non-trivial case is $k = d$, where $D_{\mathbb{R}^d}$ is a map $R \to R$.
Choose a compact set $K = \overline{B}(0, 1)$. The fundamental class $\mu_K \in H_d(\mathbb{R}^d \mid K; R)$ is the unique class restricting to the local orientation $\mu_x$ at each $x \in K$, as guaranteed by the [Fundamental Class Theorem](/theorems/2290). A generator $\varphi \in H^d(\mathbb{R}^d \mid K; R) \cong R$ satisfies $\varphi(\mu_K) = 1$ (by the definition of the orientation class and evaluation). The cap product gives $D_{\mathbb{R}^d}(\varphi) = \mu_K \frown \varphi$. By the dimension axiom, $\mu_K \frown \varphi \in H_0(\mathbb{R}^d; R) \cong R$, and the augmentation evaluates to $\varphi(\mu_K) = 1$. Thus $D_{\mathbb{R}^d}$ sends a generator to a generator, so it is an isomorphism.
[guided]
We need to check that $D_{\mathbb{R}^d}$ is an isomorphism. The first step is to understand both sides. By the [Computation of $H_c^*(\mathbb{R}^d)$](/theorems/2288), the compactly supported cohomology of $\mathbb{R}^d$ is concentrated in degree $d$: $H_c^d(\mathbb{R}^d; R) \cong R$ and $H_c^k(\mathbb{R}^d; R) = 0$ for $k \neq d$. On the homology side, $\mathbb{R}^d$ is contractible, so $H_0(\mathbb{R}^d; R) \cong R$ and all higher homology vanishes. Therefore the only case where both source and target are non-zero is $k = d$, and there $D_{\mathbb{R}^d}: R \to R$ is a map between free rank-one $R$-modules.
To show this map is an isomorphism, we must show it sends a generator to a generator. Choose a compact set $K = \overline{B}(0, 1)$. The [Fundamental Class Theorem](/theorems/2290) provides a unique fundamental class $\mu_K \in H_d(\mathbb{R}^d \mid K; R)$ restricting to the local orientation at every point of $K$. A generator $\varphi \in H^d(\mathbb{R}^d \mid K; R)$ satisfies $\varphi(\mu_K) = 1$.
The cap product map is defined by $D_{\mathbb{R}^d}(\varphi) = \mu_K \frown \varphi \in H_0(\mathbb{R}^d; R)$. How does the cap product of a $d$-class with a degree-$d$ cocycle land in $H_0$? By the general formula, if $\sigma$ is a $d$-chain representing $\mu_K$, then $\mu_K \frown \varphi$ evaluates $\varphi$ on the "back face" of $\sigma$ and retains the "front face," producing a $0$-chain. The augmentation $\varepsilon: H_0(\mathbb{R}^d; R) \to R$ sends this $0$-chain to $\varphi(\mu_K) = 1$. Since $\varepsilon$ is an isomorphism ($\mathbb{R}^d$ is path-connected), $D_{\mathbb{R}^d}(\varphi)$ is a generator of $H_0(\mathbb{R}^d; R) \cong R$. Thus $D_{\mathbb{R}^d}$ is an isomorphism.
[/guided]
[/step]
[step:Show that good sets are closed under Mayer--Vietoris unions]
[claim:If $U$, $V$, and $U \cap V$ are good open subsets of $M$, then $U \cup V$ is good]
Suppose $D_U$, $D_V$, and $D_{U \cap V}$ are all isomorphisms.
[proof]
Consider the [Mayer--Vietoris sequence for compactly supported cohomology](/theorems/2289):
\begin{align*}
\cdots \to H_c^k(U \cap V; R) \to H_c^k(U; R) \oplus H_c^k(V; R) \to H_c^k(U \cup V; R) \xrightarrow{\partial} H_c^{k+1}(U \cap V; R) \to \cdots
\end{align*}
and the Mayer--Vietoris sequence for ordinary homology:
\begin{align*}
\cdots \to H_{d-k}(U \cap V; R) \to H_{d-k}(U; R) \oplus H_{d-k}(V; R) \to H_{d-k}(U \cup V; R) \xrightarrow{\partial} H_{d-k-1}(U \cap V; R) \to \cdots
\end{align*}
The cap product maps $D_U$, $D_V$, $D_{U \cap V}$, and $D_{U \cup V}$ connect these two sequences into a ladder of commutative squares (naturality of the cap product with respect to inclusions and the connecting homomorphism). The maps $D_{U \cap V}$, $D_U \oplus D_V$ are isomorphisms by hypothesis. By the [Five Lemma](/theorems/1938), $D_{U \cup V}$ is an isomorphism.
[/proof]
[/claim]
[/step]
[step:Show that good sets are closed under countable increasing unions]
[claim:If $U_1 \subset U_2 \subset \cdots$ is an increasing sequence of good open sets, then $W = \bigcup_{m=1}^\infty U_m$ is good]
[proof]
By the [Direct Limit Description of Compactly Supported Cohomology](/theorems/2287), $H_c^k(W; R) \cong \varinjlim_m H_c^k(U_m; R)$. On the homology side, singular homology commutes with direct limits of open inclusions: $H_{d-k}(W; R) \cong \varinjlim_m H_{d-k}(U_m; R)$. The cap product maps $D_{U_m}: H_c^k(U_m; R) \to H_{d-k}(U_m; R)$ are isomorphisms for each $m$ by hypothesis, and they are compatible with the inclusion maps (naturality of the cap product). A direct limit of isomorphisms is an isomorphism, so $D_W = \varinjlim_m D_{U_m}$ is an isomorphism.
[/proof]
[/claim]
[/step]
[step:Prove that every open subset of $\mathbb{R}^d$ is good]
Let $W \subset \mathbb{R}^d$ be open. Since $W$ is open in $\mathbb{R}^d$, it is a countable union of open convex sets: write $W = \bigcup_{m=1}^\infty V_m$ where each $V_m$ is an open convex subset of $\mathbb{R}^d$. Each $V_m$ is homeomorphic to $\mathbb{R}^d$ (since any open convex subset of $\mathbb{R}^d$ is homeomorphic to $\mathbb{R}^d$), so each $V_m$ is good by the first step.
We build up $W$ inductively. Set $W_1 = V_1$. Given $W_m = V_1 \cup \cdots \cup V_m$, form $W_{m+1} = W_m \cup V_{m+1}$. To apply the Mayer--Vietoris claim, we need $W_m$, $V_{m+1}$, and $W_m \cap V_{m+1}$ to all be good. By induction, $W_m$ is good. The set $V_{m+1}$ is good since it is homeomorphic to $\mathbb{R}^d$. The intersection $W_m \cap V_{m+1} = \bigcup_{j=1}^m (V_j \cap V_{m+1})$ is a finite union of open convex sets (each $V_j \cap V_{m+1}$ is convex, hence homeomorphic to $\mathbb{R}^d$ or empty). By a nested induction using the Mayer--Vietoris claim, $W_m \cap V_{m+1}$ is good. Thus $W_{m+1}$ is good by the Mayer--Vietoris claim. Since $W = \bigcup_{m=1}^\infty W_m$ is an increasing union of good open sets, $W$ is good by the countable union claim.
[guided]
The key idea is to decompose an arbitrary open set $W \subset \mathbb{R}^d$ into manageable pieces. Every open subset of $\mathbb{R}^d$ can be written as a countable union of open convex sets (for instance, take all rational open balls contained in $W$). Each open convex set is homeomorphic to $\mathbb{R}^d$ (this is a standard result: one can construct an explicit diffeomorphism using radial rescaling from any interior point), so the first step tells us each piece is good.
The difficulty is that a union of good sets need not be good without checking the intersection condition in the Mayer--Vietoris claim. We handle this by induction on the number of convex pieces. The base case is a single convex set, which is good. For the inductive step, we take $W_{m+1} = W_m \cup V_{m+1}$. We need three things to be good: $W_m$ (by induction), $V_{m+1}$ (homeomorphic to $\mathbb{R}^d$), and the intersection $W_m \cap V_{m+1}$. This intersection equals $\bigcup_{j=1}^m (V_j \cap V_{m+1})$, which is itself a finite union of open convex sets (the intersection of two convex sets is convex). By the same finite induction, applied to this smaller union, $W_m \cap V_{m+1}$ is good. The Mayer--Vietoris claim then gives that $W_{m+1}$ is good.
Finally, $W = \bigcup_m W_m$ is an increasing union, and the countable union claim upgrades the finite result to the full open set.
[/guided]
[/step]
[step:Extend from open subsets of $\mathbb{R}^d$ to arbitrary $d$-manifolds]
Let $M$ be a $d$-dimensional $R$-oriented manifold. Since $M$ is second-countable and locally Euclidean, it admits a countable cover $\{U_m\}_{m=1}^\infty$ by open sets, each of which is homeomorphic to an open subset of $\mathbb{R}^d$.
Set $W_m = U_1 \cup \cdots \cup U_m$. By the same inductive argument as in the previous step (using the Mayer--Vietoris claim), each $W_m$ is good: the base case $W_1 = U_1$ is homeomorphic to an open subset of $\mathbb{R}^d$ and hence good; the inductive step applies because $W_m \cap U_{m+1}$ is an open subset of the manifold that is contained in $U_{m+1} \cong V \subset \mathbb{R}^d$, making it an open subset of $\mathbb{R}^d$ and therefore good. Then $M = \bigcup_{m=1}^\infty W_m$ is an increasing union of good open sets, so $M$ is good by the countable union claim.
[guided]
The final step extends the result from Euclidean space to manifolds. A $d$-manifold $M$ is by definition Hausdorff, second-countable, and locally homeomorphic to $\mathbb{R}^d$. Second-countability guarantees a countable cover by coordinate charts $\{U_m\}_{m=1}^\infty$, where each $U_m$ is homeomorphic to an open subset of $\mathbb{R}^d$.
Why is this sufficient? Each $U_m$, being homeomorphic to an open subset of $\mathbb{R}^d$, is good by the previous step. We then build up $M$ as an increasing union $W_1 \subset W_2 \subset \cdots$ where $W_m = U_1 \cup \cdots \cup U_m$. To show each $W_m$ is good, we use the Mayer--Vietoris claim: $W_{m+1} = W_m \cup U_{m+1}$, and the intersection $W_m \cap U_{m+1}$ is an open subset of $U_{m+1}$, hence an open subset of $\mathbb{R}^d$ under the chart homeomorphism, hence good. The induction goes through, and the countable union claim gives $M = \bigcup_m W_m$ is good.
This argument uses the manifold structure in an essential way: the key point is that the intersections of chart domains are themselves open subsets of Euclidean space, which is where the full strength of "every open subset of $\mathbb{R}^d$ is good" is needed. Without that result, we could not handle the intersections in the Mayer--Vietoris argument.
[/guided]
[/step]
[step:Conclude that $D_M$ is an isomorphism for all $k$]
The previous steps establish that $M$ is good, meaning $D_M: H_c^k(M; R) \to H_{d-k}(M; R)$ is an isomorphism for every $k$. This completes the proof of Poincaré duality.
[/step]