Although the abstract theory of model categories gives us tools to construct a homotopy relation (\DefinitionRef{homotopy}), it is useful to have a concrete notion of homotopic maps. Consider the free cdga on one generator $\Lambda(t, dt)$, where \linebreak $\deg{t} = 0$, this can be thought of as the (dual) unit interval with endpoints $1$ and $t$. Notice that this cdga is isomorphic to \linebreak $\Lambda(D(0))$ as defined in the previous section. We define two \emph{endpoint maps} as follows: $$ d_0, d_1 : \Lambda(t, dt) \to \k $$ $$ d_0(t) = 1, \qquad d_1(t) = 0, $$ this extends linearly and multiplicatively. Note that it follows that we have $d_0(1-t) = 0$ and $d_1(1-t) = 1$. These two functions extend to tensor products as $d_0, d_1: \Lambda(t, dt) \tensor X \to \k \tensor X \tot{\iso} X$. \Definition{cdga_homotopy}{ We call $f, g: A \to X$ homotopic ($f \simeq g$) if there is a map $$ h: A \to \Lambda(t, dt) \tensor X, $$ such that $d_0 h = g$ and $d_1 h = f$. } In terms of model categories, such a homotopy is a right homotopy and the object $\Lambda(t, dt) \tensor X$ is a path object for $X$. We can see as follows that it is a very good path object (\DefinitionRef{path_object}). First note that $\Lambda(t, dt) \tensor X \tot{(d_0, d_1)} X \oplus X$ is surjective (for $(x, y) \in X \oplus X$ take $t \tensor x + (1-t) \tensor y$). Secondly we note that $\Lambda(t, dt) = \Lambda(D(0))$ and hence $\k \to \Lambda(t, dt)$ is a cofibration, by \LemmaRef{model-cats-coproducts} we have that $X \to \Lambda(t, dt) \tensor X$ is a (necessarily trivial) cofibration. Clearly we have that $f \simeq g$ implies $f \simeq^r g$ (see \DefinitionRef{right_homotopy}), however the converse need not be true. \Lemma{cdga_homotopy}{ If $A$ is a cofibrant cdga and $f \simeq^r g: A \to X$, then $f \simeq g$ in the above sense. } \Proof{ Because $A$ is cofibrant, there is a very good homotopy $H$. Consider a lifting problem to construct a map $Path_X \to \Lambda(t, dt) \tensor X$. } \Corollary{cdga_homotopy_eqrel}{ For cofibrant $A$, $\simeq$ defines a equivalence relation. } \Definition{cdga_homotopy_classes}{ For cofibrant $A$ define the set of equivalence classes as: $$ [A, X] = \Hom_{\CDGA_\k}(A, X) / \simeq. $$ } The results from model categories immediately imply the following results. Here we use Lemma \ref{lem:left_homotopy_properties}, \ref{lem:right_homotopy_properties} and \ref{lem:weak_strong_homotopy}. \Corollary{cdga_homotopy_properties}{ Let $A$ be cofibrant. \begin{itemize} \item Let $i: A \to B$ be a trivial cofibration, then the induced map $i^\ast: [B, X] \to [A, X]$ is a bijection. \item Let $p: X \to Y$ be a trivial fibration, then the induced map $p_\ast: [A, X] \to [A, Y]$ is a bijection. \item Let $A$ and $X$ both be cofibrant, then $f: A \we X$ is a weak equivalence if and only if $f$ is a strong homotopy equivalence. Moreover, the two induced maps are bijections: \begin{align*} f_\ast: [Z, A] &\tot{\iso} [Z, X], \\ f^\ast: [X, Z] &\tot{\iso} [A, X]. \end{align*} \end{itemize} } \Remark{cdga-weak-eq-bijection}{ By \RemarkRef{cdga-mc5a-left-inverse} we can generalize the second item to arbitrary weak equivalences: If $A$ is cofibrant and $f : X \to Y$ a weak equivalence, then the induced map $f_\ast : [A, X] \to [A, Y]$ is a bijection, as seen from the following diagram: \[ \xymatrix{ & [A, X \tensor C] \ar[dl]_{\overline{\phi}_\ast}^\iso \ar[dr]^{\psi_\ast}_\iso & \\ [A, X] \ar[rr]^{f_\ast} & & [A, Y] }\] } \Lemma{cdga-homotopy-homology}{ Let $f, g: A \to X$ be two homotopic maps, then $H(f) = H(g): HA \to HX$. } \Proof{ Let $h$ be the homotopy such that $f = d_1 h$ and $g = d_0 h$. By the Künneth theorem we get the following commuting square for $i = 0, 1$: \[ \xymatrix{ H(\Lambda(t, dt)) \tensor H(A) \ar[r]^-{d_i \tensor \id} \ar[d]^-{\iso} & \k \tensor H(A) \ar[d]^-{\iso} \\ H(\Lambda(t, dt) \tensor A) \ar[r]^-{d_i} & H(\k \tensor A) } \] Now we know that $H(d_0) = H(d_1) : H(\Lambda(t, dt)) \to \k$ as $\Lambda(t, dt)$ is acyclic and the induced map sends $1$ to $1$. So the two bottom maps in the diagram are equal as well. Now we conclude $H(f) = H(d_1)H(h) = H(d_0)H(h) = H(g)$. }