<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.6000.16809" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV><FONT face="Courier New" size=2>Ok. I have two checks, nf1? and nf2?. If 
the definition of N can be trusted only nf2? is needed.</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>(define-metafunction bλ nf1? : T -&gt; 
any<BR>&nbsp;((nf1? ((L (V) T) T)) #f)<BR>&nbsp;((nf1? (L (V) T)) (nf? 
T))<BR>&nbsp;((nf1? (T_1 T_2)) ,(and (not (term (abstr? T_1))) (term (nf? T_1)) 
(term (nf? T_2)))))</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>(define-metafunction bλ nf2? : T -&gt; 
any<BR>&nbsp;((nf2? N) #t)<BR>&nbsp;((nf2? T) #f))</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>(write<BR>&nbsp;(time<BR>&nbsp; 
(redex-check cλ T <BR>&nbsp;&nbsp; (lambda (t)<BR>&nbsp;&nbsp;&nbsp; (case 
(length (apply-reduction-relation reductor t))<BR>&nbsp;&nbsp;&nbsp;&nbsp; ((1) 
#t)<BR>&nbsp;&nbsp;&nbsp;&nbsp; ((0) (and (term (nf1? t)) (term (nf2? 
t))))<BR>&nbsp;&nbsp;&nbsp;&nbsp; (else #f)))<BR>&nbsp;&nbsp; #:attempts 
10000<BR>&nbsp;&nbsp; #:source reductor<BR>&nbsp;&nbsp; #:retries 
100)))</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>cpu time: 46375 real time: 47094 gc time: 
4196<BR>#&lt;void&gt;</FONT></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>
<DIV><FONT face="Courier New" size=2>
<DIV><FONT face="Courier New" size=2></FONT></DIV>
<DIV></FONT></FONT><FONT face="Courier New" size=2>Thanks, 
Jos</FONT></DIV></DIV></DIV>
<DIV><FONT face="Courier New" size=2></FONT>&nbsp;</DIV>
<DIV><FONT face="Courier New" size=2>----- Original Message ----- </FONT>
<DIV><FONT face="Courier New" size=2>From: "Robby Findler" &lt;</FONT><A 
href="mailto:robby@eecs.northwestern.edu"><FONT face="Courier New" 
size=2>robby@eecs.northwestern.edu</FONT></A><FONT face="Courier New" 
size=2>&gt;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>To: "Jos Koot" &lt;</FONT><A 
href="mailto:jos.koot@telefonica.net"><FONT face="Courier New" 
size=2>jos.koot@telefonica.net</FONT></A><FONT face="Courier New" 
size=2>&gt;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Cc: &lt;</FONT><A 
href="mailto:plt-scheme@list.cs.brown.edu"><FONT face="Courier New" 
size=2>plt-scheme@list.cs.brown.edu</FONT></A><FONT face="Courier New" 
size=2>&gt;</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Sent: Sunday, February 22, 2009 4:13 
PM</FONT></DIV>
<DIV><FONT face="Courier New" size=2>Subject: Re: [plt-scheme] redex is 
great</FONT></DIV></DIV>
<DIV><FONT face="Courier New"><BR><FONT size=2></FONT></FONT></DIV><FONT 
face="Courier New" size=2>That's half of the property but I expect it to be the 
interesting half<BR>(that doesn't check that all non-reducing forms are normal 
forms).<BR><BR>Robby<BR><BR><BR>On 2/22/09, Jos Koot &lt;</FONT><A 
href="mailto:jos.koot@telefonica.net"><FONT face="Courier New" 
size=2>jos.koot@telefonica.net</FONT></A><FONT face="Courier New" size=2>&gt; 
wrote:<BR>&gt; You mean this?<BR>&gt;<BR>&gt; (write<BR>&gt;&nbsp; 
(time<BR>&gt;&nbsp;&nbsp; (redex-check cλ T<BR>&gt;&nbsp;&nbsp;&nbsp; (lambda 
(t) (&lt; (length (apply-reduction-relation reductor t)) 
2))<BR>&gt;&nbsp;&nbsp;&nbsp; #:attempts 10000<BR>&gt;&nbsp;&nbsp;&nbsp; 
#:source reductor<BR>&gt;&nbsp;&nbsp;&nbsp; #:retries 100)))<BR>&gt;<BR>&gt; cpu 
time: 46250 real time: 49094 gc time: 3810<BR>&gt; #&lt;void&gt;<BR>&gt;<BR>&gt; 
Jos<BR>&gt;<BR>&gt; ----- Original Message -----<BR>&gt; From: "Robby Findler" 
&lt;</FONT><A href="mailto:robby@eecs.northwestern.edu"><FONT face="Courier New" 
size=2>robby@eecs.northwestern.edu</FONT></A><FONT face="Courier New" 
size=2>&gt;<BR>&gt; To: "Jos Koot" &lt;</FONT><A 
href="mailto:jos.koot@telefonica.net"><FONT face="Courier New" 
size=2>jos.koot@telefonica.net</FONT></A><FONT face="Courier New" 
size=2>&gt;<BR>&gt; Cc: &lt;</FONT><A 
href="mailto:plt-scheme@list.cs.brown.edu"><FONT face="Courier New" 
size=2>plt-scheme@list.cs.brown.edu</FONT></A><FONT face="Courier New" 
size=2>&gt;<BR>&gt; Sent: Sunday, February 22, 2009 2:44 PM<BR>&gt; Subject: Re: 
[plt-scheme] redex is great<BR>&gt;<BR>&gt;<BR>&gt; On Sun, Feb 22, 2009 at 7:05 
AM, Jos Koot &lt;</FONT><A href="mailto:jos.koot@telefonica.net"><FONT 
face="Courier New" size=2>jos.koot@telefonica.net</FONT></A><FONT 
face="Courier New" size=2>&gt; wrote:<BR>&gt;&gt; Hi Robby,<BR>&gt;&gt; This 
does the job. Now<BR>&gt;&gt; (term(curry((((λ(z)(z z))(λ(x y)(x(x 
y))))a)z)))<BR>&gt;&gt; is reduced to (a(a(a(a z))) without any 
bifurcation.<BR>&gt;&gt; May be the code should be simplified, but in this form 
it exposes my way<BR>&gt;&gt; of<BR>&gt;&gt; thinking.<BR>&gt;&gt; I thought you 
might like to see the results of your appreciated help.<BR>&gt;&gt; 
Thanks<BR>&gt;&gt; very much.<BR>&gt;<BR>&gt; Nice.<BR>&gt;<BR>&gt; Now the 
thing to try to to formulate a property of this semantics and<BR>&gt; use 
redex-check to try to falsify it. I expect you'd want the property<BR>&gt; to be 
something like "each term is either a normal form or reduces to<BR>&gt; exactly 
one thing".<BR>&gt;<BR>&gt; Robby</FONT></BODY></HTML>