diff src/Coinductive.v @ 81:f295a64bf9fd

Coinductive exercise description
author Adam Chlipala <adamc@hcoop.net>
date Sun, 05 Oct 2008 11:34:09 -0400
parents 943478e5a32d
children cde1351d18bb
line wrap: on
line diff
--- a/src/Coinductive.v	Sat Oct 04 14:58:00 2008 -0400
+++ b/src/Coinductive.v	Sun Oct 05 11:34:09 2008 -0400
@@ -455,3 +455,19 @@
 (** If we print the proof term that was generated, we can verify that the proof is structured as a [cofix], with each co-recursive call properly guarded. *)
 
 Print constFold_ok.
+
+
+(** * Exercises *)
+
+(** %\begin{enumerate}%#<ol>#
+
+%\item%#<li># %\begin{enumerate}%#<ol>#
+  %\item%#<li># Define a co-inductive type of infinite trees carrying data of a fixed parameter type.  Each node should contain a data value and two child trees.#</li>#
+  %\item%#<li># Define a function [everywhere] for building a tree with the same data value at every node.#</li>#
+  %\item%#<li># Define a function [map] for building an output tree out of two input trees by traversing them in parallel and applying a two-argument function to their corresponding data values.#</li>#
+  %\item%#<li># Define a stream [falses] where every node has the value [false].#</li>#
+  %\item%#<li># Define a stream [true_false] where the root node has value [true], its children have value [false], all nodes at the next have the value [true], and so on, alternating boolean values from level to level.#</li>#
+  %\item%#<li># Prove that [true_falses] is equal to the result of mapping the boolean "or" function [orb] over [true_false] and [falses].  You can make [orb] available with [Require Import Bool.].  You may find the lemma [orb_false_r] from the same module helpful.  Your proof here should not be about the standard equality [=], but rather about some new equality relation that you define.#</li>#
+#</ol>#%\end{enumerate}% #</li>#
+
+#</ol>#%\end{enumerate}% *)