hcju/proofwikiqa huggingface dataset:
We have that $\mathcal R \left({n_1, n_2, \ldots, n_k, y}\right)$ holds {{iff}} $\chi_\mathcal R \left({n_1, n_2, \ldots, n_k, y}\right) = 1$, from the definition of the characteristic function of a relation. This in turn holds {{iff}} $\overline{\operatorname{sgn}} \left({\chi_\mathcal R \left({n_1, n_2, \ldots, n_k, y}\right)}\right) = 0$, where $\overline{\operatorname{sgn}}$ is the signum-bar function. Hence we have: :$\mu y \ \mathcal R \left({n_1, n_2, \ldots, n_k, y}\right) \iff \mu y \left({\overline{\operatorname{sgn}} \left({\chi_\mathcal R \left({n_1, n_2, \ldots, n_k, y}\right)}\right) = 0}\right)$. Since $\overline{\operatorname{sgn}}$ and $\chi_\mathcal R$ are total functions, then so is $\overline{\operatorname{sgn}} \circ \chi_\mathcal R$. {{qed}} Category:Primitive Recursive Functions Category:Recursive Functions 89fayxzoz09fprbh3cc7y6arzi48t04
A primitive recursive function is a total function, which is apparent from its method of definition. As the processes for generate a primitive recursive function are a subset of those to generate a recursive function, it follows that a primitive recursive function is also a recursive function. The result follows from the definition of a total recursive function. {{qed}} Category:Primitive Recursive Functions Category:Recursive Functions 3nmvtn2sg09j3f6oztavo9f8j59t5vs
From Minimization on Relation Equivalent to Minimization on Function, minimization on $\mathcal R$ is equivalent to minimization on $\overline{\operatorname{sgn}} \circ \chi_\mathcal R$. We have that a Primitive Recursive Function is URM Computable. By definition, if $\mathcal R$ is URM computable then so is its characteristic function $\chi_\mathcal R$. We have that $\overline{\operatorname{sgn}}$ is primitive recursive and thus URM computable. Thus, from Function Obtained by Substitution from URM Computable Functions, $\overline{\operatorname{sgn}} \circ \chi_\mathcal R$ is URM computable. {{qed}} Category:URM Programs fzshhimc3aj5rj89l50k8up7xog7b2x
From: * Functions obtained by minimization from URM computable functions are URM computable * Functions obtained by minimization from URM computable relations are URM computable * Functions obtained by primitive recursion from URM computable functions are URM computable * Functions obtained by substitution from URM computable functions are URM computable * Primitive Recursive Function is URM Computable * Primitive Recursive Relation is URM Computable it follows that all the functions obtained from the basic primitive recursive functions using the operations of substitution, primitive recursion and minimization (on a function or a relation) are URM computable. {{qed}} Category:Recursive Functions Category:URM Programs dhr66n2861nap73vuboln1gzoqfyql4
The state of a URM program at a particular point in time is defined as: : the value of the instruction pointer : the value, at that point, of each of the registers that are used by the program. Let $P$ be a URM program. Suppose that, at a given stage of computation: : the value of the instruction pointer is $a$; : the value of register $R_k$ is $r_k$. Let $b = \rho \left({P}\right)$ be the number of registers used by $P$. Then we can define the '''state code''' $s$ as: :$s = p_1^a p_2^{r_1} p_3^{r_2} \cdots p_{b+1}^{r_b}$ where $p_j = p \left({j}\right)$ is defined as the $j$th prime number. Hence it follows from the Fundamental Theorem of Arithmetic that $s$ is uniquely specified for any given state. {{qed}}
Let $f: \N^k \to \N$ be a URM computable function. Then by hypothesis there is a URM program that computes $f$. Let $P$ be the URM program with the smallest code number that computes $f$. Let $e = \gamma \left({P}\right)$ be the code number of $P$. Consider the function $g: \N^k \to \N$ given by: :$g \left({n_1, n_2, \ldots, n_k}\right) \approx \mu t \left({\left({S_k \left({e, n_1, n_2, \ldots, n_k, t}\right)}\right)_1 > \operatorname{len} \left({e}\right)}\right)$ where: * $\operatorname{len} \left({e}\right)$ is the length of $e$; * $\mu t$ is the minimization operation on $S_k$; * $\approx$ denotes partial function equality; * $S_k \left({e, n_1, n_2, \ldots, n_k, t}\right)$ is the state code at stage $t$ of the computation of $P$ with input $\left({n_1, n_2, \ldots, n_k}\right)$; * the number $\left({S_k \left({e, n_1, n_2, \ldots, n_k, t}\right)}\right)_1$ is the code number of the instruction about to be carried out at stage $t$. So the inequality: :$\left({S_k \left({e, n_1, n_2, \ldots, n_k, t}\right)}\right)_1 > \operatorname{len} \left({e}\right)$ expresses the fact that at stage $t$ the computation has halted. So the value of $g \left({n_1, n_2, \ldots, n_k}\right)$ is the state code of the first stage at which computation has halted, if there is one, and undefined otherwise. Since the functions in this inequality, and the sign $>$ itself, are all primitive recursive, it follows that the inequality expresses a primitive recursive relation on $e, n_1, n_2, \ldots, n_k, t$. Thus $g$ is a recursive function by definition, as it can be obtained by minimization on a recursive relation. Now consider the function $h: \N^k \to \N$ given by: :$h \left({n_1, n_2, \ldots, n_k}\right) \approx S_k \left({e, n_1, n_2, \ldots, n_k, g \left({n_1, n_2, \ldots, n_k}\right)}\right)$. This is recursive because it was obtained by substitution from known recursive functions. Now $h \left({n_1, n_2, \ldots, n_k}\right)$ is defined iff the computation halts, and it gives the value of the state code when it has halted. The output of this computation, which gives the value of $f$, is the number in register $R_1$. But the number in $R_1$ is the exponent of $p_2 = 3$ in the expression of the state code $h \left({n_1, n_2, \ldots, n_k}\right)$ in the form $p_1^a p_2^{r_1} p_3^{r_2} \cdots p_{k+1}^{r_k}$. Thus the function $f$ is given by: :$f \left({n_1, n_2, \ldots, n_k}\right) \approx \left({h \left({n_1, n_2, \ldots, n_k}\right)}\right)_2$. It follows that $f$ is a recursive function, since it is obtained by substitution from known recursive functions. {{qed}}
Let $f: \N^k \to \N$ be any recursive function. Consider the minimization operation on the $k+2$-ary relation $\mathcal{R} \left({n_1, n_2, \ldots, n_k, y}\right)$: :$\mu y \ \mathcal R \left({n_1, n_2, \ldots, n_k, y}\right)$ Consider the  From Minimization on Relation Equivalent to Minimization on Function, this is equivalent to: :$\mu y \left({\overline{\operatorname{sgn}} \left({\chi_{\mathcal{R}} \left({n_1, n_2, \ldots, n_k, y}\right)}\right) = 0}\right)$. So we can rewrite the statement of Kleene's Normal Form Theorem as: :$(1) \quad f \left({n_1, n_2, \ldots, n_k}\right) \approx U \left({\mu z \left({\overline{\operatorname{sgn}} \left({\chi_{\mathcal{R}} \left({e, n_1, n_2, \ldots, n_k, z}\right)}\right) = 0}\right)}\right)$. From the proof of that theorem, we have that $T_k$ is primitive recursive. Hence from the definition of characteristic function, so is $\chi_{T_k}$. {{explain|What is $T_k$?}} We also know that $\overline{\operatorname{sgn}}$ is primitive recursive. We also have by hypothesis that $U$ is primitive recursive. Hence all of $\chi_{T_k}$, $\overline{\operatorname{sgn}}$ and $U$ can be defined without using minimization. So the only minimization involved in obtaining the values of $f$ in $(1)$ is the one explicitly mentioned in $(1)$. Hence the result. {{qed}} Category:Recursive Functions 93llpzqwf0xbpn80itspfyq1jzypyso
Let $\Phi_k: \N^{k+1} \to \N$ be given by: :$\Phi_k \left({e, n_1, n_2, \ldots, n_k}\right) = U \left({\mu z \ T_k \left({e, n_1, n_2, \ldots, n_k, z}\right)}\right)$ where $T_k$ and $U$ are as in Kleene's Normal Form Theorem. Thus we have reinterpreted Kleene's Normal Form Theorem as being about URM computable functions. This is legitimate, as a URM Computable Function is Recursive and vice versa. {{qed}}
This follows directly from: * Kleene's Normal Form Theorem; * Universal URM Computable Functions. {{qed}} Category:URM Programs 557hxwrpy6pu9y2am1yzmuwcl59xj3w
Let $P_f, P_g, P_\mathcal R$ be the URM programs computing, respectively, the functions $f$ and $g$ and the characteristic function $\chi_\mathcal R$. From Recursive Function is URM Computable, these programs are guaranteed to exist. An informal algorithm for computing $h$ is as follows. # Input $\left({n_1, n_2, \ldots, n_k}\right)$. # Use $P_\mathcal R$ to determine whether $\mathcal R \left({n_1, n_2, \ldots, n_k}\right)$ holds. # If it holds, use $P_f$ to compute $f \left({n_1, n_2, \ldots, n_k}\right)$. # If it does not hold, use $P_g$ to compute $g \left({n_1, n_2, \ldots, n_k}\right)$. The result follows from URM Computable Function is Recursive. {{qed}}
Consider the basic primitive recursive functions. To each basic primitive recursive function $f$ let us assign a code number $\delta \left({f}\right)$, as follows: * $\delta \left({\operatorname{zero}}\right) = 3$ * $\delta \left({\operatorname{succ}}\right) = 9$ * $\forall k, m \in \N^*: m \le k: \delta \left({\operatorname{pr}^k_m}\right) = 2^k 3^m$ Suppose the function $h$ is defined by substitution from the functions $f, g_1, g_2, \ldots, g_t$ to which we have already assigned code numbers. Then we put: :$\delta \left({h}\right) = 2^{\delta \left({f}\right)} 3^{\delta \left({g_1}\right)} 5^{\delta \left({g_2}\right)} \cdots  p_{t+1}^{\delta \left({g_t}\right)} + 1$ Suppose the function $h$ is defined by primitive recursion from the functions $f$ and $g$ to which we have already assigned code numbers. Then we put: :$\delta \left({h}\right) = 2^{\delta \left({f}\right)} 3^{\delta \left({g}\right)} + 2$ Thus we assign a '''code number''' to every definition of a primitive recursive function. Given any natural number $m$ we can determine whether $m$ is the code number for a definition of a primitive recursive function, and if so, work out what definition it encodes. In particular, given any such $m$ we can work out whether it encodes a primitive recursive function $f: \N \to \N$, and determine how $f$ is built up from basic primitive recursive functions on up. From this definition, we can compute all the values of $f$ for all inputs $n \in \N$. So, we define the function $\Phi: \N^2 \to \N$ as follows: :$\Phi \left({m, n}\right) = \begin{cases} f \left({n}\right) & : \text{if } m \text { codes a definition of the primitive recursive function } f: \N \to \N \\ 0 & : \text{otherwise} \end{cases}$ It is deducible by arguments derived from proofs of the various primitive recursive functions that there is a URM program for computing the values of $\Phi$. That is, $\Phi$ can be shown to be URM computable Now we apply Cantor's Diagonal Argument to create the following URM computable function $g: \N \to \N$: :$g \left({n}\right) = \Phi \left({n, n}\right) + 1$ We have that $\Phi$ is URM computable. So it follows that $g \left({n}\right)$ is also URM computable. Now, let $f$ be a primitive recursive function and let $m$ code some definition of $f$. So, for all $n \in \N$, we have: :$f \left({n}\right) = \Phi \left({m, n}\right)$ Thus $f \left({m}\right) = \Phi \left({m, m}\right)$. Now, since $g \left({m}\right) = \Phi \left({m, m}\right) + 1$, we see that $g \left({m}\right) \ne f \left({m}\right)$, whatever $f$ may happen to be. Hence $g \ne f$. So $g$ is different from any primitive recursive function $f$ that we care to devise. Therefore $g$ is a URM computable function which is not primitive recursive. Hence the result. {{qed}} Category:URM Programs Category:Primitive Recursive Functions gt9vhp22oxc6upgupjyo65kswvimwk9
First we note that as $\card S > 1$, there are at least two elements of $S$ which are distinct. Call these distinct elements $a$ and $b$. That is: :$\exists a, b \in S: a \ne b$ First we show that $\mathbb F$ is infinite, as follows. For each $m \in \N$, let $\phi_m$ be the mapping defined as: :$\map {\phi_m} n = \begin{cases} a & : n \ne m \\ b & : n = m \end{cases}$ Then: :$\forall m_1, m_2 \in \N: m_1 \ne m_2 \implies \phi_{m_1} \ne \phi_{m_2}$ as: :$b = \map {\phi_{m_1} } {m_1} \ne \map {\phi_{m_2} } {m_1} = a$ So the mapping $\Psi: \N \to \mathbb F$ defined as: :$\map \Psi n = \phi_n$ is an injection. Thus $\mathbb F$ is infinite from Infinite if Injection from Natural Numbers. Next we show that $\mathbb F$ is uncountable. Let $\Phi: \N \to \mathbb F$ be a mapping. For each $n \in \N$ let $f_n: \N \to S$ be the function $\map \Phi n$. Let us define $g: \N \to \N$ by: :$\map g n = \begin{cases} a & : \map {f_n} n \ne a \\ b & : \map {f_n} n = a \end{cases}$ Then $g \in \mathbb F$, but: :$\forall n \in \N: \map g n \ne \map {f_n} n$ and so $g \ne f_n$. Since $g$ is an element of $\mathbb F$ which is different from all the values taken by $\Phi$, it follows that $\Phi$ is not a surjection and hence not a bijection. Thus no bijection exists between $\mathbb F$ and $\N$ and so $\mathbb F$ is not equivalent to $\N$. Thus from Countably Infinite iff Equivalent to Natural Numbers, $\mathbb F$ is uncountable. {{qed}}
Seeking a contradiction, assume that $S$ is finite. Let $k \in \N$ be such that there exists a bijection $\psi: S \to \N_k$. Note that $\N_k \subset \N$ since $k \in \N$, $k \notin \N_k$. Consider the restriction $\phi \restriction_{\N_k}$ of $\phi$ to $\N_k$. Then $\phi \restriction_{\N_k}: \N_k \to S$ is an injection by Restriction of Injection is Injection. From Equivalence of Mappings between Sets of Same Cardinality, it is also a bijection. Consider $\phi \left({k}\right) \in S$. As $\phi \restriction_{\N_k}$ is a surjection, there exists a $j \in \N_k$ such that: :$\phi \left({j}\right) = \phi \restriction_{\N_K} \left({j}\right) = \phi \left({k}\right)$. Since $j \ne k$, it follows that $\phi$ cannot be an injection. So there can be no such $k$. Hence $S$ is infinite. {{qed}} Category:Injections Category:Infinite Sets 7yokqjzjkm4ac651wt8ynhgl6ebsmam
We perform a proof by Cantor's Diagonal Argument. {{AimForCont}} $H$ is recursive. Consider the universal URM computable function $\Phi_1: \N^2 \to \N$. Let $f: \N \to \N$ be the function given by: :$\map f n = \begin{cases} \map {\Phi_1} {n, n} & : \map H {n, n} = 1 \\ 0 & : \text{otherwise} \end{cases}$ As $H$ is recursive, the relation $\map H {n, n} = 1$ is also recursive. The universal function is recursive as all URM computable functions are recursive. Also, $\map {\Phi_1} {n, n}$ is defined when $\map H {n, n} = 1$. The constant $0$ is (primitive) recursive and always defined. So $f$ is total, and by Combination of Recursive Functions it is also recursive. It follows immediately that the function $g: \N \to \N$ given by: :$\map g n = \map f n + 1$ is also recursive. So by Universal URM Computable Functions there exists some $e \in \N$ such that: :$\forall n: \map g n = \map {\Phi_1} {e, n}$ that is, the URM program coded by $e$ computes $g$. Hence: :$\map g e = \map {\Phi_1} {e, e}$ But since $e$ codes a URM program which halts with input $e$, we have: :$\map H {e, e} = 1$ and so: :$\map f e = \map {\Phi_1} {e, e}$ Therefore, by definition of $g$, we have: :$\map g e = \map {\Phi_1} {e, e} + 1$ This contradiction arose because we assumed that $H$ is recursive. Hence the result. {{Qed}} Category:URM Programs Category:Recursion Theory nqsyvfw3b9n34ir7ld2nu0la3udzsf9
We perform a proof by Cantor's Diagonal Argument. Suppose the contrary, that $\operatorname{Tot}$ is a recursive set. First we define a recursive function $h$ which enumerates the code numbers of URM programs which compute total functions of one variable. The program of this sort with the smallest code is: {| |- ! align="right" | Line !! ! align="left" | Command  |- | align="right" | $1$ || | align="left" | $Z \left({n}\right)$  |} which computes the zero function. Its code number is $2^3 = 8$. So we can define the recursive function $h$ as: :$h \left({n}\right) = \begin{cases} 8 & : n = 0 \\ \mu z \left({z \in \operatorname{Tot} \text { and } h \left({n-1}\right) < z}\right) & : n > 0 \end{cases}$ where $\mu z$ is the minimization operation. As there are infinitely many URM programs which compute a total function of one variable, $h \left({n}\right)$ is always defined. More importantly, if $f: \N \to \N$ is a total recursive function, there is some $m \in \N$ such that the URM program with code number $h \left({n}\right)$ computes $f$. Now we define the function $\Phi: \N^2 \to \N$ as: :$\Phi \left({m, n}\right) = \Phi_1 \left({h \left({m}\right), n}\right)$ where $\Phi_1$ is the universal URM computable function of one variable. Then $\Phi$ is a total recursive function, because: * $\Phi_1$ and $h$ are both recursive; * The program coded by $m$ halts for all inputs $n$. It has the property that if $f: \N \to \N$ is a total recursive function, there is some $m \in \N$ such that $\Phi \left({m, n}\right) = f \left({n}\right)$ for all $n \in \N$. Now we use Cantor's Diagonal Argument. It follows immediately that the function $g: \N \to \N$ given by: :$g \left({n}\right) = \Phi \left({n, n}\right) + 1$ is also recursive. Hence there is some number $m_0$ such that: :$g \left({n}\right) = \Phi \left({m_0, n}\right)$ for all $n \in \N$. In particular: :$g \left({m_0}\right) = \Phi \left({m_0, m_0}\right)$. But from the definition of $g$: :$g \left({m_0}\right) = \Phi \left({m_0, m_0}\right) + 1$. This contradiction arose because we assumed that $\operatorname{Tot}$ is recursive. Hence the result. {{Qed}} Category:URM Programs Category:Recursion Theory b0w0mlgwqjle17ognot9ylgzi2qx10y
As $g$ is URM computable, there exists a URM program which computes it. Let $Q$ be such a program. Let $n \in \N$. Increment the <tt>Jump</tt>s in $Q$ by $n$ lines<ref>To '''increment the <tt>Jump</tt>s by $r$''' for any normalized URM program is done by changing all <tt>Jump</tt>s of the form $J \left({m, n, q}\right)$ to $J \left({m, n, q+r}\right)$.</ref>. Call this amended version $Q'$. This is because, as $Q$ was written so as to start from line 1, we need to move all the <tt>Jump</tt>s so as to point to the same lines relative to the start of $Q'$. Then we can build the following URM program: {| |- ! align="right" | Line !! ! align="left" | Command  |- | align="right" | $1$ || | align="left" | $C \left({1, 1}\right)$  |- | align="right" | $2$ || | align="left" | $C \left({1, 1}\right)$  |- | align="right" | $\vdots$ || | align="left" | $\vdots$  |- | align="right" | $n$ || | align="left" | $C \left({1, 1}\right)$  |- | align="right" | $n + 1$ || | align="left" | The start of $Q'$  |} ...etc. Each of the $C \left({1, 1}\right)$ instructions codes the identity function. So adding it to the front of $Q$ has no effect on the behaviour of $Q$ It is clear that for each $n \in \N$ there is a different URM program which computes $f$. The result follows from Infinite if Injection from Natural Numbers. {{qed}}
{{begin-eqn}} {{eqn | l = x^2       | o = \equiv       | r = y^2       | rr= \pmod n       | c =  }} {{eqn | ll= \leadsto       | l = n       | o = \divides       | r = \paren {x^2 - y^2}       | c =  }} {{eqn | ll= \leadsto       | l = n       | o = \divides       | r = \paren {x + y} \paren {x - y}       | c =  }} {{eqn | ll= \leadsto       | l = p       | o = \divides       | r = \paren {x + y} \paren {x - y}       | c = for all prime divisors $p$ of $n$ }} {{eqn | ll= \leadsto       | l = p       | o = \divides       | r = \paren {x - y}       | c =  }} {{eqn | lo= \lor       | l = p       | o = \divides       | r = \paren {x + y}       | c =  }} {{end-eqn}} But since $x \not \equiv -y \pmod n$, then: :$n \nmid \paren {x + y}$ and since $x \not \equiv y \pmod n$, then: :$n \nmid \paren {x - y}$ Therefore: :$\gcd \set {x - y, n} < n$ and: :$\gcd \set {x + y, n} < n$ So if $p \divides \paren {x - y}$ then: :$1 < \gcd \set {x - y, n} < n$ and also there exists $q$ such that: :$q \divides n$ :$q \divides \paren {x + y}$ :$1 < q \le \gcd \set {x + y, n}$ Likewise if $p \divides \paren {x + y}$ then: :$1 < \gcd \set {x + y, n} < n$ and also there exists $q$ such that: :$q \divides n$ :$q \divides \paren {x - y}$ :$1 < q \le \gcd \set {x - y, n}$ {{qed}} Category:Greatest Common Divisor 2ob6v1o7np6io1f9934hko48nro0o2v
Both parts of this proposition follow trivially from the other part and Sum of Angles of Triangle equals Two Right Angles. However, it is important to note that both of these are provable without the parallel postulate, which the proof of that theorem requires.
:400px Let $\angle ABC = \angle DEF$, $\angle BCA = \angle EFD$, and $BC = EF$. {{AimForCont}} that $AB \ne DE$. If this is the case, one of the two must be greater. {{WLOG}}, we let $AB > DE$. We construct a point $G$ on $AB$ such that $BG = ED$. Using Euclid's first postulate, we construct the segment $CG$. Now, since we have: :$BG = ED$ :$\angle GBC = \angle DEF$ :$BC = EF$ it follows from Triangle Side-Angle-Side Equality that: :$\angle GCB = \angle DFE$ But from Euclid's fifth common notion: :$\angle DFE = \angle ACB > \angle GCB$ which is a contradiction. Therefore, $AB = DE$. So from Triangle Side-Angle-Side Equality: :$\triangle ABC = \triangle DEF$ {{qed}} {{Euclid Note|26|I|It appears to have originally been created by {{AuthorRef|Thales of Miletus}}.|part=first}}
:300px Let: :$\angle ABC = \angle DEF$ :$\angle BCA = \angle EFD$ :$AB = DE$ {{AimForCont}} that $BC \ne EF$. If this is the case, one of the two must be greater. {{WLOG}}, let $BC > EF$. We construct a point $H$ on $BC$ such that $BH = EF$, and then we construct the segment $AH$. Now, since we have: :$BH = EF$ :$\angle ABH = \angle DEF$ :$AB = DE$ from Triangle Side-Angle-Side Equality we have: :$\angle BHA = \angle EFD$ But from External Angle of Triangle Greater than Internal Opposite, we have: :$\angle BHA > \angle HCA = \angle EFD$ which is a contradiction. Therefore $BC = EF$. So from Triangle Side-Angle-Side Equality: :$\triangle ABC = \triangle DEF$ {{qed}} {{Euclid Note|26|I|part = second}}
:400px Let $AB$ and $CD$ be two infinite straight lines. Let $EF$ be a transversal that cuts them. Let at least one pair of alternate angles be equal. {{WLOG}}, let $\angle AHJ = \angle HJD$. {{AimForCont}} that $AB$ and $CD$ are not parallel. Then they meet at some point $G$. {{WLOG}}, let $G$ be on the same side as $B$ and $D$. Since $\angle AHJ$ is an exterior angle of $\triangle GJH$, from External Angle of Triangle Greater than Internal Opposite, $\angle AHJ > \angle HJG$, which is a contradiction. Similarly, they cannot meet on the side of $A$ and $C$. Therefore, by definition, $AB$ and $CD$ are parallel. {{qed}} {{Euclid Note|27|I|{{EuclidNoteConverse|prop = 29|title = Parallelism implies Equal Alternate Angles|part = first}}}}
:300px Let the straight lines $AB$ and $CD$ both be parallel to the straight line $EF$. Let the straight line $GK$ be a transversal that cuts the parallel lines $AB$ and $EF$. By Parallelism implies Equal Alternate Angles: :$\angle AGK = \angle GHF$ By Playfair's Axiom, there is only one line that passes through $H$ that is parallel to $CD$ (namely $EF$). Therefore the transversal $GK$ cannot be parallel to $CD$. Hence the two lines must therefore intersect. The straight line $GK$ also cuts the parallel lines $EF$ and $CD$. So from Parallelism implies Equal Corresponding Angles: :$\angle GHF = \angle GKD$. Thus $\angle AGK = \angle GKD$. So from Equal Alternate Angles implies Parallel Lines: :$AB \parallel CD$ {{qed}}