<div class="gmail_quote">On Tue, Feb 24, 2009 at 9:53 AM, Peter Hilal <span dir="ltr">&lt;<a href="mailto:peter@hilalcapital.com">peter@hilalcapital.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Could someone provide a solution to do the following problem from Bird:<br>
<br>
The function &quot;log&quot; can be specified by the condition that log (2^m) = m for all m.  Construct a program for log and prove that it meets the specification.</blockquote><div><br></div><div>Well, here is the least solution on Nat:</div>
<div><br></div><div><span class="Apple-style-span" style="font-family: &#39;courier new&#39;; font-size: 12px;">log n = head [ m | m &lt;- [0..], 2^m == n ]</span></div><div> </div><div>This meets the specification, and is _|_ everywhere else :-)  The proof is trivial.</div>
<div><br></div><div>Luke</div></div>