
<HTML><HEAD><TITLE>CosmicOS message</TITLE></HEAD>
<BODY BGCOLOR='#ffffff'>
<HR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT><A NAME='27'><FONT COLOR=red>#&nbsp;MATH introduce sets and set membership</FONT></A></TT><BR>
<TT>[<A HREF='sound.cgi?s=2032111000032233'>hear</A>] </TT><TT>(intro element);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2110132111000030232110032100101302321100321110113023210030232103221000011322111011332210010133221100321001003203321332032233'>hear</A>] </TT><TT>(define element /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? lst /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;not /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;= <font style='background-color: #cdffff'>(list-find-helper </font><font style='background-color: #9bffff'>(lst)</font><font style='background-color: #cdffff'> </font><font style='background-color: #cdcdff'>(x)</font><font style='background-color: #cdffff'> </font><font style='background-color: #cdffcd'>(? y 0)</font><font style='background-color: #cdffff'> 1)</font> 0);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210003221000032100032100321132032101332233'>hear</A>] </TT><TT>(element 8 <font style='background-color: #cdffff'>(vector 8 4 3 0 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321013221000032100032100321132032101332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(vector 8 4 3 0 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003203221000032100032100321132032101332233'>hear</A>] </TT><TT>(element 0 <font style='background-color: #cdffff'>(vector 8 4 3 0 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032132210000321320321132100132101332233'>hear</A>] </TT><TT>(element 1 <font style='background-color: #cdffff'>(vector 1 0 3 9 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321132210000321320321132100132101332233'>hear</A>] </TT><TT>(element 3 <font style='background-color: #cdffff'>(vector 1 0 3 9 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032032210000321320321132100132101332233'>hear</A>] </TT><TT>(element 0 <font style='background-color: #cdffff'>(vector 1 0 3 9 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321013221000032110321000321320321032101332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(vector 6 8 1 0 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003213221000032110321000321320321032101332233'>hear</A>] </TT><TT>(element 1 <font style='background-color: #cdffff'>(vector 6 8 1 0 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321013221000032110321000321320321032101332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(vector 6 8 1 0 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003211032210000321103210003211321001321032101332233'>hear</A>] </TT><TT>(element 6 <font style='background-color: #cdffff'>(vector 6 8 3 9 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003211032210000321103210003211321001321032101332233'>hear</A>] </TT><TT>(element 6 <font style='background-color: #cdffff'>(vector 6 8 3 9 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210132210000321103210003211321001321032101332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(vector 6 8 3 9 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210032210000321103210032132111321032101332233'>hear</A>] </TT><TT>(element 4 <font style='background-color: #cdffff'>(vector 6 4 1 7 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032132210000321103210032132111321032101332233'>hear</A>] </TT><TT>(element 1 <font style='background-color: #cdffff'>(vector 6 4 1 7 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003211132210000321103210032132111321032101332233'>hear</A>] </TT><TT>(element 7 <font style='background-color: #cdffff'>(vector 6 4 1 7 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21003023211100003211032210000321000321132111321001332233'>hear</A>] </TT><TT>(not / element 6 <font style='background-color: #cdffff'>(vector 8 3 7 9)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100302321110000321103221000032100032100321321132101332233'>hear</A>] </TT><TT>(not / element 6 <font style='background-color: #cdffff'>(vector 8 4 1 3 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21003023211100003211032210000321001321032101332233'>hear</A>] </TT><TT>(not / element 6 <font style='background-color: #cdffff'>(vector 9 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21003023211100003203221000032111321032101332233'>hear</A>] </TT><TT>(not / element 0 <font style='background-color: #cdffff'>(vector 7 2 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21003023211100003211032210000321132101332233'>hear</A>] </TT><TT>(not / element 6 <font style='background-color: #cdffff'>(vector 3 5)</font>);</TT><BR>
<BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;rules for set equality</TT><BR>
<TT>[<A HREF='sound.cgi?s=2110132111000130232110032100101302321100321001003023211113221132211110130232100101332033221013221110000322111010302321001013322100100333221110001322111100302321001013322100100333322101011332233'>hear</A>] </TT><TT>(define set-subset /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? y /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;if <font style='background-color: #cdffff'>(&gt; </font><font style='background-color: #9bffff'>(list-length / x)</font><font style='background-color: #cdffff'> 0)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>(and </font><font style='background-color: #ff9bff'>(element </font><font style='background-color: #ff69ff'>(head / x)</font><font style='background-color: #ff9bff'> </font><font style='background-color: #ff9bcd'>(y)</font><font style='background-color: #ff9bff'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdcd'>(set-subset </font><font style='background-color: #ffcd9b'>(tail / x)</font><font style='background-color: #ffcdcd'> </font><font style='background-color: #cdcdcd'>(y)</font><font style='background-color: #ffcdcd'>)</font><font style='background-color: #ffcdff'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #ffffcd'>(true)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211013211100103023211003210010130232110032100100302321013221110001322100101332210010033322111000132210010033221001013332233'>hear</A>] </TT><TT>(define set= /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? y /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;and <font style='background-color: #cdffff'>(set-subset </font><font style='background-color: #9bffff'>(x)</font><font style='background-color: #cdffff'> </font><font style='background-color: #cdcdff'>(y)</font><font style='background-color: #cdffff'>)</font> <font style='background-color: #ffcdff'>(set-subset </font><font style='background-color: #ff9bff'>(y)</font><font style='background-color: #ffcdff'> </font><font style='background-color: #ffcdcd'>(x)</font><font style='background-color: #ffcdff'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110010322100003213210132100133221000032101321321001332233'>hear</A>] </TT><TT>(set= <font style='background-color: #cdffff'>(vector 1 5 9)</font> <font style='background-color: #ffcdff'>(vector 5 1 9)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110010322100003213210132100133221000032100132132101332233'>hear</A>] </TT><TT>(set= <font style='background-color: #cdffff'>(vector 1 5 9)</font> <font style='background-color: #ffcdff'>(vector 9 1 5)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100302321110010322100003213210132100133221000032132101332233'>hear</A>] </TT><TT>(not / set= <font style='background-color: #cdffff'>(vector 1 5 9)</font> <font style='background-color: #ffcdff'>(vector 1 5)</font>);</TT><BR>
<BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;let's go leave ourselves wide open to Russell's paradox</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;... by using characteristic functions</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;... since it doesn't really matter for communication purposes</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;... and so far this is just used / tested with sets of integers really</TT><BR>
<TT>[<A HREF='sound.cgi?s=21110000321013221111032211003210010130232103221010322100101332101033211113332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(all </font><font style='background-color: #9bffff'>(? x / = </font><font style='background-color: #69ffff'>(+ </font><font style='background-color: #37ffff'>(x)</font><font style='background-color: #69ffff'> 10)</font><font style='background-color: #9bffff'> 15)</font><font style='background-color: #cdffff'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032113221111032211003210010130232103221001322100101332113322101032210010133211033332233'>hear</A>] </TT><TT>(element 3 <font style='background-color: #cdffff'>(all </font><font style='background-color: #9bffff'>(? x / = </font><font style='background-color: #69ffff'>(* </font><font style='background-color: #37ffff'>(x)</font><font style='background-color: #69ffff'> 3)</font><font style='background-color: #9bffff'> </font><font style='background-color: #9bcdff'>(+ </font><font style='background-color: #9b9bff'>(x)</font><font style='background-color: #9bcdff'> 6)</font><font style='background-color: #9bffff'>)</font><font style='background-color: #cdffff'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21101321110011302321000032233'>hear</A>] </TT><TT>(define empty-set / vector);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032032211111332233'>hear</A>] </TT><TT>(element 0 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21001132211003210010130232110111132211100003221001013322111113332211100003221010322100101332133221111133332233'>hear</A>] </TT><TT>(forall</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffff'>(? x /</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdffff'>=&gt; </font><font style='background-color: #9bffff'>(element </font><font style='background-color: #69ffff'>(x)</font><font style='background-color: #9bffff'> </font><font style='background-color: #9bcdff'>(natural-set)</font><font style='background-color: #9bffff'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #cdcdff'>(element </font><font style='background-color: #cd9bff'>(+ </font><font style='background-color: #cd69ff'>(x)</font><font style='background-color: #cd9bff'> 1)</font><font style='background-color: #cdcdff'> </font><font style='background-color: #cdcdcd'>(natural-set)</font><font style='background-color: #cdcdff'>)</font><font style='background-color: #cdffff'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032132211111332233'>hear</A>] </TT><TT>(element 1 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321032211111332233'>hear</A>] </TT><TT>(element 2 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321132211111332233'>hear</A>] </TT><TT>(element 3 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210032211111332233'>hear</A>] </TT><TT>(element 4 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210132211111332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003211032211111332233'>hear</A>] </TT><TT>(element 6 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003211132211111332233'>hear</A>] </TT><TT>(element 7 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032100032211111332233'>hear</A>] </TT><TT>(element 8 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032100132211111332233'>hear</A>] </TT><TT>(element 9 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2110132111010030232100003221010113322101100332233'>hear</A>] </TT><TT>(define boolean-set / vector <font style='background-color: #cdffff'>(true)</font> <font style='background-color: #ffcdff'>(false)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032210101133221110100332233'>hear</A>] </TT><TT>(element <font style='background-color: #cdffff'>(true)</font> <font style='background-color: #ffcdff'>(boolean-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032210110033221110100332233'>hear</A>] </TT><TT>(element <font style='background-color: #cdffff'>(false)</font> <font style='background-color: #ffcdff'>(boolean-set)</font>);</TT><BR>
<BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;actually, to simplify semantics elsewhere, true and false</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>#&nbsp;are now just 0 and 1 so they are not distinct from ints</TT><BR>
<TT>[<A HREF='sound.cgi?s=21101321110101302321111030232110032100101302321010030232110032100100302321013221110000322100100332211111333221032210013210322100100333221001013332233'>hear</A>] </TT><TT>(define even-natural-set /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;all /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? x /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;exists /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;? y /</TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;and <font style='background-color: #cdffff'>(element </font><font style='background-color: #9bffff'>(y)</font><font style='background-color: #cdffff'> </font><font style='background-color: #cdcdff'>(natural-set)</font><font style='background-color: #cdffff'>)</font></TT><BR>
<TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TT><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font style='background-color: #ffcdff'>(= </font><font style='background-color: #ff9bff'>(* 2 </font><font style='background-color: #ff69ff'>(y)</font><font style='background-color: #ff9bff'>)</font><font style='background-color: #ffcdff'> </font><font style='background-color: #ffcdcd'>(x)</font><font style='background-color: #ffcdff'>)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032032211111332233'>hear</A>] </TT><TT>(element 0 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003203221110101332233'>hear</A>] </TT><TT>(element 0 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032132211111332233'>hear</A>] </TT><TT>(element 1 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21003023211100003213221110101332233'>hear</A>] </TT><TT>(not / element 1 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321032211111332233'>hear</A>] </TT><TT>(element 2 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2111000032103221110101332233'>hear</A>] </TT><TT>(element 2 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321132211111332233'>hear</A>] </TT><TT>(element 3 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=210030232111000032113221110101332233'>hear</A>] </TT><TT>(not / element 3 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210032211111332233'>hear</A>] </TT><TT>(element 4 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321003221110101332233'>hear</A>] </TT><TT>(element 4 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003210132211111332233'>hear</A>] </TT><TT>(element 5 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=2100302321110000321013221110101332233'>hear</A>] </TT><TT>(not / element 5 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=211100003211032211111332233'>hear</A>] </TT><TT>(element 6 <font style='background-color: #cdffff'>(natural-set)</font>);</TT><BR>
<BR>
<TT>[<A HREF='sound.cgi?s=21110000321103221110101332233'>hear</A>] </TT><TT>(element 6 <font style='background-color: #cdffff'>(even-natural-set)</font>);</TT><BR>
<BR>

</BODY>
</HTML>
