MIT/GNU Scheme running under GNU/Linux Type `^C' (control-C) followed by `H' to obtain information about interrupts. Copyright 2003 Massachusetts Institute of Technology. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Image saved on Friday October 31, 2003 at 9:25:18 PM Release 7.7.90 || Microcode 14.11 || Runtime 15.3 || SF 4.41 || LIAR 4.116 Edwin 3.114 1 ]=> ;Loading "test_all.scm" ;Loading "fritz.scm" ;Loading "identifiers.scm" -- done ;Loading "primer.scm" -- done -- done ; Author: Paul Fitzpatrick, paulfitz@ai.mit.edu ; Copyright (c) 2004 Paul Fitzpatrick ; ; This file is part of CosmicOS. ; ; CosmicOS is free software; you can redistribute it and / or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2 of the License, or ; (at your option) any later version. ; ; CosmicOS is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with CosmicOS; if not, write to the Free Software ; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ; ; MATH introduce numbers (in unary notation) ; Here we count up, then count down, then go through primes, etc. ; There is a bunch of syntax around the numbers, but that ; can just be treated as noise at this point - it doesn't matter. ; Any 'words' written here are converted to arbitrary integers ; in the actual message. Any word ending in -in-unary will be given ; in unary rather than the binary code used in the main body ; of the message - this is simpler to start with. Expression: (1 1) Translation: (cos-intro 1) ok Expression: (1 2) Translation: (cos-intro 2) ok Expression: (1 3) Translation: (cos-intro 3) ok Expression: (1 4) Translation: (cos-intro 4) ok Expression: (1 5) Translation: (cos-intro 5) ok Expression: (1 6) Translation: (cos-intro 6) ok Expression: (1 7) Translation: (cos-intro 7) ok Expression: (1 8) Translation: (cos-intro 8) ok Expression: (1 9) Translation: (cos-intro 9) ok Expression: (1 10) Translation: (cos-intro 10) ok Expression: (1 11) Translation: (cos-intro 11) ok Expression: (1 12) Translation: (cos-intro 12) ok Expression: (1 13) Translation: (cos-intro 13) ok Expression: (1 14) Translation: (cos-intro 14) ok Expression: (1 15) Translation: (cos-intro 15) ok Expression: (1 16) Translation: (cos-intro 16) ok Expression: (1 17) Translation: (cos-intro 17) ok Expression: (1 18) Translation: (cos-intro 18) ok Expression: (1 19) Translation: (cos-intro 19) ok Expression: (1 20) Translation: (cos-intro 20) ok Expression: (1 21) Translation: (cos-intro 21) ok Expression: (1 22) Translation: (cos-intro 22) ok Expression: (1 23) Translation: (cos-intro 23) ok Expression: (1 24) Translation: (cos-intro 24) ok Expression: (1 25) Translation: (cos-intro 25) ok Expression: (1 26) Translation: (cos-intro 26) ok Expression: (1 27) Translation: (cos-intro 27) ok Expression: (1 26) Translation: (cos-intro 26) ok Expression: (1 25) Translation: (cos-intro 25) ok Expression: (1 24) Translation: (cos-intro 24) ok Expression: (1 23) Translation: (cos-intro 23) ok Expression: (1 22) Translation: (cos-intro 22) ok Expression: (1 21) Translation: (cos-intro 21) ok Expression: (1 20) Translation: (cos-intro 20) ok Expression: (1 19) Translation: (cos-intro 19) ok Expression: (1 18) Translation: (cos-intro 18) ok Expression: (1 17) Translation: (cos-intro 17) ok Expression: (1 16) Translation: (cos-intro 16) ok Expression: (1 15) Translation: (cos-intro 15) ok Expression: (1 14) Translation: (cos-intro 14) ok Expression: (1 13) Translation: (cos-intro 13) ok Expression: (1 12) Translation: (cos-intro 12) ok Expression: (1 11) Translation: (cos-intro 11) ok Expression: (1 10) Translation: (cos-intro 10) ok Expression: (1 9) Translation: (cos-intro 9) ok Expression: (1 8) Translation: (cos-intro 8) ok Expression: (1 7) Translation: (cos-intro 7) ok Expression: (1 6) Translation: (cos-intro 6) ok Expression: (1 5) Translation: (cos-intro 5) ok Expression: (1 4) Translation: (cos-intro 4) ok Expression: (1 3) Translation: (cos-intro 3) ok Expression: (1 2) Translation: (cos-intro 2) ok Expression: (1 1) Translation: (cos-intro 1) ok Expression: (1 2) Translation: (cos-intro 2) ok Expression: (1 3) Translation: (cos-intro 3) ok Expression: (1 5) Translation: (cos-intro 5) ok Expression: (1 7) Translation: (cos-intro 7) ok Expression: (1 11) Translation: (cos-intro 11) ok Expression: (1 13) Translation: (cos-intro 13) ok Expression: (1 17) Translation: (cos-intro 17) ok Expression: (1 19) Translation: (cos-intro 19) ok Expression: (1 23) Translation: (cos-intro 23) ok Expression: (1 1) Translation: (cos-intro 1) ok Expression: (1 4) Translation: (cos-intro 4) ok Expression: (1 9) Translation: (cos-intro 9) ok Expression: (1 16) Translation: (cos-intro 16) ok Expression: (1 25) Translation: (cos-intro 25) ok Expression: (1 1) Translation: (cos-intro 1) ok Expression: (1 8) Translation: (cos-intro 8) ok Expression: (1 27) Translation: (cos-intro 27) ok ; MATH introduce equality for unary numbers ; The intro operator does nothing essential, and could be ; omitted - it just tags the first use of a new operator. ; The = operator is introduced alongside a duplication of ; unary numbers. The meaning will not quite by nailed down ; until we see other relational operators. Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (2 5 5) Translation: ((cos-= 5) 5) ok Expression: (2 6 6) Translation: ((cos-= 6) 6) ok Expression: (2 7 7) Translation: ((cos-= 7) 7) ok Expression: (2 8 8) Translation: ((cos-= 8) 8) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 6 6) Translation: ((cos-= 6) 6) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok ; MATH now introduce other relational operators ; After this lesson, it should be clear what contexts ; < > and = are appropriate in. Expression: (3 6 2) Translation: ((cos-> 6) 2) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (3 3 1) Translation: ((cos-> 3) 1) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (3 4 0) Translation: ((cos-> 4) 0) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (3 6 0) Translation: ((cos-> 6) 0) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (4 2 4) Translation: ((cos-< 2) 4) ok Expression: (4 0 6) Translation: ((cos-< 0) 6) ok Expression: (4 3 6) Translation: ((cos-< 3) 6) ok Expression: (4 0 3) Translation: ((cos-< 0) 3) ok Expression: (4 2 4) Translation: ((cos-< 2) 4) ok Expression: (4 0 2) Translation: ((cos-< 0) 2) ok Expression: (4 2 4) Translation: ((cos-< 2) 4) ok Expression: (4 1 3) Translation: ((cos-< 1) 3) ok Expression: (4 2 6) Translation: ((cos-< 2) 6) ok Expression: (4 2 5) Translation: ((cos-< 2) 5) ok Expression: (4 0 5) Translation: ((cos-< 0) 5) ok ; drive the lesson home Expression: (2 0 0) Translation: ((cos-= 0) 0) ok Expression: (4 0 1) Translation: ((cos-< 0) 1) ok Expression: (4 0 2) Translation: ((cos-< 0) 2) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (4 1 2) Translation: ((cos-< 1) 2) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (3 2 1) Translation: ((cos-> 2) 1) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok ; switch to binary labelling Expression: (2 0 0) Translation: ((cos-= 0) 0) ok Expression: (4 0 1) Translation: ((cos-< 0) 1) ok Expression: (4 0 2) Translation: ((cos-< 0) 2) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (4 1 2) Translation: ((cos-< 1) 2) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (3 2 1) Translation: ((cos-> 2) 1) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok ; a few more random examples Expression: (3 5 1) Translation: ((cos-> 5) 1) ok Expression: (3 5 2) Translation: ((cos-> 5) 2) ok Expression: (3 5 1) Translation: ((cos-> 5) 1) ok Expression: (3 4 0) Translation: ((cos-> 4) 0) ok Expression: (4 2 4) Translation: ((cos-< 2) 4) ok Expression: (4 2 3) Translation: ((cos-< 2) 3) ok Expression: (4 1 3) Translation: ((cos-< 1) 3) ok Expression: (4 4 5) Translation: ((cos-< 4) 5) ok Expression: (4 0 5) Translation: ((cos-< 0) 5) ok Expression: (4 3 4) Translation: ((cos-< 3) 4) ok Expression: (4 1 3) Translation: ((cos-< 1) 3) ok ; MATH introduce the NOT logical operator Expression: (1 8) Translation: (cos-intro 8) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (8 -1 4 3 3) Translation: (cos-not ((cos-< 3) 3)) ok Expression: (8 -1 3 3 3) Translation: (cos-not ((cos-> 3) 3)) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (8 -1 4 1 1) Translation: (cos-not ((cos-< 1) 1)) ok Expression: (8 -1 3 1 1) Translation: (cos-not ((cos-> 1) 1)) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (8 -1 4 2 2) Translation: (cos-not ((cos-< 2) 2)) ok Expression: (8 -1 3 2 2) Translation: (cos-not ((cos-> 2) 2)) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (8 -1 4 4 4) Translation: (cos-not ((cos-< 4) 4)) ok Expression: (8 -1 3 4 4) Translation: (cos-not ((cos-> 4) 4)) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (8 -1 4 3 3) Translation: (cos-not ((cos-< 3) 3)) ok Expression: (8 -1 3 3 3) Translation: (cos-not ((cos-> 3) 3)) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (8 -1 4 2 2) Translation: (cos-not ((cos-< 2) 2)) ok Expression: (8 -1 3 2 2) Translation: (cos-not ((cos-> 2) 2)) ok Expression: (8 -1 2 3 4) Translation: (cos-not ((cos-= 3) 4)) ok Expression: (4 3 4) Translation: ((cos-< 3) 4) ok Expression: (8 -1 3 3 4) Translation: (cos-not ((cos-> 3) 4)) ok Expression: (8 -1 2 5 8) Translation: (cos-not ((cos-= 5) 8)) ok Expression: (4 5 8) Translation: ((cos-< 5) 8) ok Expression: (8 -1 3 5 8) Translation: (cos-not ((cos-> 5) 8)) ok Expression: (8 -1 2 2 4) Translation: (cos-not ((cos-= 2) 4)) ok Expression: (4 2 4) Translation: ((cos-< 2) 4) ok Expression: (8 -1 3 2 4) Translation: (cos-not ((cos-> 2) 4)) ok Expression: (8 -1 2 0 1) Translation: (cos-not ((cos-= 0) 1)) ok Expression: (4 0 1) Translation: ((cos-< 0) 1) ok Expression: (8 -1 3 0 1) Translation: (cos-not ((cos-> 0) 1)) ok Expression: (8 -1 2 0 3) Translation: (cos-not ((cos-= 0) 3)) ok Expression: (4 0 3) Translation: ((cos-< 0) 3) ok Expression: (8 -1 3 0 3) Translation: (cos-not ((cos-> 0) 3)) ok Expression: (8 -1 2 0 2) Translation: (cos-not ((cos-= 0) 2)) ok Expression: (4 0 2) Translation: ((cos-< 0) 2) ok Expression: (8 -1 3 0 2) Translation: (cos-not ((cos-> 0) 2)) ok Expression: (8 -1 2 2 0) Translation: (cos-not ((cos-= 2) 0)) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (8 -1 4 2 0) Translation: (cos-not ((cos-< 2) 0)) ok Expression: (8 -1 2 5 3) Translation: (cos-not ((cos-= 5) 3)) ok Expression: (3 5 3) Translation: ((cos-> 5) 3) ok Expression: (8 -1 4 5 3) Translation: (cos-not ((cos-< 5) 3)) ok Expression: (8 -1 2 6 4) Translation: (cos-not ((cos-= 6) 4)) ok Expression: (3 6 4) Translation: ((cos-> 6) 4) ok Expression: (8 -1 4 6 4) Translation: (cos-not ((cos-< 6) 4)) ok Expression: (8 -1 2 4 3) Translation: (cos-not ((cos-= 4) 3)) ok Expression: (3 4 3) Translation: ((cos-> 4) 3) ok Expression: (8 -1 4 4 3) Translation: (cos-not ((cos-< 4) 3)) ok Expression: (8 -1 2 7 5) Translation: (cos-not ((cos-= 7) 5)) ok Expression: (3 7 5) Translation: ((cos-> 7) 5) ok Expression: (8 -1 4 7 5) Translation: (cos-not ((cos-< 7) 5)) ok Expression: (8 -1 2 8 5) Translation: (cos-not ((cos-= 8) 5)) ok Expression: (3 8 5) Translation: ((cos-> 8) 5) ok Expression: (8 -1 4 8 5) Translation: (cos-not ((cos-< 8) 5)) ok ; MATH introduce the AND logical operator Expression: (1 13) Translation: (cos-intro 13) ok Expression: (13 (2 2 2) (2 3 3)) Translation: ((cos-and ((cos-= 2) 2)) ((cos-= 3) 3)) ok Expression: (13 (3 5 2) (3 5 4)) Translation: ((cos-and ((cos-> 5) 2)) ((cos-> 5) 4)) ok Expression: (13 (2 5 5) (2 4 4)) Translation: ((cos-and ((cos-= 5) 5)) ((cos-= 4) 4)) ok Expression: (13 (4 0 1) (2 5 5)) Translation: ((cos-and ((cos-< 0) 1)) ((cos-= 5) 5)) ok Expression: (13 (3 4 3) (2 4 4)) Translation: ((cos-and ((cos-> 4) 3)) ((cos-= 4) 4)) ok Expression: (13 (4 5 8) (4 1 3)) Translation: ((cos-and ((cos-< 5) 8)) ((cos-< 1) 3)) ok Expression: (13 (3 6 5) (3 7 5)) Translation: ((cos-and ((cos-> 6) 5)) ((cos-> 7) 5)) ok Expression: (13 (3 5 3) (3 7 4)) Translation: ((cos-and ((cos-> 5) 3)) ((cos-> 7) 4)) ok Expression: (13 (4 3 4) (2 1 1)) Translation: ((cos-and ((cos-< 3) 4)) ((cos-= 1) 1)) ok Expression: (13 (4 5 6) (2 0 0)) Translation: ((cos-and ((cos-< 5) 6)) ((cos-= 0) 0)) ok Expression: (8 -1 13 (3 4 1) (3 1 4)) Translation: (cos-not ((cos-and ((cos-> 4) 1)) ((cos-> 1) 4))) ok Expression: (8 -1 13 (4 2 4) (2 2 5)) Translation: (cos-not ((cos-and ((cos-< 2) 4)) ((cos-= 2) 5))) ok Expression: (8 -1 13 (4 5 7) (2 1 0)) Translation: (cos-not ((cos-and ((cos-< 5) 7)) ((cos-= 1) 0))) ok Expression: (8 -1 13 (3 4 3) (4 5 2)) Translation: (cos-not ((cos-and ((cos-> 4) 3)) ((cos-< 5) 2))) ok Expression: (8 -1 13 (2 2 2) (3 1 1)) Translation: (cos-not ((cos-and ((cos-= 2) 2)) ((cos-> 1) 1))) ok Expression: (8 -1 13 (4 5 3) (3 7 4)) Translation: (cos-not ((cos-and ((cos-< 5) 3)) ((cos-> 7) 4))) ok Expression: (8 -1 13 (3 0 1) (4 3 5)) Translation: (cos-not ((cos-and ((cos-> 0) 1)) ((cos-< 3) 5))) ok Expression: (8 -1 13 (4 5 2) (3 5 3)) Translation: (cos-not ((cos-and ((cos-< 5) 2)) ((cos-> 5) 3))) ok Expression: (8 -1 13 (4 6 4) (2 4 4)) Translation: (cos-not ((cos-and ((cos-< 6) 4)) ((cos-= 4) 4))) ok Expression: (8 -1 13 (4 3 2) (3 6 4)) Translation: (cos-not ((cos-and ((cos-< 3) 2)) ((cos-> 6) 4))) ok Expression: (8 -1 13 (4 2 1) (2 2 0)) Translation: (cos-not ((cos-and ((cos-< 2) 1)) ((cos-= 2) 0))) ok Expression: (8 -1 13 (3 1 1) (4 4 0)) Translation: (cos-not ((cos-and ((cos-> 1) 1)) ((cos-< 4) 0))) ok Expression: (8 -1 13 (4 6 2) (3 4 5)) Translation: (cos-not ((cos-and ((cos-< 6) 2)) ((cos-> 4) 5))) ok Expression: (8 -1 13 (4 5 2) (2 5 0)) Translation: (cos-not ((cos-and ((cos-< 5) 2)) ((cos-= 5) 0))) ok Expression: (8 -1 13 (3 3 3) (3 1 5)) Translation: (cos-not ((cos-and ((cos-> 3) 3)) ((cos-> 1) 5))) ok Expression: (13 (4 3 5) (4 1 3)) Translation: ((cos-and ((cos-< 3) 5)) ((cos-< 1) 3)) ok Expression: (13 (3 3 1) (4 2 4)) Translation: ((cos-and ((cos-> 3) 1)) ((cos-< 2) 4)) ok Expression: (8 -1 13 (4 0 3) (2 4 0)) Translation: (cos-not ((cos-and ((cos-< 0) 3)) ((cos-= 4) 0))) ok Expression: (8 -1 13 (2 0 5) (3 1 1)) Translation: (cos-not ((cos-and ((cos-= 0) 5)) ((cos-> 1) 1))) ok Expression: (8 -1 13 (4 6 1) (3 3 0)) Translation: (cos-not ((cos-and ((cos-< 6) 1)) ((cos-> 3) 0))) ok Expression: (8 -1 13 (2 4 4) (3 2 2)) Translation: (cos-not ((cos-and ((cos-= 4) 4)) ((cos-> 2) 2))) ok Expression: (13 (4 5 7) (2 4 4)) Translation: ((cos-and ((cos-< 5) 7)) ((cos-= 4) 4)) ok Expression: (8 -1 13 (3 4 2) (3 0 6)) Translation: (cos-not ((cos-and ((cos-> 4) 2)) ((cos-> 0) 6))) ok Expression: (8 -1 13 (3 3 0) (2 4 2)) Translation: (cos-not ((cos-and ((cos-> 3) 0)) ((cos-= 4) 2))) ok Expression: (8 -1 13 (2 4 2) (2 4 3)) Translation: (cos-not ((cos-and ((cos-= 4) 2)) ((cos-= 4) 3))) ok ; MATH introduce the OR logical operator Expression: (1 14) Translation: (cos-intro 14) ok Expression: (14 (4 4 5) (3 7 5)) Translation: ((cos-or ((cos-< 4) 5)) ((cos-> 7) 5)) ok Expression: (14 (2 3 3) (4 5 7)) Translation: ((cos-or ((cos-= 3) 3)) ((cos-< 5) 7)) ok Expression: (14 (4 0 1) (3 4 1)) Translation: ((cos-or ((cos-< 0) 1)) ((cos-> 4) 1)) ok Expression: (14 (2 0 0) (4 4 5)) Translation: ((cos-or ((cos-= 0) 0)) ((cos-< 4) 5)) ok Expression: (14 (2 5 5) (2 2 2)) Translation: ((cos-or ((cos-= 5) 5)) ((cos-= 2) 2)) ok Expression: (14 (2 0 0) (2 0 0)) Translation: ((cos-or ((cos-= 0) 0)) ((cos-= 0) 0)) ok Expression: (14 (4 1 3) (3 6 5)) Translation: ((cos-or ((cos-< 1) 3)) ((cos-> 6) 5)) ok Expression: (14 (2 1 1) (3 6 4)) Translation: ((cos-or ((cos-= 1) 1)) ((cos-> 6) 4)) ok Expression: (14 (3 3 0) (3 7 4)) Translation: ((cos-or ((cos-> 3) 0)) ((cos-> 7) 4)) ok Expression: (14 (4 1 2) (3 3 2)) Translation: ((cos-or ((cos-< 1) 2)) ((cos-> 3) 2)) ok Expression: (14 (3 5 2) (2 0 1)) Translation: ((cos-or ((cos-> 5) 2)) ((cos-= 0) 1)) ok Expression: (14 (4 3 6) (2 2 1)) Translation: ((cos-or ((cos-< 3) 6)) ((cos-= 2) 1)) ok Expression: (14 (2 5 5) (2 3 2)) Translation: ((cos-or ((cos-= 5) 5)) ((cos-= 3) 2)) ok Expression: (14 (4 4 7) (4 5 4)) Translation: ((cos-or ((cos-< 4) 7)) ((cos-< 5) 4)) ok Expression: (14 (2 3 3) (3 0 4)) Translation: ((cos-or ((cos-= 3) 3)) ((cos-> 0) 4)) ok Expression: (14 (2 5 0) (4 4 6)) Translation: ((cos-or ((cos-= 5) 0)) ((cos-< 4) 6)) ok Expression: (14 (4 4 3) (2 2 2)) Translation: ((cos-or ((cos-< 4) 3)) ((cos-= 2) 2)) ok Expression: (14 (4 4 0) (4 0 2)) Translation: ((cos-or ((cos-< 4) 0)) ((cos-< 0) 2)) ok Expression: (14 (4 5 3) (2 0 0)) Translation: ((cos-or ((cos-< 5) 3)) ((cos-= 0) 0)) ok Expression: (14 (2 5 4) (3 1 0)) Translation: ((cos-or ((cos-= 5) 4)) ((cos-> 1) 0)) ok Expression: (8 -1 14 (3 2 6) (2 3 1)) Translation: (cos-not ((cos-or ((cos-> 2) 6)) ((cos-= 3) 1))) ok Expression: (8 -1 14 (2 3 4) (4 6 4)) Translation: (cos-not ((cos-or ((cos-= 3) 4)) ((cos-< 6) 4))) ok Expression: (8 -1 14 (3 0 5) (3 6 6)) Translation: (cos-not ((cos-or ((cos-> 0) 5)) ((cos-> 6) 6))) ok Expression: (8 -1 14 (3 1 5) (2 4 3)) Translation: (cos-not ((cos-or ((cos-> 1) 5)) ((cos-= 4) 3))) ok Expression: (8 -1 14 (2 2 1) (3 3 4)) Translation: (cos-not ((cos-or ((cos-= 2) 1)) ((cos-> 3) 4))) ok Expression: (14 (2 4 4) (2 5 5)) Translation: ((cos-or ((cos-= 4) 4)) ((cos-= 5) 5)) ok Expression: (14 (4 6 0) (3 5 2)) Translation: ((cos-or ((cos-< 6) 0)) ((cos-> 5) 2)) ok Expression: (8 -1 14 (3 1 3) (4 5 0)) Translation: (cos-not ((cos-or ((cos-> 1) 3)) ((cos-< 5) 0))) ok Expression: (14 (4 6 4) (2 1 1)) Translation: ((cos-or ((cos-< 6) 4)) ((cos-= 1) 1)) ok Expression: (14 (3 2 6) (2 5 5)) Translation: ((cos-or ((cos-> 2) 6)) ((cos-= 5) 5)) ok Expression: (8 -1 14 (3 2 2) (3 1 2)) Translation: (cos-not ((cos-or ((cos-> 2) 2)) ((cos-> 1) 2))) ok Expression: (14 (3 4 5) (4 5 6)) Translation: ((cos-or ((cos-> 4) 5)) ((cos-< 5) 6)) ok Expression: (14 (2 3 3) (4 5 8)) Translation: ((cos-or ((cos-= 3) 3)) ((cos-< 5) 8)) ok Expression: (14 (4 3 1) (2 3 3)) Translation: ((cos-or ((cos-< 3) 1)) ((cos-= 3) 3)) ok Expression: (14 (4 1 0) (2 4 4)) Translation: ((cos-or ((cos-< 1) 0)) ((cos-= 4) 4)) ok ; MATH use equality for truth values Expression: (2 (2 0 0) (2 4 4)) Translation: ((cos-= ((cos-= 0) 0)) ((cos-= 4) 4)) ok Expression: (2 (2 2 2) (3 5 3)) Translation: ((cos-= ((cos-= 2) 2)) ((cos-> 5) 3)) ok Expression: (2 (2 5 5) (4 2 5)) Translation: ((cos-= ((cos-= 5) 5)) ((cos-< 2) 5)) ok Expression: (2 (3 5 2) (2 4 4)) Translation: ((cos-= ((cos-> 5) 2)) ((cos-= 4) 4)) ok Expression: (2 (4 2 3) (3 3 1)) Translation: ((cos-= ((cos-< 2) 3)) ((cos-> 3) 1)) ok Expression: (2 (3 0 0) (2 2 3)) Translation: ((cos-= ((cos-> 0) 0)) ((cos-= 2) 3)) ok Expression: (2 (4 5 3) (4 3 0)) Translation: ((cos-= ((cos-< 5) 3)) ((cos-< 3) 0)) ok Expression: (2 (2 3 0) (2 3 2)) Translation: ((cos-= ((cos-= 3) 0)) ((cos-= 3) 2)) ok Expression: (2 (2 2 1) (4 3 1)) Translation: ((cos-= ((cos-= 2) 1)) ((cos-< 3) 1)) ok Expression: (2 (3 1 3) (4 6 0)) Translation: ((cos-= ((cos-> 1) 3)) ((cos-< 6) 0)) ok Expression: (8 -1 2 (3 5 6) (3 4 2)) Translation: (cos-not ((cos-= ((cos-> 5) 6)) ((cos-> 4) 2))) ok Expression: (8 -1 2 (2 1 2) (4 1 3)) Translation: (cos-not ((cos-= ((cos-= 1) 2)) ((cos-< 1) 3))) ok Expression: (8 -1 2 (3 2 5) (3 5 4)) Translation: (cos-not ((cos-= ((cos-> 2) 5)) ((cos-> 5) 4))) ok Expression: (8 -1 2 (3 4 5) (4 4 6)) Translation: (cos-not ((cos-= ((cos-> 4) 5)) ((cos-< 4) 6))) ok Expression: (8 -1 2 (4 5 3) (4 1 3)) Translation: (cos-not ((cos-= ((cos-< 5) 3)) ((cos-< 1) 3))) ok Expression: (8 -1 2 (2 4 4) (3 2 4)) Translation: (cos-not ((cos-= ((cos-= 4) 4)) ((cos-> 2) 4))) ok Expression: (8 -1 2 (4 0 2) (3 0 4)) Translation: (cos-not ((cos-= ((cos-< 0) 2)) ((cos-> 0) 4))) ok Expression: (8 -1 2 (4 1 3) (4 5 1)) Translation: (cos-not ((cos-= ((cos-< 1) 3)) ((cos-< 5) 1))) ok Expression: (8 -1 2 (4 0 3) (2 2 3)) Translation: (cos-not ((cos-= ((cos-< 0) 3)) ((cos-= 2) 3))) ok Expression: (8 -1 2 (3 5 3) (2 2 5)) Translation: (cos-not ((cos-= ((cos-> 5) 3)) ((cos-= 2) 5))) ok Expression: (1 16) Translation: (cos-intro 16) ok Expression: (1 15) Translation: (cos-intro 15) ok Expression: (2 (16) (3 1 0)) Translation: ((cos-= cos-true) ((cos-> 1) 0)) ok Expression: (2 (16) (4 3 6)) Translation: ((cos-= cos-true) ((cos-< 3) 6)) ok Expression: (2 (16) (4 2 5)) Translation: ((cos-= cos-true) ((cos-< 2) 5)) ok Expression: (2 (16) (3 3 0)) Translation: ((cos-= cos-true) ((cos-> 3) 0)) ok Expression: (2 (16) (3 7 4)) Translation: ((cos-= cos-true) ((cos-> 7) 4)) ok Expression: (2 (2 1 1) (16)) Translation: ((cos-= ((cos-= 1) 1)) cos-true) ok Expression: (2 (4 3 4) (16)) Translation: ((cos-= ((cos-< 3) 4)) cos-true) ok Expression: (2 (3 6 5) (16)) Translation: ((cos-= ((cos-> 6) 5)) cos-true) ok Expression: (2 (4 4 7) (16)) Translation: ((cos-= ((cos-< 4) 7)) cos-true) ok Expression: (2 (4 5 8) (16)) Translation: ((cos-= ((cos-< 5) 8)) cos-true) ok Expression: (2 (15) (3 3 5)) Translation: ((cos-= cos-false) ((cos-> 3) 5)) ok Expression: (2 (15) (2 4 1)) Translation: ((cos-= cos-false) ((cos-= 4) 1)) ok Expression: (2 (15) (4 3 1)) Translation: ((cos-= cos-false) ((cos-< 3) 1)) ok Expression: (2 (15) (2 3 4)) Translation: ((cos-= cos-false) ((cos-= 3) 4)) ok Expression: (2 (15) (3 0 0)) Translation: ((cos-= cos-false) ((cos-> 0) 0)) ok Expression: (2 (4 1 0) (15)) Translation: ((cos-= ((cos-< 1) 0)) cos-false) ok Expression: (2 (2 3 2) (15)) Translation: ((cos-= ((cos-= 3) 2)) cos-false) ok Expression: (2 (3 1 4) (15)) Translation: ((cos-= ((cos-> 1) 4)) cos-false) ok Expression: (2 (2 2 1) (15)) Translation: ((cos-= ((cos-= 2) 1)) cos-false) ok Expression: (2 (2 2 5) (15)) Translation: ((cos-= ((cos-= 2) 5)) cos-false) ok Expression: (2 (16) (16)) Translation: ((cos-= cos-true) cos-true) ok Expression: (2 (15) (15)) Translation: ((cos-= cos-false) cos-false) ok Expression: (8 -1 2 (16) (15)) Translation: (cos-not ((cos-= cos-true) cos-false)) ok Expression: (8 -1 2 (15) (16)) Translation: (cos-not ((cos-= cos-false) cos-true)) ok ; MATH introduce addition Expression: (1 5) Translation: (cos-intro 5) ok Expression: (2 2 -1 5 1 1) Translation: ((cos-= 2) ((cos-+ 1) 1)) ok Expression: (2 3 -1 5 1 2) Translation: ((cos-= 3) ((cos-+ 1) 2)) ok Expression: (2 1 -1 5 1 0) Translation: ((cos-= 1) ((cos-+ 1) 0)) ok Expression: (2 4 -1 5 1 3) Translation: ((cos-= 4) ((cos-+ 1) 3)) ok Expression: (2 4 -1 5 4 0) Translation: ((cos-= 4) ((cos-+ 4) 0)) ok Expression: (2 2 -1 5 2 0) Translation: ((cos-= 2) ((cos-+ 2) 0)) ok Expression: (2 4 -1 5 0 4) Translation: ((cos-= 4) ((cos-+ 0) 4)) ok Expression: (2 3 -1 5 1 2) Translation: ((cos-= 3) ((cos-+ 1) 2)) ok Expression: (2 2 -1 5 0 2) Translation: ((cos-= 2) ((cos-+ 0) 2)) ok Expression: (2 1 -1 5 0 1) Translation: ((cos-= 1) ((cos-+ 0) 1)) ok ; MATH introduce subtraction Expression: (1 7) Translation: (cos-intro 7) ok Expression: (2 1 -1 7 1 0) Translation: ((cos-= 1) ((cos-- 1) 0)) ok Expression: (2 1 -1 7 4 3) Translation: ((cos-= 1) ((cos-- 4) 3)) ok Expression: (2 2 -1 7 4 2) Translation: ((cos-= 2) ((cos-- 4) 2)) ok Expression: (2 0 -1 7 4 4) Translation: ((cos-= 0) ((cos-- 4) 4)) ok Expression: (2 4 -1 7 5 1) Translation: ((cos-= 4) ((cos-- 5) 1)) ok Expression: (2 1 -1 7 2 1) Translation: ((cos-= 1) ((cos-- 2) 1)) ok Expression: (2 1 -1 7 3 2) Translation: ((cos-= 1) ((cos-- 3) 2)) ok Expression: (2 4 -1 7 8 4) Translation: ((cos-= 4) ((cos-- 8) 4)) ok Expression: (2 4 -1 7 7 3) Translation: ((cos-= 4) ((cos-- 7) 3)) ok Expression: (2 1 -1 7 3 2) Translation: ((cos-= 1) ((cos-- 3) 2)) ok ; MATH introduce multiplication Expression: (1 6) Translation: (cos-intro 6) ok Expression: (2 0 -1 6 0 0) Translation: ((cos-= 0) ((cos-* 0) 0)) ok Expression: (2 0 -1 6 0 1) Translation: ((cos-= 0) ((cos-* 0) 1)) ok Expression: (2 0 -1 6 0 2) Translation: ((cos-= 0) ((cos-* 0) 2)) ok Expression: (2 0 -1 6 0 3) Translation: ((cos-= 0) ((cos-* 0) 3)) ok Expression: (2 0 -1 6 1 0) Translation: ((cos-= 0) ((cos-* 1) 0)) ok Expression: (2 1 -1 6 1 1) Translation: ((cos-= 1) ((cos-* 1) 1)) ok Expression: (2 2 -1 6 1 2) Translation: ((cos-= 2) ((cos-* 1) 2)) ok Expression: (2 3 -1 6 1 3) Translation: ((cos-= 3) ((cos-* 1) 3)) ok Expression: (2 0 -1 6 2 0) Translation: ((cos-= 0) ((cos-* 2) 0)) ok Expression: (2 2 -1 6 2 1) Translation: ((cos-= 2) ((cos-* 2) 1)) ok Expression: (2 4 -1 6 2 2) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (2 6 -1 6 2 3) Translation: ((cos-= 6) ((cos-* 2) 3)) ok Expression: (2 0 -1 6 3 0) Translation: ((cos-= 0) ((cos-* 3) 0)) ok Expression: (2 3 -1 6 3 1) Translation: ((cos-= 3) ((cos-* 3) 1)) ok Expression: (2 6 -1 6 3 2) Translation: ((cos-= 6) ((cos-* 3) 2)) ok Expression: (2 9 -1 6 3 3) Translation: ((cos-= 9) ((cos-* 3) 3)) ok Expression: (2 4 -1 6 2 2) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (2 9 -1 6 3 3) Translation: ((cos-= 9) ((cos-* 3) 3)) ok Expression: (2 9 -1 6 3 3) Translation: ((cos-= 9) ((cos-* 3) 3)) ok Expression: (2 3 -1 6 1 3) Translation: ((cos-= 3) ((cos-* 1) 3)) ok Expression: (2 0 -1 6 1 0) Translation: ((cos-= 0) ((cos-* 1) 0)) ok Expression: (2 4 -1 6 2 2) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (2 0 -1 6 0 1) Translation: ((cos-= 0) ((cos-* 0) 1)) ok Expression: (2 0 -1 6 3 0) Translation: ((cos-= 0) ((cos-* 3) 0)) ok Expression: (2 2 -1 6 1 2) Translation: ((cos-= 2) ((cos-* 1) 2)) ok Expression: (2 0 -1 6 3 0) Translation: ((cos-= 0) ((cos-* 3) 0)) ok ; MATH introduce a simple form of binary notation ; After this lesson, in the higher-level version of the message, ; will expand decimal to stand for the binary notation given. ; It wouldn't be hard to accompany this lesson with a more ; formal definition once functions are introduced (below) ; so maybe the transition to binary shouldbe delayed? Expression: (2 0 0) Translation: ((cos-= 0) 0) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (2 5 5) Translation: ((cos-= 5) 5) ok Expression: (2 6 6) Translation: ((cos-= 6) 6) ok Expression: (2 7 7) Translation: ((cos-= 7) 7) ok Expression: (2 8 8) Translation: ((cos-= 8) 8) ok Expression: (2 9 9) Translation: ((cos-= 9) 9) ok Expression: (2 10 10) Translation: ((cos-= 10) 10) ok Expression: (2 11 11) Translation: ((cos-= 11) 11) ok Expression: (2 12 12) Translation: ((cos-= 12) 12) ok Expression: (2 13 13) Translation: ((cos-= 13) 13) ok Expression: (2 14 14) Translation: ((cos-= 14) 14) ok Expression: (2 15 15) Translation: ((cos-= 15) 15) ok Expression: (2 6 6) Translation: ((cos-= 6) 6) ok Expression: (2 7 7) Translation: ((cos-= 7) 7) ok Expression: (2 14 14) Translation: ((cos-= 14) 14) ok Expression: (2 0 0) Translation: ((cos-= 0) 0) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 12 12) Translation: ((cos-= 12) 12) ok Expression: (2 7 7) Translation: ((cos-= 7) 7) ok Expression: (2 15 15) Translation: ((cos-= 15) 15) ok Expression: (2 7 7) Translation: ((cos-= 7) 7) ok Expression: (2 8 8) Translation: ((cos-= 8) 8) ok Expression: (2 15 15) Translation: ((cos-= 15) 15) ok Expression: (2 6 6) Translation: ((cos-= 6) 6) ok Expression: (2 5 5) Translation: ((cos-= 5) 5) ok Expression: (2 8 8) Translation: ((cos-= 8) 8) ok Expression: (2 8 -1 5 8 0) Translation: ((cos-= 8) ((cos-+ 8) 0)) ok Expression: (2 11 -1 5 3 8) Translation: ((cos-= 11) ((cos-+ 3) 8)) ok Expression: (2 7 -1 5 7 0) Translation: ((cos-= 7) ((cos-+ 7) 0)) ok Expression: (2 19 -1 5 10 9) Translation: ((cos-= 19) ((cos-+ 10) 9)) ok Expression: (2 9 -1 5 1 8) Translation: ((cos-= 9) ((cos-+ 1) 8)) ok Expression: (2 22 -1 5 12 10) Translation: ((cos-= 22) ((cos-+ 12) 10)) ok Expression: (2 19 -1 5 11 8) Translation: ((cos-= 19) ((cos-+ 11) 8)) ok Expression: (2 12 -1 5 9 3) Translation: ((cos-= 12) ((cos-+ 9) 3)) ok Expression: (2 30 -1 6 5 6) Translation: ((cos-= 30) ((cos-* 5) 6)) ok Expression: (2 26 -1 6 13 2) Translation: ((cos-= 26) ((cos-* 13) 2)) ok Expression: (2 60 -1 6 6 10) Translation: ((cos-= 60) ((cos-* 6) 10)) ok Expression: (2 63 -1 6 7 9) Translation: ((cos-= 63) ((cos-* 7) 9)) ok Expression: (2 33 -1 6 3 11) Translation: ((cos-= 33) ((cos-* 3) 11)) ok Expression: (2 25 -1 6 5 5) Translation: ((cos-= 25) ((cos-* 5) 5)) ok Expression: (2 8 -1 6 4 2) Translation: ((cos-= 8) ((cos-* 4) 2)) ok Expression: (2 90 -1 6 6 15) Translation: ((cos-= 90) ((cos-* 6) 15)) ok ; MATH show local assignment Expression: (11 20 0 -1 2 (20) 0) Translation: ((lambda (cos-exists) ((cos-= cos-exists) 0)) 0) ok Expression: (11 20 1 -1 2 (20) 1) Translation: ((lambda (cos-exists) ((cos-= cos-exists) 1)) 1) ok Expression: (11 20 2 -1 2 (20) 2) Translation: ((lambda (cos-exists) ((cos-= cos-exists) 2)) 2) ok Expression: (11 21 0 -1 2 (21) 0) Translation: ((lambda (cos-cons) ((cos-= cos-cons) 0)) 0) ok Expression: (11 21 1 -1 2 (21) 1) Translation: ((lambda (cos-cons) ((cos-= cos-cons) 1)) 1) ok Expression: (11 21 2 -1 2 (21) 2) Translation: ((lambda (cos-cons) ((cos-= cos-cons) 2)) 2) ok Expression: (11 22 0 -1 2 (22) 0) Translation: ((lambda (cos-car) ((cos-= cos-car) 0)) 0) ok Expression: (11 22 1 -1 2 (22) 1) Translation: ((lambda (cos-car) ((cos-= cos-car) 1)) 1) ok Expression: (11 22 2 -1 2 (22) 2) Translation: ((lambda (cos-car) ((cos-= cos-car) 2)) 2) ok Expression: (2 0 (11 20 0 (20))) Translation: ((cos-= 0) ((lambda (cos-exists) cos-exists) 0)) ok Expression: (2 0 (11 20 0 -1 20)) Translation: ((cos-= 0) ((lambda (cos-exists) cos-exists) 0)) ok Expression: (2 0 -1 11 20 0 -1 20) Translation: ((cos-= 0) ((lambda (cos-exists) cos-exists) 0)) ok Expression: (2 20 -1 11 20 0 20) Translation: ((cos-= 20) ((lambda (cos-exists) 20) 0)) ok Expression: (2 5 -1 11 20 0 5) Translation: ((cos-= 5) ((lambda (cos-exists) 5) 0)) ok Expression: (2 5 -1 11 20 0 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-exists) ((lambda (cos-cdr) cos-cdr) 5)) 0)) ok Expression: (2 23 -1 11 20 0 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-exists) ((lambda (cos-cdr) 23) 5)) 0)) ok Expression: (2 1 (11 20 1 (20))) Translation: ((cos-= 1) ((lambda (cos-exists) cos-exists) 1)) ok Expression: (2 1 (11 20 1 -1 20)) Translation: ((cos-= 1) ((lambda (cos-exists) cos-exists) 1)) ok Expression: (2 1 -1 11 20 1 -1 20) Translation: ((cos-= 1) ((lambda (cos-exists) cos-exists) 1)) ok Expression: (2 20 -1 11 20 1 20) Translation: ((cos-= 20) ((lambda (cos-exists) 20) 1)) ok Expression: (2 5 -1 11 20 1 5) Translation: ((cos-= 5) ((lambda (cos-exists) 5) 1)) ok Expression: (2 5 -1 11 20 1 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-exists) ((lambda (cos-cdr) cos-cdr) 5)) 1)) ok Expression: (2 23 -1 11 20 1 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-exists) ((lambda (cos-cdr) 23) 5)) 1)) ok Expression: (2 2 (11 20 2 (20))) Translation: ((cos-= 2) ((lambda (cos-exists) cos-exists) 2)) ok Expression: (2 2 (11 20 2 -1 20)) Translation: ((cos-= 2) ((lambda (cos-exists) cos-exists) 2)) ok Expression: (2 2 -1 11 20 2 -1 20) Translation: ((cos-= 2) ((lambda (cos-exists) cos-exists) 2)) ok Expression: (2 20 -1 11 20 2 20) Translation: ((cos-= 20) ((lambda (cos-exists) 20) 2)) ok Expression: (2 5 -1 11 20 2 5) Translation: ((cos-= 5) ((lambda (cos-exists) 5) 2)) ok Expression: (2 5 -1 11 20 2 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-exists) ((lambda (cos-cdr) cos-cdr) 5)) 2)) ok Expression: (2 23 -1 11 20 2 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-exists) ((lambda (cos-cdr) 23) 5)) 2)) ok Expression: (2 0 (11 21 0 (21))) Translation: ((cos-= 0) ((lambda (cos-cons) cos-cons) 0)) ok Expression: (2 0 (11 21 0 -1 21)) Translation: ((cos-= 0) ((lambda (cos-cons) cos-cons) 0)) ok Expression: (2 0 -1 11 21 0 -1 21) Translation: ((cos-= 0) ((lambda (cos-cons) cos-cons) 0)) ok Expression: (2 21 -1 11 21 0 21) Translation: ((cos-= 21) ((lambda (cos-cons) 21) 0)) ok Expression: (2 5 -1 11 21 0 5) Translation: ((cos-= 5) ((lambda (cos-cons) 5) 0)) ok Expression: (2 5 -1 11 21 0 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-cons) ((lambda (cos-cdr) cos-cdr) 5)) 0)) ok Expression: (2 23 -1 11 21 0 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-cons) ((lambda (cos-cdr) 23) 5)) 0)) ok Expression: (2 1 (11 21 1 (21))) Translation: ((cos-= 1) ((lambda (cos-cons) cos-cons) 1)) ok Expression: (2 1 (11 21 1 -1 21)) Translation: ((cos-= 1) ((lambda (cos-cons) cos-cons) 1)) ok Expression: (2 1 -1 11 21 1 -1 21) Translation: ((cos-= 1) ((lambda (cos-cons) cos-cons) 1)) ok Expression: (2 21 -1 11 21 1 21) Translation: ((cos-= 21) ((lambda (cos-cons) 21) 1)) ok Expression: (2 5 -1 11 21 1 5) Translation: ((cos-= 5) ((lambda (cos-cons) 5) 1)) ok Expression: (2 5 -1 11 21 1 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-cons) ((lambda (cos-cdr) cos-cdr) 5)) 1)) ok Expression: (2 23 -1 11 21 1 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-cons) ((lambda (cos-cdr) 23) 5)) 1)) ok Expression: (2 2 (11 21 2 (21))) Translation: ((cos-= 2) ((lambda (cos-cons) cos-cons) 2)) ok Expression: (2 2 (11 21 2 -1 21)) Translation: ((cos-= 2) ((lambda (cos-cons) cos-cons) 2)) ok Expression: (2 2 -1 11 21 2 -1 21) Translation: ((cos-= 2) ((lambda (cos-cons) cos-cons) 2)) ok Expression: (2 21 -1 11 21 2 21) Translation: ((cos-= 21) ((lambda (cos-cons) 21) 2)) ok Expression: (2 5 -1 11 21 2 5) Translation: ((cos-= 5) ((lambda (cos-cons) 5) 2)) ok Expression: (2 5 -1 11 21 2 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-cons) ((lambda (cos-cdr) cos-cdr) 5)) 2)) ok Expression: (2 23 -1 11 21 2 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-cons) ((lambda (cos-cdr) 23) 5)) 2)) ok Expression: (2 0 (11 22 0 (22))) Translation: ((cos-= 0) ((lambda (cos-car) cos-car) 0)) ok Expression: (2 0 (11 22 0 -1 22)) Translation: ((cos-= 0) ((lambda (cos-car) cos-car) 0)) ok Expression: (2 0 -1 11 22 0 -1 22) Translation: ((cos-= 0) ((lambda (cos-car) cos-car) 0)) ok Expression: (2 22 -1 11 22 0 22) Translation: ((cos-= 22) ((lambda (cos-car) 22) 0)) ok Expression: (2 5 -1 11 22 0 5) Translation: ((cos-= 5) ((lambda (cos-car) 5) 0)) ok Expression: (2 5 -1 11 22 0 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-car) ((lambda (cos-cdr) cos-cdr) 5)) 0)) ok Expression: (2 23 -1 11 22 0 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-car) ((lambda (cos-cdr) 23) 5)) 0)) ok Expression: (2 1 (11 22 1 (22))) Translation: ((cos-= 1) ((lambda (cos-car) cos-car) 1)) ok Expression: (2 1 (11 22 1 -1 22)) Translation: ((cos-= 1) ((lambda (cos-car) cos-car) 1)) ok Expression: (2 1 -1 11 22 1 -1 22) Translation: ((cos-= 1) ((lambda (cos-car) cos-car) 1)) ok Expression: (2 22 -1 11 22 1 22) Translation: ((cos-= 22) ((lambda (cos-car) 22) 1)) ok Expression: (2 5 -1 11 22 1 5) Translation: ((cos-= 5) ((lambda (cos-car) 5) 1)) ok Expression: (2 5 -1 11 22 1 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-car) ((lambda (cos-cdr) cos-cdr) 5)) 1)) ok Expression: (2 23 -1 11 22 1 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-car) ((lambda (cos-cdr) 23) 5)) 1)) ok Expression: (2 2 (11 22 2 (22))) Translation: ((cos-= 2) ((lambda (cos-car) cos-car) 2)) ok Expression: (2 2 (11 22 2 -1 22)) Translation: ((cos-= 2) ((lambda (cos-car) cos-car) 2)) ok Expression: (2 2 -1 11 22 2 -1 22) Translation: ((cos-= 2) ((lambda (cos-car) cos-car) 2)) ok Expression: (2 22 -1 11 22 2 22) Translation: ((cos-= 22) ((lambda (cos-car) 22) 2)) ok Expression: (2 5 -1 11 22 2 5) Translation: ((cos-= 5) ((lambda (cos-car) 5) 2)) ok Expression: (2 5 -1 11 22 2 -1 11 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-car) ((lambda (cos-cdr) cos-cdr) 5)) 2)) ok Expression: (2 23 -1 11 22 2 -1 11 23 5 23) Translation: ((cos-= 23) ((lambda (cos-car) ((lambda (cos-cdr) 23) 5)) 2)) ok ; Now for functions. Expression: (11 33 (0 28 5) -1 2 5 (33 2)) Translation: ((lambda (cos-!) ((cos-= 5) (cos-! 2))) (lambda (cos-set!) 5)) ok Expression: (11 26 (0 24 5) -1 2 5 (26 3)) Translation: ((lambda (cos-lambda) ((cos-= 5) (cos-lambda 3))) (lambda (cos-number?) 5)) ok Expression: (11 20 (0 21 6) -1 2 6 (20 2)) Translation: ((lambda (cos-exists) ((cos-= 6) (cos-exists 2))) (lambda (cos-cons) 6)) ok Expression: (11 32 (0 31 6) -1 2 6 (32 3)) Translation: ((lambda (cos-undefined) ((cos-= 6) (cos-undefined 3))) (lambda (cos-natural-set) 6)) ok Expression: (11 23 (0 21 (21)) -1 2 2 (23 2)) Translation: ((lambda (cos-cdr) ((cos-= 2) (cos-cdr 2))) (lambda (cos-cons) cos-cons)) ok Expression: (11 28 (0 35 (35)) -1 2 3 (28 3)) Translation: ((lambda (cos-set!) ((cos-= 3) (cos-set! 3))) (lambda (cos-primer) cos-primer)) ok Expression: (11 21 (0 37 (37)) -1 2 2 (21 2)) Translation: ((lambda (cos-cons) ((cos-= 2) (cos-cons 2))) (lambda (cos-37) cos-37)) ok Expression: (11 32 (0 27 (27)) -1 2 3 (32 3)) Translation: ((lambda (cos-undefined) ((cos-= 3) (cos-undefined 3))) (lambda (cos-make-cell) cos-make-cell)) ok Expression: (11 28 (0 37 -1 5 (37) 1) -1 2 3 (28 2)) Translation: ((lambda (cos-set!) ((cos-= 3) (cos-set! 2))) (lambda (cos-37) ((cos-+ cos-37) 1))) ok Expression: (11 35 (0 23 -1 5 (23) 1) -1 2 4 (35 3)) Translation: ((lambda (cos-primer) ((cos-= 4) (cos-primer 3))) (lambda (cos-cdr) ((cos-+ cos-cdr) 1))) ok Expression: (11 31 (0 25 -1 5 (25) 1) -1 2 3 (31 2)) Translation: ((lambda (cos-natural-set) ((cos-= 3) (cos-natural-set 2))) (lambda (cos-translate) ((cos-+ cos-translate) 1))) ok Expression: (11 31 (0 21 -1 5 (21) 1) -1 2 4 (31 3)) Translation: ((lambda (cos-natural-set) ((cos-= 4) (cos-natural-set 3))) (lambda (cos-cons) ((cos-+ cos-cons) 1))) ok Expression: (11 36 (0 37 -1 5 (37) 8) -1 2 (36 15) 23) Translation: ((lambda (cos-36) ((cos-= (cos-36 15)) 23)) (lambda (cos-37) ((cos-+ cos-37) 8))) ok Expression: (2 ((0 37 -1 5 (37) 8) 15) 23) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 8)) 15)) 23) ok Expression: (11 36 (0 37 -1 5 (37) 4) -1 2 (36 15) 19) Translation: ((lambda (cos-36) ((cos-= (cos-36 15)) 19)) (lambda (cos-37) ((cos-+ cos-37) 4))) ok Expression: (2 ((0 37 -1 5 (37) 4) 15) 19) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 4)) 15)) 19) ok Expression: (11 36 (0 37 -1 5 (37) 2) -1 2 (36 2) 4) Translation: ((lambda (cos-36) ((cos-= (cos-36 2)) 4)) (lambda (cos-37) ((cos-+ cos-37) 2))) ok Expression: (2 ((0 37 -1 5 (37) 2) 2) 4) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 2)) 2)) 4) ok Expression: (11 36 (0 37 -1 5 (37) 15) -1 2 (36 5) 20) Translation: ((lambda (cos-36) ((cos-= (cos-36 5)) 20)) (lambda (cos-37) ((cos-+ cos-37) 15))) ok Expression: (2 ((0 37 -1 5 (37) 15) 5) 20) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 15)) 5)) 20) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 (38 15 10) 151) Translation: ((lambda (cos-38) ((cos-= ((cos-38 15) 10)) 151)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 ((38 15) 10) 151) Translation: ((lambda (cos-38) ((cos-= ((cos-38 15) 10)) 151)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 15 10) 151) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 15) 10)) 151) ok Expression: (2 (((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 15) 10) 151) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 15) 10)) 151) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 (38 5 12) 61) Translation: ((lambda (cos-38) ((cos-= ((cos-38 5) 12)) 61)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 ((38 5) 12) 61) Translation: ((lambda (cos-38) ((cos-= ((cos-38 5) 12)) 61)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 5 12) 61) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 5) 12)) 61) ok Expression: (2 (((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 5) 12) 61) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 5) 12)) 61) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 (38 9 3) 28) Translation: ((lambda (cos-38) ((cos-= ((cos-38 9) 3)) 28)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 ((38 9) 3) 28) Translation: ((lambda (cos-38) ((cos-= ((cos-38 9) 3)) 28)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 9 3) 28) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 9) 3)) 28) ok Expression: (2 (((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 9) 3) 28) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 9) 3)) 28) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 (38 12 12) 145) Translation: ((lambda (cos-38) ((cos-= ((cos-38 12) 12)) 145)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (11 38 (0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) -1 2 ((38 12) 12) 145) Translation: ((lambda (cos-38) ((cos-= ((cos-38 12) 12)) 145)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 12 12) 145) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 12) 12)) 145) ok Expression: (2 (((0 37 -1 0 36 -1 5 1 -1 6 (37) (36)) 12) 12) 145) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 12) 12)) 145) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 14 10 24) Translation: ((lambda (cos-39) (((cos-39 14) 10) 24)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 5 11 16) Translation: ((lambda (cos-39) (((cos-39 5) 11) 16)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 1 3 4) Translation: ((lambda (cos-39) (((cos-39 1) 3) 4)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 7 9 16) Translation: ((lambda (cos-39) (((cos-39 7) 9) 16)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 15 7 22) Translation: ((lambda (cos-39) (((cos-39 15) 7) 22)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 12 7 19) Translation: ((lambda (cos-39) (((cos-39 12) 7) 19)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 8 4 12) Translation: ((lambda (cos-39) (((cos-39 8) 4) 12)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (11 39 (0 37 -1 0 36 -1 0 38 -1 2 (38) -1 5 (37) (36)) -1 39 12 4 16) Translation: ((lambda (cos-39) (((cos-39 12) 4) 16)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok ; MATH demonstrate existence of memory Expression: (17 40 42) Translation: (begin (define cos-40 42) 1) ok Expression: (2 42 (40)) Translation: ((cos-= 42) cos-40) ok ; now introduce a function Expression: (11 41 (0 37 -1 6 (37) (37)) -1 2 25 (41 5)) Translation: ((lambda (cos-41) ((cos-= 25) (cos-41 5))) (lambda (cos-37) ((cos-* cos-37) cos-37))) ok Expression: (11 41 (0 37 -1 6 (37) (37)) -1 2 0 (41 0)) Translation: ((lambda (cos-41) ((cos-= 0) (cos-41 0))) (lambda (cos-37) ((cos-* cos-37) cos-37))) ok Expression: (11 41 (0 37 -1 6 (37) (37)) -1 2 25 (41 5)) Translation: ((lambda (cos-41) ((cos-= 25) (cos-41 5))) (lambda (cos-37) ((cos-* cos-37) cos-37))) ok Expression: (11 41 (0 37 -1 6 (37) (37)) -1 2 9 (41 3)) Translation: ((lambda (cos-41) ((cos-= 9) (cos-41 3))) (lambda (cos-37) ((cos-* cos-37) cos-37))) ok ; show that functions can be remembered across statements Expression: (17 41 -1 0 37 -1 6 (37) (37)) Translation: (begin (define cos-41 (lambda (cos-37) ((cos-* cos-37) cos-37))) 1) ok Expression: (2 (41 5) 25) Translation: ((cos-= (cos-41 5)) 25) ok Expression: (2 (41 4) 16) Translation: ((cos-= (cos-41 4)) 16) ok Expression: (2 (41 9) 81) Translation: ((cos-= (cos-41 9)) 81) ok Expression: (2 (41 3) 9) Translation: ((cos-= (cos-41 3)) 9) ok Expression: (17 42 -1 0 37 -1 5 (37) 1) Translation: (begin (define cos-42 (lambda (cos-37) ((cos-+ cos-37) 1))) 1) ok Expression: (2 (42 4) 5) Translation: ((cos-= (cos-42 4)) 5) ok Expression: (2 (42 9) 10) Translation: ((cos-= (cos-42 9)) 10) ok Expression: (2 (42 4) 5) Translation: ((cos-= (cos-42 4)) 5) ok Expression: (2 (42 3) 4) Translation: ((cos-= (cos-42 3)) 4) ok ; MATH show mechanisms for branching Expression: (1 18) Translation: (cos-intro 18) ok Expression: (2 (18 (3 4 1) 29 22) 29) Translation: ((cos-= (if (tish ((cos-> 4) 1)) 29 22)) 29) ok Expression: (2 (18 (3 5 4) 24 28) 24) Translation: ((cos-= (if (tish ((cos-> 5) 4)) 24 28)) 24) ok Expression: (2 (18 (3 4 4) 20 20) 20) Translation: ((cos-= (if (tish ((cos-> 4) 4)) 20 20)) 20) ok Expression: (2 (18 (3 6 3) 28 28) 28) Translation: ((cos-= (if (tish ((cos-> 6) 3)) 28 28)) 28) ok Expression: (2 (18 (4 5 6) 22 23) 22) Translation: ((cos-= (if (tish ((cos-< 5) 6)) 22 23)) 22) ok Expression: (2 (18 (2 3 3) 25 20) 25) Translation: ((cos-= (if (tish ((cos-= 3) 3)) 25 20)) 25) ok Expression: (2 (18 (4 1 2) 27 21) 27) Translation: ((cos-= (if (tish ((cos-< 1) 2)) 27 21)) 27) ok Expression: (2 (18 (2 3 3) 25 25) 25) Translation: ((cos-= (if (tish ((cos-= 3) 3)) 25 25)) 25) ok Expression: (17 43 -1 0 37 -1 0 36 -1 18 (3 (37) (36)) (37) (36)) Translation: (begin (define cos-43 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-> cos-37) cos-36)) cos-37 cos-36)))) 1) ok Expression: (17 44 -1 0 37 -1 0 36 -1 18 (4 (37) (36)) (37) (36)) Translation: (begin (define cos-44 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-< cos-37) cos-36)) cos-37 cos-36)))) 1) ok Expression: (2 0 (43 0 0)) Translation: ((cos-= 0) ((cos-43 0) 0)) ok Expression: (2 0 (44 0 0)) Translation: ((cos-= 0) ((cos-44 0) 0)) ok Expression: (2 1 (43 0 1)) Translation: ((cos-= 1) ((cos-43 0) 1)) ok Expression: (2 0 (44 0 1)) Translation: ((cos-= 0) ((cos-44 0) 1)) ok Expression: (2 2 (43 0 2)) Translation: ((cos-= 2) ((cos-43 0) 2)) ok Expression: (2 0 (44 0 2)) Translation: ((cos-= 0) ((cos-44 0) 2)) ok Expression: (2 1 (43 1 0)) Translation: ((cos-= 1) ((cos-43 1) 0)) ok Expression: (2 0 (44 1 0)) Translation: ((cos-= 0) ((cos-44 1) 0)) ok Expression: (2 1 (43 1 1)) Translation: ((cos-= 1) ((cos-43 1) 1)) ok Expression: (2 1 (44 1 1)) Translation: ((cos-= 1) ((cos-44 1) 1)) ok Expression: (2 2 (43 1 2)) Translation: ((cos-= 2) ((cos-43 1) 2)) ok Expression: (2 1 (44 1 2)) Translation: ((cos-= 1) ((cos-44 1) 2)) ok Expression: (2 2 (43 2 0)) Translation: ((cos-= 2) ((cos-43 2) 0)) ok Expression: (2 0 (44 2 0)) Translation: ((cos-= 0) ((cos-44 2) 0)) ok Expression: (2 2 (43 2 1)) Translation: ((cos-= 2) ((cos-43 2) 1)) ok Expression: (2 1 (44 2 1)) Translation: ((cos-= 1) ((cos-44 2) 1)) ok Expression: (2 2 (43 2 2)) Translation: ((cos-= 2) ((cos-43 2) 2)) ok Expression: (2 2 (44 2 2)) Translation: ((cos-= 2) ((cos-44 2) 2)) ok Expression: (17 45 -1 0 46 -1 18 (9 (46) 1) 1 -1 6 (46) -1 45 -1 7 (46) 1) Translation: (begin (define cos-45 (lambda (cos-46) (if (tish ((cos-<= cos-46) 1)) 1 ((cos-* cos-46) (cos-45 ((cos-- cos-46) 1)))))) 1) ok Expression: (2 1 -1 45 1) Translation: ((cos-= 1) (cos-45 1)) ok Expression: (2 2 -1 45 2) Translation: ((cos-= 2) (cos-45 2)) ok Expression: (2 6 -1 45 3) Translation: ((cos-= 6) (cos-45 3)) ok Expression: (2 24 -1 45 4) Translation: ((cos-= 24) (cos-45 4)) ok Expression: (2 120 -1 45 5) Translation: ((cos-= 120) (cos-45 5)) ok ; MATH illustrate pairs Expression: (11 37 (21 3 4) -1 2 (22 -1 37) 3) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 3)) ((cos-cons 3) 4)) ok Expression: (11 37 (21 3 4) -1 2 (23 -1 37) 4) Translation: ((lambda (cos-37) ((cos-= (cos-cdr cos-37)) 4)) ((cos-cons 3) 4)) ok Expression: (11 37 (21 9 1) -1 2 (22 -1 37) 9) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 9)) ((cos-cons 9) 1)) ok Expression: (11 37 (21 9 1) -1 2 (23 -1 37) 1) Translation: ((lambda (cos-37) ((cos-= (cos-cdr cos-37)) 1)) ((cos-cons 9) 1)) ok Expression: (11 37 (21 7 8) -1 2 (22 -1 37) 7) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 7)) ((cos-cons 7) 8)) ok Expression: (11 37 (21 7 8) -1 2 (23 -1 37) 8) Translation: ((lambda (cos-37) ((cos-= (cos-cdr cos-37)) 8)) ((cos-cons 7) 8)) ok Expression: (11 37 (21 16 -1 21 6 13) -1 2 (22 -1 37) 16) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 16)) ((cos-cons 16) ((cos-cons 6) 13))) ok Expression: (11 37 (21 16 -1 21 6 13) -1 2 (22 -1 23 -1 37) 6) Translation: ((lambda (cos-37) ((cos-= (cos-car (cos-cdr cos-37))) 6)) ((cos-cons 16) ((cos-cons 6) 13))) ok Expression: (11 37 (21 16 -1 21 6 13) -1 2 (23 -1 23 -1 37) 13) Translation: ((lambda (cos-37) ((cos-= (cos-cdr (cos-cdr cos-37))) 13)) ((cos-cons 16) ((cos-cons 6) 13))) ok Expression: (11 37 (21 14 -1 21 11 5) -1 2 (22 -1 37) 14) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 14)) ((cos-cons 14) ((cos-cons 11) 5))) ok Expression: (11 37 (21 14 -1 21 11 5) -1 2 (22 -1 23 -1 37) 11) Translation: ((lambda (cos-37) ((cos-= (cos-car (cos-cdr cos-37))) 11)) ((cos-cons 14) ((cos-cons 11) 5))) ok Expression: (11 37 (21 14 -1 21 11 5) -1 2 (23 -1 23 -1 37) 5) Translation: ((lambda (cos-37) ((cos-= (cos-cdr (cos-cdr cos-37))) 5)) ((cos-cons 14) ((cos-cons 11) 5))) ok Expression: (11 37 (21 2 -1 21 9 7) -1 2 (22 -1 37) 2) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 2)) ((cos-cons 2) ((cos-cons 9) 7))) ok Expression: (11 37 (21 2 -1 21 9 7) -1 2 (22 -1 23 -1 37) 9) Translation: ((lambda (cos-37) ((cos-= (cos-car (cos-cdr cos-37))) 9)) ((cos-cons 2) ((cos-cons 9) 7))) ok Expression: (11 37 (21 2 -1 21 9 7) -1 2 (23 -1 23 -1 37) 7) Translation: ((lambda (cos-37) ((cos-= (cos-cdr (cos-cdr cos-37))) 7)) ((cos-cons 2) ((cos-cons 9) 7))) ok Expression: (11 37 (21 1 -1 21 4 -1 21 3 -1 21 0 2) -1 13 (2 1 -1 22 -1 37) -1 13 (2 4 -1 22 -1 23 -1 37) -1 13 (2 3 -1 22 -1 23 -1 23 -1 37) -1 13 (2 0 -1 22 -1 23 -1 23 -1 23 -1 37) (2 2 -1 23 -1 23 -1 23 -1 23 -1 37)) Translation: ((lambda (cos-37) ((cos-and ((cos-= 1) (cos-car cos-37))) ((cos-and ((cos-= 4) (cos-car (cos-cdr cos-37)))) ((cos-and ((cos-= 3) (cos-car (cos-cdr (cos-cdr cos-37))))) ((cos-and ((cos-= 0) (cos-car (cos-cdr (cos-cdr (cos-cdr cos-37)))))) ((cos-= 2) (cos-cdr (cos-cdr (cos-cdr (cos-cdr cos-37)))))))))) ((cos-cons 1) ((cos-cons 4) ((cos-cons 3) ((cos-cons 0) 2))))) ok ; MATH introduce mutable objects, and side-effects Expression: (1 27) Translation: (cos-intro 27) ok Expression: (1 28) Translation: (cos-intro 28) ok Expression: (1 29) Translation: (cos-intro 29) ok Expression: (17 47 -1 27 0) Translation: (begin (define cos-47 (cos-make-cell 0)) 1) ok Expression: (28 (47) 15) Translation: ((cos-set! cos-47) 15) ok Expression: (2 (29 -1 47) 15) Translation: ((cos-= (cos-get! cos-47)) 15) ok Expression: (28 (47) 5) Translation: ((cos-set! cos-47) 5) ok Expression: (28 (47) 7) Translation: ((cos-set! cos-47) 7) ok Expression: (2 (29 -1 47) 7) Translation: ((cos-= (cos-get! cos-47)) 7) ok Expression: (17 48 -1 27 11) Translation: (begin (define cos-48 (cos-make-cell 11)) 1) ok Expression: (2 (29 -1 48) 11) Translation: ((cos-= (cos-get! cos-48)) 11) ok Expression: (28 (48) 22) Translation: ((cos-set! cos-48) 22) ok Expression: (2 (29 -1 48) 22) Translation: ((cos-= (cos-get! cos-48)) 22) ok Expression: (2 (29 -1 47) 7) Translation: ((cos-= (cos-get! cos-47)) 7) ok Expression: (2 (5 (29 -1 47) (29 -1 48)) 29) Translation: ((cos-= ((cos-+ (cos-get! cos-47)) (cos-get! cos-48))) 29) ok Expression: (18 (2 (29 -1 47) 7) (28 (47) 88) (28 (47) 99)) Translation: (if (tish ((cos-= (cos-get! cos-47)) 7)) ((cos-set! cos-47) 88) ((cos-set! cos-47) 99)) ok Expression: (2 (29 -1 47) 88) Translation: ((cos-= (cos-get! cos-47)) 88) ok Expression: (18 (2 (29 -1 47) 7) (28 (47) 88) (28 (47) 99)) Translation: (if (tish ((cos-= (cos-get! cos-47)) 7)) ((cos-set! cos-47) 88) ((cos-set! cos-47) 99)) ok Expression: (2 (29 -1 47) 99) Translation: ((cos-= (cos-get! cos-47)) 99) ok ; MATH illustrate lists and some list operators ; to make list describable as a function, need to preceed lists ; ... with an argument count ; Lists keep an explicit record of their length ; this is to avoid the need for using a special 'nil' symbol ; ... which cannot itself be placed in the list. ; ; missing - intro to cons, car, cdr ; used to be pure-cons pure-car pure-cdr but changed for better interface to scheme ; also should introduce number? check function ; Expression: (17 49 -1 0 46 -1 0 50 -1 18 (3 (46) 1) (0 37 -1 49 (7 (46) 1) (0 36 -1 0 38 -1 50 (5 1 (36)) (21 (37) (38)))) (0 37 -1 50 1 (37))) Translation: (begin (define cos-49 (lambda (cos-46) (lambda (cos-50) (if (tish ((cos-> cos-46) 1)) (lambda (cos-37) ((cos-49 ((cos-- cos-46) 1)) (lambda (cos-36) (lambda (cos-38) ((cos-50 ((cos-+ 1) cos-36)) ((cos-cons cos-37) cos-38)))))) (lambda (cos-37) ((cos-50 1) cos-37)))))) 1) ok Expression: (17 51 -1 0 46 -1 18 (2 (46) 0) (21 0 0) (49 (46) (0 36 -1 0 38 -1 21 (36) (38)))) Translation: (begin (define cos-51 (lambda (cos-46) (if (tish ((cos-= cos-46) 0)) ((cos-cons 0) 0) ((cos-49 cos-46) (lambda (cos-36) (lambda (cos-38) ((cos-cons cos-36) cos-38))))))) 1) ok Expression: (17 52 -1 0 53 -1 18 (2 (22 -1 53) 0) (32) (18 (2 (22 -1 53) 1) (23 -1 53) (22 -1 23 -1 53))) Translation: (begin (define cos-52 (lambda (cos-53) (if (tish ((cos-= (cos-car cos-53)) 0)) cos-undefined (if (tish ((cos-= (cos-car cos-53)) 1)) (cos-cdr cos-53) (cos-car (cos-cdr cos-53)))))) 1) ok Expression: (17 54 -1 0 53 -1 18 (2 (22 -1 53) 0) (32) (18 (2 (22 -1 53) 1) (21 0 0) (21 (7 (22 -1 53) 1) (23 -1 23 -1 53)))) Translation: (begin (define cos-54 (lambda (cos-53) (if (tish ((cos-= (cos-car cos-53)) 0)) cos-undefined (if (tish ((cos-= (cos-car cos-53)) 1)) ((cos-cons 0) 0) ((cos-cons ((cos-- (cos-car cos-53)) 1)) (cos-cdr (cos-cdr cos-53))))))) 1) ok Expression: (17 55 -1 0 53 -1 22 -1 53) Translation: (begin (define cos-55 (lambda (cos-53) (cos-car cos-53))) 1) ok Expression: (17 56 -1 0 53 -1 0 46 -1 18 (2 (56 -1 53) 0) (32) (18 (2 (46) 0) (52 -1 53) (56 (54 -1 53) (7 (46) 1)))) Translation: (begin (define cos-56 (lambda (cos-53) (lambda (cos-46) (if (tish ((cos-= (cos-56 cos-53)) 0)) cos-undefined (if (tish ((cos-= cos-46) 0)) (cos-52 cos-53) ((cos-56 (cos-54 cos-53)) ((cos-- cos-46) 1))))))) 1) ok Expression: (17 57 -1 0 37 -1 0 53 -1 18 (2 (55 -1 53) 0) (21 1 (37)) (21 (5 (55 -1 53) 1) (21 (37) (23 -1 53)))) Translation: (begin (define cos-57 (lambda (cos-37) (lambda (cos-53) (if (tish ((cos-= (cos-55 cos-53)) 0)) ((cos-cons 1) cos-37) ((cos-cons ((cos-+ (cos-55 cos-53)) 1)) ((cos-cons cos-37) (cos-cdr cos-53))))))) 1) ok Expression: (17 58 -1 0 37 -1 0 36 -1 18 (2 (24 (37)) (24 (36))) (18 (24 (37)) (2 (37) (36)) (59 (37) (36))) (15)) Translation: (begin (define cos-58 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-= (cos-number? cos-37)) (cos-number? cos-36))) (if (tish (cos-number? cos-37)) ((cos-= cos-37) cos-36) ((cos-59 cos-37) cos-36)) cos-false)))) 1) ok Expression: (17 59 -1 0 37 -1 0 36 -1 18 (2 (55 -1 37) (55 -1 36)) (18 (3 (55 -1 37) 0) (13 (58 (52 -1 37) (52 -1 36)) (59 (54 -1 37) (54 -1 36))) (16)) (15)) Translation: (begin (define cos-59 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-= (cos-55 cos-37)) (cos-55 cos-36))) (if (tish ((cos-> (cos-55 cos-37)) 0)) ((cos-and ((cos-58 (cos-52 cos-37)) (cos-52 cos-36))) ((cos-59 (cos-54 cos-37)) (cos-54 cos-36))) cos-true) cos-false)))) 1) ok Expression: (2 (55 -1 (51 5) 8 5 9 2 3) 5) Translation: ((cos-= (cos-55 ((((((cos-51 5) 8) 5) 9) 2) 3))) 5) ok Expression: (2 (55 -1 (51 0)) 0) Translation: ((cos-= (cos-55 (cos-51 0))) 0) ok Expression: (2 (55 -1 (51 4) 6 5 8 4) 4) Translation: ((cos-= (cos-55 (((((cos-51 4) 6) 5) 8) 4))) 4) ok Expression: (2 (55 -1 (51 8) 8 3 1 6 0 2 7 4) 8) Translation: ((cos-= (cos-55 (((((((((cos-51 8) 8) 3) 1) 6) 0) 2) 7) 4))) 8) ok Expression: (2 (55 -1 (51 1) 3) 1) Translation: ((cos-= (cos-55 ((cos-51 1) 3))) 1) ok Expression: (2 (52 -1 (51 8) 2 4 7 5 14 14 16 1) 2) Translation: ((cos-= (cos-52 (((((((((cos-51 8) 2) 4) 7) 5) 14) 14) 16) 1))) 2) ok Expression: (59 (54 -1 (51 8) 2 4 7 5 14 14 16 1) ((51 7) 4 7 5 14 14 16 1)) Translation: ((cos-59 (cos-54 (((((((((cos-51 8) 2) 4) 7) 5) 14) 14) 16) 1))) ((((((((cos-51 7) 4) 7) 5) 14) 14) 16) 1)) ok Expression: (2 (52 -1 (51 9) 6 15 18 17 2 12 12 16 8) 6) Translation: ((cos-= (cos-52 ((((((((((cos-51 9) 6) 15) 18) 17) 2) 12) 12) 16) 8))) 6) ok Expression: (59 (54 -1 (51 9) 6 15 18 17 2 12 12 16 8) ((51 8) 15 18 17 2 12 12 16 8)) Translation: ((cos-59 (cos-54 ((((((((((cos-51 9) 6) 15) 18) 17) 2) 12) 12) 16) 8))) (((((((((cos-51 8) 15) 18) 17) 2) 12) 12) 16) 8)) ok Expression: (2 (52 -1 (51 2) 16 13) 16) Translation: ((cos-= (cos-52 (((cos-51 2) 16) 13))) 16) ok Expression: (59 (54 -1 (51 2) 16 13) ((51 1) 13)) Translation: ((cos-59 (cos-54 (((cos-51 2) 16) 13))) ((cos-51 1) 13)) ok Expression: (2 (52 -1 (51 8) 18 9 10 15 2 12 15 17) 18) Translation: ((cos-= (cos-52 (((((((((cos-51 8) 18) 9) 10) 15) 2) 12) 15) 17))) 18) ok Expression: (59 (54 -1 (51 8) 18 9 10 15 2 12 15 17) ((51 7) 9 10 15 2 12 15 17)) Translation: ((cos-59 (cos-54 (((((((((cos-51 8) 18) 9) 10) 15) 2) 12) 15) 17))) ((((((((cos-51 7) 9) 10) 15) 2) 12) 15) 17)) ok Expression: (2 (52 -1 (51 2) 1 15) 1) Translation: ((cos-= (cos-52 (((cos-51 2) 1) 15))) 1) ok Expression: (59 (54 -1 (51 2) 1 15) ((51 1) 15)) Translation: ((cos-59 (cos-54 (((cos-51 2) 1) 15))) ((cos-51 1) 15)) ok Expression: (2 (52 -1 (51 10) 1 14 7 3 5 11 1 17 13 15) 1) Translation: ((cos-= (cos-52 (((((((((((cos-51 10) 1) 14) 7) 3) 5) 11) 1) 17) 13) 15))) 1) ok Expression: (59 (54 -1 (51 10) 1 14 7 3 5 11 1 17 13 15) ((51 9) 14 7 3 5 11 1 17 13 15)) Translation: ((cos-59 (cos-54 (((((((((((cos-51 10) 1) 14) 7) 3) 5) 11) 1) 17) 13) 15))) ((((((((((cos-51 9) 14) 7) 3) 5) 11) 1) 17) 13) 15)) ok Expression: (2 (52 -1 (51 4) 10 19 16 4) 10) Translation: ((cos-= (cos-52 (((((cos-51 4) 10) 19) 16) 4))) 10) ok Expression: (59 (54 -1 (51 4) 10 19 16 4) ((51 3) 19 16 4)) Translation: ((cos-59 (cos-54 (((((cos-51 4) 10) 19) 16) 4))) ((((cos-51 3) 19) 16) 4)) ok Expression: (2 (52 -1 (51 1) 15) 15) Translation: ((cos-= (cos-52 ((cos-51 1) 15))) 15) ok Expression: (59 (54 -1 (51 1) 15) ((51 0))) Translation: ((cos-59 (cos-54 ((cos-51 1) 15))) (cos-51 0)) ok Expression: (2 (52 -1 (51 8) 11 5 11 8 5 8 3 14) 11) Translation: ((cos-= (cos-52 (((((((((cos-51 8) 11) 5) 11) 8) 5) 8) 3) 14))) 11) ok Expression: (59 (54 -1 (51 8) 11 5 11 8 5 8 3 14) ((51 7) 5 11 8 5 8 3 14)) Translation: ((cos-59 (cos-54 (((((((((cos-51 8) 11) 5) 11) 8) 5) 8) 3) 14))) ((((((((cos-51 7) 5) 11) 8) 5) 8) 3) 14)) ok Expression: (2 (52 -1 (51 5) 6 2 13 5 1) 6) Translation: ((cos-= (cos-52 ((((((cos-51 5) 6) 2) 13) 5) 1))) 6) ok Expression: (59 (54 -1 (51 5) 6 2 13 5 1) ((51 4) 2 13 5 1)) Translation: ((cos-59 (cos-54 ((((((cos-51 5) 6) 2) 13) 5) 1))) (((((cos-51 4) 2) 13) 5) 1)) ok Expression: (2 (56 ((51 1) 18) 0) 18) Translation: ((cos-= ((cos-56 ((cos-51 1) 18)) 0)) 18) ok Expression: (2 (56 ((51 3) 3 15 16) 2) 16) Translation: ((cos-= ((cos-56 ((((cos-51 3) 3) 15) 16)) 2)) 16) ok Expression: (2 (56 ((51 5) 12 0 0 0 8) 0) 12) Translation: ((cos-= ((cos-56 ((((((cos-51 5) 12) 0) 0) 0) 8)) 0)) 12) ok Expression: (2 (56 ((51 1) 3) 0) 3) Translation: ((cos-= ((cos-56 ((cos-51 1) 3)) 0)) 3) ok Expression: (2 (56 ((51 2) 16 16) 0) 16) Translation: ((cos-= ((cos-56 (((cos-51 2) 16) 16)) 0)) 16) ok Expression: (2 (56 ((51 1) 0) 0) 0) Translation: ((cos-= ((cos-56 ((cos-51 1) 0)) 0)) 0) ok Expression: (2 (56 ((51 2) 9 0) 1) 0) Translation: ((cos-= ((cos-56 (((cos-51 2) 9) 0)) 1)) 0) ok Expression: (2 (56 ((51 7) 11 5 7 19 9 18 2) 2) 7) Translation: ((cos-= ((cos-56 ((((((((cos-51 7) 11) 5) 7) 19) 9) 18) 2)) 2)) 7) ok Expression: (2 (56 ((51 3) 18 9 12) 1) 9) Translation: ((cos-= ((cos-56 ((((cos-51 3) 18) 9) 12)) 1)) 9) ok Expression: (2 (56 ((51 1) 0) 0) 0) Translation: ((cos-= ((cos-56 ((cos-51 1) 0)) 0)) 0) ok Expression: (59 ((51 0)) ((51 0))) Translation: ((cos-59 (cos-51 0)) (cos-51 0)) ok Expression: (59 ((51 1) 10) ((51 1) 10)) Translation: ((cos-59 ((cos-51 1) 10)) ((cos-51 1) 10)) ok Expression: (59 ((51 2) 12 8) ((51 2) 12 8)) Translation: ((cos-59 (((cos-51 2) 12) 8)) (((cos-51 2) 12) 8)) ok Expression: (59 ((51 3) 5 5 0) ((51 3) 5 5 0)) Translation: ((cos-59 ((((cos-51 3) 5) 5) 0)) ((((cos-51 3) 5) 5) 0)) ok Expression: (59 ((51 4) 4 10 12 11) ((51 4) 4 10 12 11)) Translation: ((cos-59 (((((cos-51 4) 4) 10) 12) 11)) (((((cos-51 4) 4) 10) 12) 11)) ok ; this next batch of examples are a bit misleading, should streamline Expression: (8 -1 59 ((51 0)) ((51 1) 4)) Translation: (cos-not ((cos-59 (cos-51 0)) ((cos-51 1) 4))) ok Expression: (8 -1 59 ((51 0)) ((51 1) 4)) Translation: (cos-not ((cos-59 (cos-51 0)) ((cos-51 1) 4))) ok Expression: (8 -1 59 ((51 1) 5) ((51 2) 8 5)) Translation: (cos-not ((cos-59 ((cos-51 1) 5)) (((cos-51 2) 8) 5))) ok Expression: (8 -1 59 ((51 1) 5) ((51 2) 5 3)) Translation: (cos-not ((cos-59 ((cos-51 1) 5)) (((cos-51 2) 5) 3))) ok Expression: (8 -1 59 ((51 2) 11 15) ((51 3) 4 11 15)) Translation: (cos-not ((cos-59 (((cos-51 2) 11) 15)) ((((cos-51 3) 4) 11) 15))) ok Expression: (8 -1 59 ((51 2) 11 15) ((51 3) 11 15 3)) Translation: (cos-not ((cos-59 (((cos-51 2) 11) 15)) ((((cos-51 3) 11) 15) 3))) ok Expression: (8 -1 59 ((51 3) 11 19 16) ((51 4) 4 11 19 16)) Translation: (cos-not ((cos-59 ((((cos-51 3) 11) 19) 16)) (((((cos-51 4) 4) 11) 19) 16))) ok Expression: (8 -1 59 ((51 3) 11 19 16) ((51 4) 11 19 16 1)) Translation: (cos-not ((cos-59 ((((cos-51 3) 11) 19) 16)) (((((cos-51 4) 11) 19) 16) 1))) ok Expression: (8 -1 59 ((51 4) 14 18 5 11) ((51 5) 6 14 18 5 11)) Translation: (cos-not ((cos-59 (((((cos-51 4) 14) 18) 5) 11)) ((((((cos-51 5) 6) 14) 18) 5) 11))) ok Expression: (8 -1 59 ((51 4) 14 18 5 11) ((51 5) 14 18 5 11 9)) Translation: (cos-not ((cos-59 (((((cos-51 4) 14) 18) 5) 11)) ((((((cos-51 5) 14) 18) 5) 11) 9))) ok ; some helpful functions Expression: (59 (57 6 ((51 0))) ((51 1) 6)) Translation: ((cos-59 ((cos-57 6) (cos-51 0))) ((cos-51 1) 6)) ok Expression: (59 (57 6 ((51 1) 11)) ((51 2) 6 11)) Translation: ((cos-59 ((cos-57 6) ((cos-51 1) 11))) (((cos-51 2) 6) 11)) ok Expression: (59 (57 17 ((51 2) 11 4)) ((51 3) 17 11 4)) Translation: ((cos-59 ((cos-57 17) (((cos-51 2) 11) 4))) ((((cos-51 3) 17) 11) 4)) ok Expression: (59 (57 18 ((51 3) 6 17 4)) ((51 4) 18 6 17 4)) Translation: ((cos-59 ((cos-57 18) ((((cos-51 3) 6) 17) 4))) (((((cos-51 4) 18) 6) 17) 4)) ok Expression: (59 (57 3 ((51 4) 8 11 1 10)) ((51 5) 3 8 11 1 10)) Translation: ((cos-59 ((cos-57 3) (((((cos-51 4) 8) 11) 1) 10))) ((((((cos-51 5) 3) 8) 11) 1) 10)) ok Expression: (59 (57 7 ((51 5) 8 3 2 8 0)) ((51 6) 7 8 3 2 8 0)) Translation: ((cos-59 ((cos-57 7) ((((((cos-51 5) 8) 3) 2) 8) 0))) (((((((cos-51 6) 7) 8) 3) 2) 8) 0)) ok Expression: (59 (57 17 ((51 6) 14 15 14 19 9 3)) ((51 7) 17 14 15 14 19 9 3)) Translation: ((cos-59 ((cos-57 17) (((((((cos-51 6) 14) 15) 14) 19) 9) 3))) ((((((((cos-51 7) 17) 14) 15) 14) 19) 9) 3)) ok Expression: (59 (57 17 ((51 7) 10 19 8 2 7 4 1)) ((51 8) 17 10 19 8 2 7 4 1)) Translation: ((cos-59 ((cos-57 17) ((((((((cos-51 7) 10) 19) 8) 2) 7) 4) 1))) (((((((((cos-51 8) 17) 10) 19) 8) 2) 7) 4) 1)) ok Expression: (17 60 -1 0 37 -1 0 36 -1 (51 2) (37) (36)) Translation: (begin (define cos-60 (lambda (cos-37) (lambda (cos-36) (((cos-51 2) cos-37) cos-36)))) 1) ok Expression: (17 61 -1 0 53 -1 52 -1 53) Translation: (begin (define cos-61 (lambda (cos-53) (cos-52 cos-53))) 1) ok Expression: (17 62 -1 0 53 -1 52 -1 54 -1 53) Translation: (begin (define cos-62 (lambda (cos-53) (cos-52 (cos-54 cos-53)))) 1) ok Expression: (59 (60 2 8) ((51 2) 2 8)) Translation: ((cos-59 ((cos-60 2) 8)) (((cos-51 2) 2) 8)) ok Expression: (2 (61 -1 60 2 8) 2) Translation: ((cos-= (cos-61 ((cos-60 2) 8))) 2) ok Expression: (2 (62 -1 60 2 8) 8) Translation: ((cos-= (cos-62 ((cos-60 2) 8))) 8) ok Expression: (59 (60 6 0) ((51 2) 6 0)) Translation: ((cos-59 ((cos-60 6) 0)) (((cos-51 2) 6) 0)) ok Expression: (2 (61 -1 60 6 0) 6) Translation: ((cos-= (cos-61 ((cos-60 6) 0))) 6) ok Expression: (2 (62 -1 60 6 0) 0) Translation: ((cos-= (cos-62 ((cos-60 6) 0))) 0) ok Expression: (59 (60 9 3) ((51 2) 9 3)) Translation: ((cos-59 ((cos-60 9) 3)) (((cos-51 2) 9) 3)) ok Expression: (2 (61 -1 60 9 3) 9) Translation: ((cos-= (cos-61 ((cos-60 9) 3))) 9) ok Expression: (2 (62 -1 60 9 3) 3) Translation: ((cos-= (cos-62 ((cos-60 9) 3))) 3) ok Expression: (17 63 -1 0 53 -1 0 64 -1 0 65 -1 0 66 -1 18 (2 (55 -1 53) 0) (65 0) (18 (58 (52 -1 53) (64)) (66) (63 (54 -1 53) (64) (65) (5 (66) 1)))) Translation: (begin (define cos-63 (lambda (cos-53) (lambda (cos-64) (lambda (cos-65) (lambda (cos-66) (if (tish ((cos-= (cos-55 cos-53)) 0)) (cos-65 0) (if (tish ((cos-58 (cos-52 cos-53)) cos-64)) cos-66 ((((cos-63 (cos-54 cos-53)) cos-64) cos-65) ((cos-+ cos-66) 1))))))))) 1) ok Expression: (17 67 -1 0 53 -1 0 64 -1 0 65 -1 63 (53) (64) (65) 0) Translation: (begin (define cos-67 (lambda (cos-53) (lambda (cos-64) (lambda (cos-65) ((((cos-63 cos-53) cos-64) cos-65) 0))))) 1) ok Expression: (17 68 -1 0 37 100) Translation: (begin (define cos-68 (lambda (cos-37) 100)) 1) ok Expression: (2 (67 ((51 1) 13) 13 (68)) 0) Translation: ((cos-= (((cos-67 ((cos-51 1) 13)) 13) cos-68)) 0) ok Expression: (2 (67 ((51 9) 15 17 16 12 3 15 2 4 13) 15 (68)) 0) Translation: ((cos-= (((cos-67 ((((((((((cos-51 9) 15) 17) 16) 12) 3) 15) 2) 4) 13)) 15) cos-68)) 0) ok Expression: (2 (67 ((51 9) 19 0 14 18 9 11 12 5 19) 11 (68)) 5) Translation: ((cos-= (((cos-67 ((((((((((cos-51 9) 19) 0) 14) 18) 9) 11) 12) 5) 19)) 11) cos-68)) 5) ok Expression: (2 (67 ((51 2) 15 1) 15 (68)) 0) Translation: ((cos-= (((cos-67 (((cos-51 2) 15) 1)) 15) cos-68)) 0) ok Expression: (2 (67 ((51 4) 0 7 19 1) 7 (68)) 1) Translation: ((cos-= (((cos-67 (((((cos-51 4) 0) 7) 19) 1)) 7) cos-68)) 1) ok Expression: (2 (67 ((51 6) 9 9 1 10 5 19) 10 (68)) 3) Translation: ((cos-= (((cos-67 (((((((cos-51 6) 9) 9) 1) 10) 5) 19)) 10) cos-68)) 3) ok Expression: (2 (67 ((51 2) 17 1) 1 (68)) 1) Translation: ((cos-= (((cos-67 (((cos-51 2) 17) 1)) 1) cos-68)) 1) ok Expression: (2 (67 ((51 8) 0 3 16 13 19 13 18 11) 13 (68)) 3) Translation: ((cos-= (((cos-67 (((((((((cos-51 8) 0) 3) 16) 13) 19) 13) 18) 11)) 13) cos-68)) 3) ok Expression: (2 (67 ((51 4) 15 6 2 1) 1 (68)) 3) Translation: ((cos-= (((cos-67 (((((cos-51 4) 15) 6) 2) 1)) 1) cos-68)) 3) ok Expression: (2 (67 ((51 1) 3) 3 (68)) 0) Translation: ((cos-= (((cos-67 ((cos-51 1) 3)) 3) cos-68)) 0) ok Expression: (2 (67 ((51 4) 4 6 0 10) 1 (68)) 100) Translation: ((cos-= (((cos-67 (((((cos-51 4) 4) 6) 0) 10)) 1) cos-68)) 100) ok Expression: (2 (67 ((51 6) 5 7 8 16 1 0) 13 (68)) 100) Translation: ((cos-= (((cos-67 (((((((cos-51 6) 5) 7) 8) 16) 1) 0)) 13) cos-68)) 100) ok Expression: (2 (67 ((51 8) 13 17 16 0 7 10 11 3) 15 (68)) 100) Translation: ((cos-= (((cos-67 (((((((((cos-51 8) 13) 17) 16) 0) 7) 10) 11) 3)) 15) cos-68)) 100) ok ; HACK describe changes to the implicit interpreter to allow new special forms Expression: (17 69 -1 25) Translation: (begin (define cos-69 cos-translate) 1) ok Expression: (17 25 -1 0 37 -1 18 (2 (37) 10) 15 (69 -1 37)) Translation: (begin (define cos-translate (lambda (cos-37) (if (tish ((cos-= cos-37) 10)) 15 (cos-69 cos-37)))) 1) ok Expression: (2 10 15) Translation: ((cos-= 15) 15) ok Expression: (2 (5 10 15) 30) Translation: ((cos-= ((cos-+ 15) 15)) 30) ok Expression: (17 25 -1 69) Translation: (begin (define cos-translate cos-69) 1) ok Expression: (8 -1 2 10 15) Translation: (cos-not ((cos-= 10) 15)) ok Expression: (2 (5 10 15) 25) Translation: ((cos-= ((cos-+ 10) 15)) 25) ok ; now can create a special form for lists Expression: (17 25 -1 0 37 -1 18 (24 -1 37) (69 -1 37) (18 (2 (52 -1 37) 70) (25 -1 57 ((51 2) 51 (55 -1 54 -1 37)) (54 -1 37)) (69 -1 37))) Translation: (begin (define cos-translate (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-69 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 70)) (cos-translate ((cos-57 (((cos-51 2) 51) (cos-55 (cos-54 cos-37)))) (cos-54 cos-37))) (cos-69 cos-37))))) 1) ok Expression: (2 (70 1 2 3) ((51 3) 1 2 3)) Translation: ((cos-= ((((cos-51 3) 1) 2) 3)) ((((cos-51 3) 1) 2) 3)) ok ; now to desugar let expressions Expression: (17 71 -1 25) Translation: (begin (define cos-71 cos-translate) 1) ok Expression: (17 72 -1 0 37 -1 0 73 -1 18 (2 (55 -1 37) 0) (25 -1 73) (72 (54 -1 37) (70 (70 0 (52 -1 52 -1 37) (73)) (52 -1 54 -1 52 -1 37)))) Translation: (begin (define cos-72 (lambda (cos-37) (lambda (cos-73) (if (tish ((cos-= (cos-55 cos-37)) 0)) (cos-translate cos-73) ((cos-72 (cos-54 cos-37)) (((cos-51 2) ((((cos-51 3) 0) (cos-52 (cos-52 cos-37))) cos-73)) (cos-52 (cos-54 (cos-52 cos-37))))))))) 1) ok Expression: (17 25 -1 0 37 -1 18 (24 -1 37) (71 -1 37) (18 (2 (52 -1 37) 74) (72 (52 -1 54 -1 37) (52 -1 54 -1 54 -1 37)) (71 -1 37))) Translation: (begin (define cos-translate (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-71 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 74)) ((cos-72 (cos-52 (cos-54 cos-37))) (cos-52 (cos-54 (cos-54 cos-37)))) (cos-71 cos-37))))) 1) ok Expression: (74 ((37 20)) (2 (37) 20)) Translation: ((lambda (cos-37) ((cos-= cos-37) 20)) 20) ok Expression: (74 ((37 50) (36 20)) (2 (7 (37) (36)) 30)) Translation: ((lambda (cos-36) ((lambda (cos-37) ((cos-= ((cos-- cos-37) cos-36)) 30)) 50)) 20) ok ; the is-list function is now on dubious ground ; this stuff will be replaced with typing ASAP Expression: (17 75 -1 0 37 -1 8 -1 24 -1 37) Translation: (begin (define cos-75 (lambda (cos-37) (cos-not (cos-number? cos-37)))) 1) ok Expression: (75 -1 (51 2) 1 3) Translation: (cos-75 (((cos-51 2) 1) 3)) ok Expression: (75 -1 (51 0)) Translation: (cos-75 (cos-51 0)) ok Expression: (8 -1 75 23) Translation: (cos-not (cos-75 23)) ok Expression: (75 -1 (51 3) ((51 2) 2 3) 1 (0 37 -1 5 (37) 10)) Translation: (cos-75 ((((cos-51 3) (((cos-51 2) 2) 3)) 1) (lambda (cos-37) ((cos-+ cos-37) 10)))) ok ; MATH introduce sugar for let ; if would be good to introduce desugarings more rigorously, but for now... ; ... just a very vague sketch Expression: (1 74) Translation: (cos-intro 74) ok Expression: (2 (74 ((37 10)) (5 (37) 5)) ((0 37 -1 5 (37) 5) 10)) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 5)) 10)) ((lambda (cos-37) ((cos-+ cos-37) 5)) 10)) ok Expression: (2 (74 ((37 10) (36 5)) (5 (37) (36))) (((0 37 -1 0 36 -1 5 (37) (36)) 10) 5)) Translation: ((cos-= ((lambda (cos-36) ((lambda (cos-37) ((cos-+ cos-37) cos-36)) 10)) 5)) (((lambda (cos-37) (lambda (cos-36) ((cos-+ cos-37) cos-36))) 10) 5)) ok ; MATH build up functions of several variables Expression: (2 ((0 37 -1 0 36 -1 7 (37) (36)) 7 4) 3) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 7) 4)) 3) ok Expression: (2 ((0 37 -1 0 36 -1 7 (37) (36)) 12 8) 4) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 12) 8)) 4) ok Expression: (2 ((0 37 -1 0 36 -1 7 (37) (36)) 12 8) 4) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 12) 8)) 4) ok Expression: (2 ((0 37 -1 0 36 -1 7 (37) (36)) 8 2) 6) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 8) 2)) 6) ok Expression: (2 ((0 37 -1 0 36 -1 7 (37) (36)) 14 5) 9) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 14) 5)) 9) ok Expression: (17 76 -1 0 37 -1 56 (37) (7 (55 -1 37) 1)) Translation: (begin (define cos-76 (lambda (cos-37) ((cos-56 cos-37) ((cos-- (cos-55 cos-37)) 1)))) 1) ok Expression: (17 77 -1 0 37 -1 18 (3 (55 -1 37) 1) (57 (52 -1 37) (77 -1 54 -1 37)) (70)) Translation: (begin (define cos-77 (lambda (cos-37) (if (tish ((cos-> (cos-55 cos-37)) 1)) ((cos-57 (cos-52 cos-37)) (cos-77 (cos-54 cos-37))) (cos-51 0)))) 1) ok ; test last and except-last Expression: (2 15 (76 -1 70 4 5 15)) Translation: ((cos-= 15) (cos-76 ((((cos-51 3) 4) 5) 15))) ok Expression: (59 (70 4 5) (77 -1 70 4 5 15)) Translation: ((cos-59 (((cos-51 2) 4) 5)) (cos-77 ((((cos-51 3) 4) 5) 15))) ok Expression: (1 26) Translation: (cos-intro 26) ok Expression: (17 78 -1 25) Translation: (begin (define cos-78 cos-translate) 1) ok Expression: (17 25 -1 74 ((79 (78))) (0 37 -1 18 (24 -1 37) (79 -1 37) (18 (2 (52 -1 37) 26) (74 ((80 (52 -1 54 -1 37)) (73 (52 -1 54 -1 54 -1 37))) (18 (3 (55 -1 80) 0) (25 (70 26 (77 -1 80) (70 0 (76 -1 80) (73)))) (25 (73)))) (79 -1 37)))) Translation: (begin (define cos-translate ((lambda (cos-79) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-79 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 26)) ((lambda (cos-73) ((lambda (cos-80) (if (tish ((cos-> (cos-55 cos-80)) 0)) (cos-translate ((((cos-51 3) 26) (cos-77 cos-80)) ((((cos-51 3) 0) (cos-76 cos-80)) cos-73))) (cos-translate cos-73))) (cos-52 (cos-54 cos-37)))) (cos-52 (cos-54 (cos-54 cos-37)))) (cos-79 cos-37))))) cos-78)) 1) ok ; test lambda Expression: (2 ((26 (37 36) (7 (37) (36))) 3 2) 1) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 3) 2)) 1) ok Expression: (2 ((26 (37 36) (7 (37) (36))) 6 6) 0) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 6) 6)) 0) ok Expression: (2 ((26 (37 36) (7 (37) (36))) 14 8) 6) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 14) 8)) 6) ok Expression: (2 ((26 (37 36) (7 (37) (36))) 10 8) 2) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 10) 8)) 2) ok Expression: (2 ((26 (37 36) (7 (37) (36))) 11 5) 6) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 11) 5)) 6) ok Expression: (17 81 -1 26 (37 36) (18 (59 (36) (70)) (37) (81 ((37) (52 -1 36)) (54 -1 36)))) Translation: (begin (define cos-81 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-59 cos-36) (cos-51 0))) cos-37 ((cos-81 (cos-37 (cos-52 cos-36))) (cos-54 cos-36)))))) 1) ok Expression: (2 (81 (26 (37 36) (7 (37) (36))) (70 14 9)) 5) Translation: ((cos-= ((cos-81 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-51 2) 14) 9))) 5) ok Expression: (2 (81 (26 (37 36) (7 (37) (36))) (70 3 3)) 0) Translation: ((cos-= ((cos-81 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-51 2) 3) 3))) 0) ok Expression: (2 (81 (26 (37 36) (7 (37) (36))) (70 7 1)) 6) Translation: ((cos-= ((cos-81 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-51 2) 7) 1))) 6) ok Expression: (2 (81 (26 (37 36) (7 (37) (36))) (70 9 4)) 5) Translation: ((cos-= ((cos-81 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-51 2) 9) 4))) 5) ok Expression: (2 (81 (26 (37 36) (7 (37) (36))) (70 5 5)) 0) Translation: ((cos-= ((cos-81 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-51 2) 5) 5))) 0) ok ; MATH show map function for applying a function across the elements of a list Expression: (17 82 -1 26 (83 53) (18 (3 (55 -1 53) 0) (57 (83 (52 -1 53)) (82 (83) (54 -1 53))) (70))) Translation: (begin (define cos-82 (lambda (cos-83) (lambda (cos-53) (if (tish ((cos-> (cos-55 cos-53)) 0)) ((cos-57 (cos-83 (cos-52 cos-53))) ((cos-82 cos-83) (cos-54 cos-53))) (cos-51 0))))) 1) ok Expression: (2 (82 (0 37 -1 6 (37) 2) (70 12 4 13)) (70 24 8 26)) Translation: ((cos-= ((cos-82 (lambda (cos-37) ((cos-* cos-37) 2))) ((((cos-51 3) 12) 4) 13))) ((((cos-51 3) 24) 8) 26)) ok Expression: (2 (82 (0 37 -1 6 (37) 2) (70 7 15 19 14)) (70 14 30 38 28)) Translation: ((cos-= ((cos-82 (lambda (cos-37) ((cos-* cos-37) 2))) (((((cos-51 4) 7) 15) 19) 14))) (((((cos-51 4) 14) 30) 38) 28)) ok Expression: (2 (82 (0 37 -1 6 (37) 2) (70 2 4 17 6 8)) (70 4 8 34 12 16)) Translation: ((cos-= ((cos-82 (lambda (cos-37) ((cos-* cos-37) 2))) ((((((cos-51 5) 2) 4) 17) 6) 8))) ((((((cos-51 5) 4) 8) 34) 12) 16)) ok Expression: (2 (82 (0 37 -1 6 (37) 2) (70 15 18 17 10 16 4)) (70 30 36 34 20 32 8)) Translation: ((cos-= ((cos-82 (lambda (cos-37) ((cos-* cos-37) 2))) (((((((cos-51 6) 15) 18) 17) 10) 16) 4))) (((((((cos-51 6) 30) 36) 34) 20) 32) 8)) ok Expression: (2 (82 (0 37 42) (70 1 19 5)) (70 42 42 42)) Translation: ((cos-= ((cos-82 (lambda (cos-37) 42)) ((((cos-51 3) 1) 19) 5))) ((((cos-51 3) 42) 42) 42)) ok Expression: (2 (82 (0 37 42) (70 8 9 10 3)) (70 42 42 42 42)) Translation: ((cos-= ((cos-82 (lambda (cos-37) 42)) (((((cos-51 4) 8) 9) 10) 3))) (((((cos-51 4) 42) 42) 42) 42)) ok Expression: (2 (82 (0 37 42) (70 6 12 11 13 8)) (70 42 42 42 42 42)) Translation: ((cos-= ((cos-82 (lambda (cos-37) 42)) ((((((cos-51 5) 6) 12) 11) 13) 8))) ((((((cos-51 5) 42) 42) 42) 42) 42)) ok Expression: (2 (82 (0 37 42) (70 1 7 10 0 18 9)) (70 42 42 42 42 42 42)) Translation: ((cos-= ((cos-82 (lambda (cos-37) 42)) (((((((cos-51 6) 1) 7) 10) 0) 18) 9))) (((((((cos-51 6) 42) 42) 42) 42) 42) 42)) ok Expression: (17 84 -1 26 (83 53) (18 (10 (55 -1 53) 2) (83 (52 -1 53) (84 (83) (54 -1 53))) (18 (2 (55 -1 53) 1) (52 -1 53) (32)))) Translation: (begin (define cos-84 (lambda (cos-83) (lambda (cos-53) (if (tish ((cos->= (cos-55 cos-53)) 2)) ((cos-83 (cos-52 cos-53)) ((cos-84 cos-83) (cos-54 cos-53))) (if (tish ((cos-= (cos-55 cos-53)) 1)) (cos-52 cos-53) cos-undefined))))) 1) ok Expression: (2 (84 (5) (70 13 9 14)) 36) Translation: ((cos-= ((cos-84 cos-+) ((((cos-51 3) 13) 9) 14))) 36) ok Expression: (2 (84 (5) (70 14 8 6 19)) 47) Translation: ((cos-= ((cos-84 cos-+) (((((cos-51 4) 14) 8) 6) 19))) 47) ok Expression: (2 (84 (5) (70 17 10 4 16 15)) 62) Translation: ((cos-= ((cos-84 cos-+) ((((((cos-51 5) 17) 10) 4) 16) 15))) 62) ok Expression: (2 (84 (5) (70 18 15 4 3 8 10)) 58) Translation: ((cos-= ((cos-84 cos-+) (((((((cos-51 6) 18) 15) 4) 3) 8) 10))) 58) ok ; NOTE end of part 1, start of part 2 ; The following parts of the message are experimental, and not ; carefully integrated with the main body Expression: (1 85) Translation: (cos-intro 85) ok ; MATH show an example of recursive evaluation ; skipping over a lot of definitions and desugarings Expression: (17 86 -1 0 87 -1 0 37 -1 18 (3 (37) 0) (6 (37) -1 87 (87) (7 (37) 1)) 1) Translation: (begin (define cos-86 (lambda (cos-87) (lambda (cos-37) (if (tish ((cos-> cos-37) 0)) ((cos-* cos-37) ((cos-87 cos-87) ((cos-- cos-37) 1))) 1)))) 1) ok Expression: (17 45 -1 0 37 -1 18 (3 (37) 0) (6 (37) -1 45 -1 7 (37) 1) 1) Translation: (begin (define cos-45 (lambda (cos-37) (if (tish ((cos-> cos-37) 0)) ((cos-* cos-37) (cos-45 ((cos-- cos-37) 1))) 1))) 1) ok Expression: (2 (86 (86) 0) 1) Translation: ((cos-= ((cos-86 cos-86) 0)) 1) ok Expression: (2 (86 (86) 1) 1) Translation: ((cos-= ((cos-86 cos-86) 1)) 1) ok Expression: (2 (86 (86) 2) 2) Translation: ((cos-= ((cos-86 cos-86) 2)) 2) ok Expression: (2 (86 (86) 3) 6) Translation: ((cos-= ((cos-86 cos-86) 3)) 6) ok Expression: (2 (86 (86) 4) 24) Translation: ((cos-= ((cos-86 cos-86) 4)) 24) ok Expression: (2 (86 (86) 5) 120) Translation: ((cos-= ((cos-86 cos-86) 5)) 120) ok Expression: (2 (45 0) 1) Translation: ((cos-= (cos-45 0)) 1) ok Expression: (2 (45 1) 1) Translation: ((cos-= (cos-45 1)) 1) ok Expression: (2 (45 2) 2) Translation: ((cos-= (cos-45 2)) 2) ok Expression: (2 (45 3) 6) Translation: ((cos-= (cos-45 3)) 6) ok Expression: (2 (45 4) 24) Translation: ((cos-= (cos-45 4)) 24) ok Expression: (2 (45 5) 120) Translation: ((cos-= (cos-45 5)) 120) ok ; MATH some pure lambda calculus definitions - optional ; these definitions are not quite what we want ; since thinking of everything as a function requires headscratching ; it would be better to use these as a parallel means of evaluation ; ... for expressions Expression: (17 88 -1 0 37 -1 0 36 -1 0 38 -1 37 (36) (38)) Translation: (begin (define cos-88 (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-37 cos-36) cos-38))))) 1) ok Expression: (17 89 -1 0 36 -1 0 38 -1 36) Translation: (begin (define cos-89 (lambda (cos-36) (lambda (cos-38) cos-36))) 1) ok Expression: (17 90 -1 0 36 -1 0 38 -1 38) Translation: (begin (define cos-90 (lambda (cos-36) (lambda (cos-38) cos-38))) 1) ok Expression: (17 91 -1 0 37 -1 0 36 -1 0 38 -1 88 (38) (37) (36)) Translation: (begin (define cos-91 (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) (((cos-88 cos-38) cos-37) cos-36))))) 1) ok Expression: (17 92 -1 0 37 -1 37 (89)) Translation: (begin (define cos-92 (lambda (cos-37) (cos-37 cos-89))) 1) ok Expression: (17 93 -1 0 37 -1 37 (90)) Translation: (begin (define cos-93 (lambda (cos-37) (cos-37 cos-90))) 1) ok Expression: (17 94 -1 0 87 -1 0 37 -1 37) Translation: (begin (define cos-94 (lambda (cos-87) (lambda (cos-37) cos-37))) 1) ok Expression: (17 95 -1 0 87 -1 0 37 -1 87 (37)) Translation: (begin (define cos-95 (lambda (cos-87) (lambda (cos-37) (cos-87 cos-37)))) 1) ok Expression: (17 96 -1 0 87 -1 0 37 -1 87 (87 (37))) Translation: (begin (define cos-96 (lambda (cos-87) (lambda (cos-37) (cos-87 (cos-87 cos-37))))) 1) ok Expression: (17 97 -1 0 46 -1 0 87 -1 0 37 -1 87 ((46 (87)) (37))) Translation: (begin (define cos-97 (lambda (cos-46) (lambda (cos-87) (lambda (cos-37) (cos-87 ((cos-46 cos-87) cos-37)))))) 1) ok Expression: (17 98 -1 0 99 -1 0 100 -1 (99 (97)) (100)) Translation: (begin (define cos-98 (lambda (cos-99) (lambda (cos-100) ((cos-99 cos-97) cos-100)))) 1) ok Expression: (17 101 -1 0 99 -1 0 100 -1 (99 (98 -1 100)) (94)) Translation: (begin (define cos-101 (lambda (cos-99) (lambda (cos-100) ((cos-99 (cos-98 cos-100)) cos-94)))) 1) ok Expression: (17 102 -1 0 46 -1 93 -1 (46 (0 83 -1 91 (97 -1 92 -1 83) (92 -1 83))) (91 (94) (94))) Translation: (begin (define cos-102 (lambda (cos-46) (cos-93 ((cos-46 (lambda (cos-83) ((cos-91 (cos-97 (cos-92 cos-83))) (cos-92 cos-83)))) ((cos-91 cos-94) cos-94))))) 1) ok Expression: (17 103 -1 0 46 -1 (46 (0 104 -1 90) (89))) Translation: (begin (define cos-103 (lambda (cos-46) ((cos-46 (lambda (cos-104) cos-90)) cos-89))) 1) ok Expression: (17 105 -1 0 87 -1 (0 37 -1 87 (37 (37))) (0 37 -1 87 (37 (37)))) Translation: (begin (define cos-105 (lambda (cos-87) ((lambda (cos-37) (cos-87 (cos-37 cos-37))) (lambda (cos-37) (cos-87 (cos-37 cos-37)))))) 1) ok ; .. but for rest of message will assume that define does fixed-point for us ; now build a link between numbers and church number functions Expression: (17 106 -1 0 107 -1 107 (0 37 -1 5 (37) 1) 0) Translation: (begin (define cos-106 (lambda (cos-107) ((cos-107 (lambda (cos-37) ((cos-+ cos-37) 1))) 0))) 1) ok Expression: (2 0 (106 -1 94)) Translation: ((cos-= 0) (cos-106 cos-94)) ok Expression: (2 1 (106 -1 95)) Translation: ((cos-= 1) (cos-106 cos-95)) ok Expression: (2 2 (106 -1 96)) Translation: ((cos-= 2) (cos-106 cos-96)) ok Expression: (17 108 -1 0 37 -1 18 (2 0 (37)) (94) (97 -1 108 -1 7 (37) 1)) Translation: (begin (define cos-108 (lambda (cos-37) (if (tish ((cos-= 0) cos-37)) cos-94 (cos-97 (cos-108 ((cos-- cos-37) 1)))))) 1) ok ; MATH introduce universal quantifier ; really need to link with sets for true correctness ; and the examples here are REALLY sparse, need much more Expression: (1 19) Translation: (cos-intro 19) ok Expression: (4 5 (5 5 1)) Translation: ((cos-< 5) ((cos-+ 5) 1)) ok Expression: (4 4 (5 4 1)) Translation: ((cos-< 4) ((cos-+ 4) 1)) ok Expression: (4 3 (5 3 1)) Translation: ((cos-< 3) ((cos-+ 3) 1)) ok Expression: (4 2 (5 2 1)) Translation: ((cos-< 2) ((cos-+ 2) 1)) ok Expression: (4 1 (5 1 1)) Translation: ((cos-< 1) ((cos-+ 1) 1)) ok Expression: (4 0 (5 0 1)) Translation: ((cos-< 0) ((cos-+ 0) 1)) ok Expression: (19 (0 37 -1 4 (37) (5 (37) 1))) Translation: (cos-forall (lambda (cos-37) ((cos-< cos-37) ((cos-+ cos-37) 1)))) ok Expression: (4 5 (6 5 2)) Translation: ((cos-< 5) ((cos-* 5) 2)) ok Expression: (4 4 (6 4 2)) Translation: ((cos-< 4) ((cos-* 4) 2)) ok Expression: (4 3 (6 3 2)) Translation: ((cos-< 3) ((cos-* 3) 2)) ok Expression: (4 2 (6 2 2)) Translation: ((cos-< 2) ((cos-* 2) 2)) ok Expression: (4 1 (6 1 2)) Translation: ((cos-< 1) ((cos-* 1) 2)) ok Expression: (8 -1 4 0 (6 0 2)) Translation: (cos-not ((cos-< 0) ((cos-* 0) 2))) ok Expression: (8 -1 19 (0 37 -1 4 (37) (6 (37) 2))) Translation: (cos-not (cos-forall (lambda (cos-37) ((cos-< cos-37) ((cos-* cos-37) 2))))) ok ; MATH introduce existential quantifier ; really need to link with sets for true correctness ; and the examples here are REALLY sparse, need much more Expression: (8 -1 2 5 (6 2 2)) Translation: (cos-not ((cos-= 5) ((cos-* 2) 2))) ok Expression: (2 4 (6 2 2)) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (8 -1 2 3 (6 2 2)) Translation: (cos-not ((cos-= 3) ((cos-* 2) 2))) ok Expression: (8 -1 2 2 (6 2 2)) Translation: (cos-not ((cos-= 2) ((cos-* 2) 2))) ok Expression: (8 -1 2 1 (6 2 2)) Translation: (cos-not ((cos-= 1) ((cos-* 2) 2))) ok Expression: (8 -1 2 0 (6 2 2)) Translation: (cos-not ((cos-= 0) ((cos-* 2) 2))) ok Expression: (1 20) Translation: (cos-intro 20) ok Expression: (20 (0 37 -1 2 (37) (6 2 2))) Translation: (cos-exists (lambda (cos-37) ((cos-= cos-37) ((cos-* 2) 2)))) ok Expression: (8 -1 2 5 (5 5 2)) Translation: (cos-not ((cos-= 5) ((cos-+ 5) 2))) ok Expression: (8 -1 2 4 (5 4 2)) Translation: (cos-not ((cos-= 4) ((cos-+ 4) 2))) ok Expression: (8 -1 2 3 (5 3 2)) Translation: (cos-not ((cos-= 3) ((cos-+ 3) 2))) ok Expression: (8 -1 2 2 (5 2 2)) Translation: (cos-not ((cos-= 2) ((cos-+ 2) 2))) ok Expression: (8 -1 2 1 (5 1 2)) Translation: (cos-not ((cos-= 1) ((cos-+ 1) 2))) ok Expression: (8 -1 2 0 (5 0 2)) Translation: (cos-not ((cos-= 0) ((cos-+ 0) 2))) ok Expression: (8 (20 (0 37 -1 2 (37) (5 (37) 2)))) Translation: (cos-not (cos-exists (lambda (cos-37) ((cos-= cos-37) ((cos-+ cos-37) 2))))) ok ; MATH introduce logical implication Expression: (1 109) Translation: (cos-intro 109) ok Expression: (17 109 -1 0 37 -1 0 36 -1 8 -1 13 (37) (8 -1 36)) Translation: (begin (define cos-109 (lambda (cos-37) (lambda (cos-36) (cos-not ((cos-and cos-37) (cos-not cos-36)))))) 1) ok Expression: (109 (16) (16)) Translation: ((cos-109 cos-true) cos-true) ok Expression: (8 -1 109 (16) (15)) Translation: (cos-not ((cos-109 cos-true) cos-false)) ok Expression: (109 (15) (16)) Translation: ((cos-109 cos-false) cos-true) ok Expression: (109 (15) (15)) Translation: ((cos-109 cos-false) cos-false) ok Expression: (19 (0 37 -1 19 (0 36 -1 109 (109 (37) (36)) (109 (8 -1 36) (8 -1 37))))) Translation: (cos-forall (lambda (cos-37) (cos-forall (lambda (cos-36) ((cos-109 ((cos-109 cos-37) cos-36)) ((cos-109 (cos-not cos-36)) (cos-not cos-37))))))) ok ; MATH introduce sets and set membership Expression: (1 110) Translation: (cos-intro 110) ok Expression: (17 110 -1 0 37 -1 0 53 -1 8 -1 2 (63 (53) (37) (0 36 0) 1) 0) Translation: (begin (define cos-110 (lambda (cos-37) (lambda (cos-53) (cos-not ((cos-= ((((cos-63 cos-53) cos-37) (lambda (cos-36) 0)) 1)) 0))))) 1) ok Expression: (110 2 (70 8 9 2)) Translation: ((cos-110 2) ((((cos-51 3) 8) 9) 2)) ok Expression: (110 8 (70 8 9 2)) Translation: ((cos-110 8) ((((cos-51 3) 8) 9) 2)) ok Expression: (110 9 (70 8 9 2)) Translation: ((cos-110 9) ((((cos-51 3) 8) 9) 2)) ok Expression: (110 4 (70 6 1 4 9)) Translation: ((cos-110 4) (((((cos-51 4) 6) 1) 4) 9)) ok Expression: (110 1 (70 6 1 4 9)) Translation: ((cos-110 1) (((((cos-51 4) 6) 1) 4) 9)) ok Expression: (110 6 (70 6 1 4 9)) Translation: ((cos-110 6) (((((cos-51 4) 6) 1) 4) 9)) ok Expression: (110 1 (70 8 1 0 3 5)) Translation: ((cos-110 1) ((((((cos-51 5) 8) 1) 0) 3) 5)) ok Expression: (110 3 (70 8 1 0 3 5)) Translation: ((cos-110 3) ((((((cos-51 5) 8) 1) 0) 3) 5)) ok Expression: (110 0 (70 8 1 0 3 5)) Translation: ((cos-110 0) ((((((cos-51 5) 8) 1) 0) 3) 5)) ok Expression: (110 3 (70 4 0 3 7 9)) Translation: ((cos-110 3) ((((((cos-51 5) 4) 0) 3) 7) 9)) ok Expression: (110 0 (70 4 0 3 7 9)) Translation: ((cos-110 0) ((((((cos-51 5) 4) 0) 3) 7) 9)) ok Expression: (110 9 (70 4 0 3 7 9)) Translation: ((cos-110 9) ((((((cos-51 5) 4) 0) 3) 7) 9)) ok Expression: (110 3 (70 4 1 3 9)) Translation: ((cos-110 3) (((((cos-51 4) 4) 1) 3) 9)) ok Expression: (110 9 (70 4 1 3 9)) Translation: ((cos-110 9) (((((cos-51 4) 4) 1) 3) 9)) ok Expression: (110 4 (70 4 1 3 9)) Translation: ((cos-110 4) (((((cos-51 4) 4) 1) 3) 9)) ok Expression: (8 -1 110 8 (70 4 1 0 9)) Translation: (cos-not ((cos-110 8) (((((cos-51 4) 4) 1) 0) 9))) ok Expression: (8 -1 110 8 (70 6 4 0 7 5)) Translation: (cos-not ((cos-110 8) ((((((cos-51 5) 6) 4) 0) 7) 5))) ok Expression: (8 -1 110 1 (70 0 7)) Translation: (cos-not ((cos-110 1) (((cos-51 2) 0) 7))) ok Expression: (8 -1 110 4 (70 1 3 2 5)) Translation: (cos-not ((cos-110 4) (((((cos-51 4) 1) 3) 2) 5))) ok Expression: (8 -1 110 8 (70 3 7 2 5)) Translation: (cos-not ((cos-110 8) (((((cos-51 4) 3) 7) 2) 5))) ok ; rules for set equality Expression: (17 111 -1 0 37 -1 0 36 -1 18 (3 (55 -1 37) 0) (13 (110 (52 -1 37) (36)) (111 (54 -1 37) (36))) (16)) Translation: (begin (define cos-111 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-> (cos-55 cos-37)) 0)) ((cos-and ((cos-110 (cos-52 cos-37)) cos-36)) ((cos-111 (cos-54 cos-37)) cos-36)) cos-true)))) 1) ok Expression: (17 112 -1 0 37 -1 0 36 -1 13 (111 (37) (36)) (111 (36) (37))) Translation: (begin (define cos-112 (lambda (cos-37) (lambda (cos-36) ((cos-and ((cos-111 cos-37) cos-36)) ((cos-111 cos-36) cos-37))))) 1) ok Expression: (112 (70 1 5 9) (70 5 1 9)) Translation: ((cos-112 ((((cos-51 3) 1) 5) 9)) ((((cos-51 3) 5) 1) 9)) ok Expression: (112 (70 1 5 9) (70 9 1 5)) Translation: ((cos-112 ((((cos-51 3) 1) 5) 9)) ((((cos-51 3) 9) 1) 5)) ok Expression: (8 -1 112 (70 1 5 9) (70 1 5)) Translation: (cos-not ((cos-112 ((((cos-51 3) 1) 5) 9)) (((cos-51 2) 1) 5))) ok ; let's go leave ourselves wide open to Russell's paradox ; ... by using characteristic functions ; ... since it doesn't really matter for communication purposes ; ... and so far this is just used / tested with sets of integers really Expression: (110 5 (30 (0 37 -1 2 (5 (37) 10) 15))) Translation: ((cos-110 5) (cos-all (lambda (cos-37) ((cos-= ((cos-+ cos-37) 10)) 15)))) ok Expression: (110 3 (30 (0 37 -1 2 (6 (37) 3) (5 (37) 6)))) Translation: ((cos-110 3) (cos-all (lambda (cos-37) ((cos-= ((cos-* cos-37) 3)) ((cos-+ cos-37) 6))))) ok Expression: (17 113 -1 70) Translation: (begin (define cos-113 (cos-51 0)) 1) ok Expression: (110 0 (31)) Translation: ((cos-110 0) cos-natural-set) ok Expression: (19 (0 37 -1 109 (110 (37) (31)) (110 (5 (37) 1) (31)))) Translation: (cos-forall (lambda (cos-37) ((cos-109 ((cos-110 cos-37) cos-natural-set)) ((cos-110 ((cos-+ cos-37) 1)) cos-natural-set)))) ok Expression: (110 1 (31)) Translation: ((cos-110 1) cos-natural-set) ok Expression: (110 2 (31)) Translation: ((cos-110 2) cos-natural-set) ok Expression: (110 3 (31)) Translation: ((cos-110 3) cos-natural-set) ok Expression: (110 4 (31)) Translation: ((cos-110 4) cos-natural-set) ok Expression: (110 5 (31)) Translation: ((cos-110 5) cos-natural-set) ok Expression: (110 6 (31)) Translation: ((cos-110 6) cos-natural-set) ok Expression: (110 7 (31)) Translation: ((cos-110 7) cos-natural-set) ok Expression: (110 8 (31)) Translation: ((cos-110 8) cos-natural-set) ok Expression: (110 9 (31)) Translation: ((cos-110 9) cos-natural-set) ok Expression: (17 114 -1 70 (16) (15)) Translation: (begin (define cos-114 (((cos-51 2) cos-true) cos-false)) 1) ok Expression: (110 (16) (114)) Translation: ((cos-110 cos-true) cos-114) ok Expression: (110 (15) (114)) Translation: ((cos-110 cos-false) cos-114) ok ; actually, to simplify semantics elsewhere, true and false ; are now just 0 and 1 so they are not distinct from ints Expression: (17 115 -1 30 -1 0 37 -1 20 -1 0 36 -1 13 (110 (36) (31)) (2 (6 2 (36)) (37))) Translation: (begin (define cos-115 (cos-all (lambda (cos-37) (cos-exists (lambda (cos-36) ((cos-and ((cos-110 cos-36) cos-natural-set)) ((cos-= ((cos-* 2) cos-36)) cos-37))))))) 1) ok Expression: (110 0 (31)) Translation: ((cos-110 0) cos-natural-set) ok Expression: (110 0 (115)) Translation: ((cos-110 0) cos-115) ok Expression: (110 1 (31)) Translation: ((cos-110 1) cos-natural-set) ok Expression: (8 -1 110 1 (115)) Translation: (cos-not ((cos-110 1) cos-115)) ok Expression: (110 2 (31)) Translation: ((cos-110 2) cos-natural-set) ok Expression: (110 2 (115)) Translation: ((cos-110 2) cos-115) ok Expression: (110 3 (31)) Translation: ((cos-110 3) cos-natural-set) ok Expression: (8 -1 110 3 (115)) Translation: (cos-not ((cos-110 3) cos-115)) ok Expression: (110 4 (31)) Translation: ((cos-110 4) cos-natural-set) ok Expression: (110 4 (115)) Translation: ((cos-110 4) cos-115) ok Expression: (110 5 (31)) Translation: ((cos-110 5) cos-natural-set) ok Expression: (8 -1 110 5 (115)) Translation: (cos-not ((cos-110 5) cos-115)) ok Expression: (110 6 (31)) Translation: ((cos-110 6) cos-natural-set) ok Expression: (110 6 (115)) Translation: ((cos-110 6) cos-115) ok ; MATH introduce graph structures Expression: (17 116 -1 26 (117 118) (60 (117) (118))) Translation: (begin (define cos-116 (lambda (cos-117) (lambda (cos-118) ((cos-60 cos-117) cos-118)))) 1) ok Expression: (17 119 -1 116 (70 1 2 3 4) (70 (70 1 2) (70 2 3) (70 1 4))) Translation: (begin (define cos-119 ((cos-116 (((((cos-51 4) 1) 2) 3) 4)) ((((cos-51 3) (((cos-51 2) 1) 2)) (((cos-51 2) 2) 3)) (((cos-51 2) 1) 4)))) 1) ok Expression: (17 120 -1 26 (121 122 123) (20 -1 0 66 -1 18 (13 (10 (66) 0) (4 (66) (55 -1 56 (121) 1))) (59 (56 (56 (121) 1) (66)) (70 (122) (123))) (15))) Translation: (begin (define cos-120 (lambda (cos-121) (lambda (cos-122) (lambda (cos-123) (cos-exists (lambda (cos-66) (if (tish ((cos-and ((cos->= cos-66) 0)) ((cos-< cos-66) (cos-55 ((cos-56 cos-121) 1))))) ((cos-59 ((cos-56 ((cos-56 cos-121) 1)) cos-66)) (((cos-51 2) cos-122) cos-123)) cos-false))))))) 1) ok Expression: (2 (120 (119) 1 2) (16)) Translation: ((cos-= (((cos-120 cos-119) 1) 2)) cos-true) ok Expression: (2 (120 (119) 1 3) (15)) Translation: ((cos-= (((cos-120 cos-119) 1) 3)) cos-false) ok Expression: (2 (120 (119) 2 4) (15)) Translation: ((cos-= (((cos-120 cos-119) 2) 4)) cos-false) ok ; 'if' is used a lot in the next definition in place of and / or ; this is because I haven't established lazy evaluation forms for and / or ; so this very inefficient algorithm completely bogs down when combined ; ... during testing with a dumb implementation for 'exists'. Expression: (17 124 -1 26 (121 122 123) (18 (2 (122) (123)) (16) (18 (120 (121) (122) (123)) (16) (20 (0 125 -1 18 (120 (121) (122) (125)) (124 (121) (125) (123)) (15)))))) Translation: (begin (define cos-124 (lambda (cos-121) (lambda (cos-122) (lambda (cos-123) (if (tish ((cos-= cos-122) cos-123)) cos-true (if (tish (((cos-120 cos-121) cos-122) cos-123)) cos-true (cos-exists (lambda (cos-125) (if (tish (((cos-120 cos-121) cos-122) cos-125)) (((cos-124 cos-121) cos-125) cos-123) cos-false))))))))) 1) ok Expression: (2 (124 (119) 1 2) (16)) Translation: ((cos-= (((cos-124 cos-119) 1) 2)) cos-true) ok Expression: (2 (124 (119) 1 3) (16)) Translation: ((cos-= (((cos-124 cos-119) 1) 3)) cos-true) ok Expression: (2 (124 (119) 2 4) (15)) Translation: ((cos-= (((cos-124 cos-119) 2) 4)) cos-false) ok ; MATH show how to execute a sequence of instructions Expression: (1 126) Translation: (cos-intro 126) ok Expression: (17 78 -1 25) Translation: (begin (define cos-78 cos-translate) 1) ok Expression: (17 127 -1 0 37 -1 18 (10 (55 -1 37) 1) (57 (76 -1 37) (127 -1 77 -1 37)) (37)) Translation: (begin (define cos-127 (lambda (cos-37) (if (tish ((cos->= (cos-55 cos-37)) 1)) ((cos-57 (cos-76 cos-37)) (cos-127 (cos-77 cos-37))) cos-37))) 1) ok ; test reverse Expression: (59 (70 1 2 3) (127 -1 70 3 2 1)) Translation: ((cos-59 ((((cos-51 3) 1) 2) 3)) (cos-127 ((((cos-51 3) 3) 2) 1))) ok Expression: (17 25 -1 74 ((79 (78))) (0 37 -1 18 (24 -1 37) (79 -1 37) (18 (2 (52 -1 37) 126) (25 (70 (70 0 37 (70 52 (70 37))) (57 70 (127 -1 54 -1 37)))) (79 -1 37)))) Translation: (begin (define cos-translate ((lambda (cos-79) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-79 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 126)) (cos-translate (((cos-51 2) ((((cos-51 3) 0) 37) (((cos-51 2) 52) ((cos-51 1) 37)))) ((cos-57 70) (cos-127 (cos-54 cos-37))))) (cos-79 cos-37))))) cos-78)) 1) ok Expression: (2 (126 1 7 2 4) 4) Translation: ((cos-= ((lambda (cos-37) (cos-52 cos-37)) (((((cos-51 4) 4) 2) 7) 1))) 4) ok Expression: (2 (126 (28 (47) 88) (28 (47) 6) (29 -1 47)) 6) Translation: ((cos-= ((lambda (cos-37) (cos-52 cos-37)) ((((cos-51 3) (cos-get! cos-47)) ((cos-set! cos-47) 6)) ((cos-set! cos-47) 88)))) 6) ok Expression: (2 (126 (28 (48) 88) (28 (47) 6) (29 -1 48)) 88) Translation: ((cos-= ((lambda (cos-37) (cos-52 cos-37)) ((((cos-51 3) (cos-get! cos-48)) ((cos-set! cos-47) 6)) ((cos-set! cos-48) 88)))) 88) ok Expression: (2 (126 (28 (47) 88) (28 (47) 6) (29 -1 47) 4) 4) Translation: ((cos-= ((lambda (cos-37) (cos-52 cos-37)) (((((cos-51 4) 4) (cos-get! cos-47)) ((cos-set! cos-47) 6)) ((cos-set! cos-47) 88)))) 4) ok ; MATH introduce environment / hashmap structure ; this section needs a LOT more examples :-) ; note that at the time of writing (h 1 2) is same as ((h) 1 2) Expression: (17 128 -1 26 (129 37 36 38) (18 (58 (38) (37)) (36) (129 (38)))) Translation: (begin (define cos-128 (lambda (cos-129) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) (if (tish ((cos-58 cos-38) cos-37)) cos-36 (cos-129 cos-38))))))) 1) ok Expression: (17 130 -1 26 (129 37) (129 (37))) Translation: (begin (define cos-130 (lambda (cos-129) (lambda (cos-37) (cos-129 cos-37)))) 1) ok Expression: (17 131 -1 0 37 -1 32) Translation: (begin (define cos-131 (lambda (cos-37) cos-undefined)) 1) ok Expression: (17 132 -1 0 133 -1 0 37 -1 133) Translation: (begin (define cos-132 (lambda (cos-133) (lambda (cos-37) cos-133))) 1) ok Expression: (17 134 -1 128 (128 (131) 3 2) 4 9) Translation: (begin (define cos-134 (((cos-128 (((cos-128 cos-131) 3) 2)) 4) 9)) 1) ok Expression: (2 (130 (134) 4) 9) Translation: ((cos-= ((cos-130 cos-134) 4)) 9) ok Expression: (2 (130 (134) 3) 2) Translation: ((cos-= ((cos-130 cos-134) 3)) 2) ok Expression: (2 (130 (134) 8) (32)) Translation: ((cos-= ((cos-130 cos-134) 8)) cos-undefined) ok Expression: (2 (130 (134) 15) (32)) Translation: ((cos-= ((cos-130 cos-134) 15)) cos-undefined) ok Expression: (2 (130 (128 (134) 15 33) 15) 33) Translation: ((cos-= ((cos-130 (((cos-128 cos-134) 15) 33)) 15)) 33) ok Expression: (2 (130 (134) 15) (32)) Translation: ((cos-= ((cos-130 cos-134) 15)) cos-undefined) ok Expression: (17 135 -1 0 37 -1 18 (59 (37) (70)) (131) (128 (135 (54 -1 37)) (61 -1 52 -1 37) (62 -1 52 -1 37))) Translation: (begin (define cos-135 (lambda (cos-37) (if (tish ((cos-59 cos-37) (cos-51 0))) cos-131 (((cos-128 (cos-135 (cos-54 cos-37))) (cos-61 (cos-52 cos-37))) (cos-62 (cos-52 cos-37)))))) 1) ok Expression: (2 (130 (135 -1 70 (60 3 10) (60 2 20) (60 1 30)) 3) 10) Translation: ((cos-= ((cos-130 (cos-135 ((((cos-51 3) ((cos-60 3) 10)) ((cos-60 2) 20)) ((cos-60 1) 30)))) 3)) 10) ok Expression: (2 (130 (135 -1 70 (60 3 10) (60 2 20) (60 1 30)) 1) 30) Translation: ((cos-= ((cos-130 (cos-135 ((((cos-51 3) ((cos-60 3) 10)) ((cos-60 2) 20)) ((cos-60 1) 30)))) 1)) 30) ok ; OBJECT introduce simple mutable structures Expression: (17 136 -1 0 53 -1 74 ((137 (82 (0 37 -1 27 0) (53)))) (0 64 -1 56 (137) (67 (53) (64) (0 37 0)))) Translation: (begin (define cos-136 (lambda (cos-53) ((lambda (cos-137) (lambda (cos-64) ((cos-56 cos-137) (((cos-67 cos-53) cos-64) (lambda (cos-37) 0))))) ((cos-82 (lambda (cos-37) (cos-make-cell 0))) cos-53)))) 1) ok Expression: (17 138 -1 136 -1 70 139 140 141) Translation: (begin (define cos-138 (cos-136 ((((cos-51 3) 139) 140) 141))) 1) ok Expression: (28 (138 139) 15) Translation: ((cos-set! (cos-138 139)) 15) ok Expression: (2 (29 -1 138 139) 15) Translation: ((cos-= (cos-get! (cos-138 139))) 15) ok ; OBJECT introduce method handler wrappers Expression: (17 142 -1 26 (143 144 145) (128 (143) (144) (0 104 -1 145 -1 143))) Translation: (begin (define cos-142 (lambda (cos-143) (lambda (cos-144) (lambda (cos-145) (((cos-128 cos-143) cos-144) (lambda (cos-104) (cos-145 cos-143))))))) 1) ok Expression: (17 146 -1 0 37 -1 37 0) Translation: (begin (define cos-146 (lambda (cos-37) (cos-37 0))) 1) ok Expression: (17 147 -1 136 -1 70 37 36) Translation: (begin (define cos-147 (cos-136 (((cos-51 2) 37) 36))) 1) ok Expression: (28 (147 37) 10) Translation: ((cos-set! (cos-147 37)) 10) ok Expression: (28 (147 36) 20) Translation: ((cos-set! (cos-147 36)) 20) ok Expression: (2 (29 -1 147 37) 10) Translation: ((cos-= (cos-get! (cos-147 37))) 10) ok Expression: (2 (29 -1 147 36) 20) Translation: ((cos-= (cos-get! (cos-147 36))) 20) ok Expression: (17 148 -1 142 (147) 149 (0 150 -1 5 (29 -1 150 37) (29 -1 150 36))) Translation: (begin (define cos-148 (((cos-142 cos-147) 149) (lambda (cos-150) ((cos-+ (cos-get! (cos-150 37))) (cos-get! (cos-150 36)))))) 1) ok Expression: (2 (29 -1 148 37) 10) Translation: ((cos-= (cos-get! (cos-148 37))) 10) ok Expression: (2 (29 -1 148 36) 20) Translation: ((cos-= (cos-get! (cos-148 36))) 20) ok Expression: (2 (146 -1 148 149) 30) Translation: ((cos-= (cos-146 (cos-148 149))) 30) ok Expression: (28 (148 36) 10) Translation: ((cos-set! (cos-148 36)) 10) ok Expression: (2 (146 -1 148 149) 20) Translation: ((cos-= (cos-146 (cos-148 149))) 20) ok Expression: (28 (147 36) 5) Translation: ((cos-set! (cos-147 36)) 5) ok Expression: (2 (146 -1 148 149) 15) Translation: ((cos-= (cos-146 (cos-148 149))) 15) ok ; TURING introduce turing machine model ; just for fun! Expression: (17 151 -1 0 37 -1 18 (3 (55 -1 37) 0) (18 (3 (55 -1 37) 1) (54 -1 37) (70 -1 70)) (0 70 -1 70)) Translation: (begin (define cos-151 (lambda (cos-37) (if (tish ((cos-> (cos-55 cos-37)) 0)) (if (tish ((cos-> (cos-55 cos-37)) 1)) (cos-54 cos-37) ((cos-51 1) (cos-51 0))) (lambda (cos-70) (cos-51 0))))) 1) ok Expression: (17 152 -1 0 37 -1 18 (3 (55 -1 37) 0) (52 -1 37) (70)) Translation: (begin (define cos-152 (lambda (cos-37) (if (tish ((cos-> (cos-55 cos-37)) 0)) (cos-52 cos-37) (cos-51 0)))) 1) ok Expression: (17 153 -1 0 154 -1 74 ((37 (62 -1 154))) (18 (3 (55 -1 37) 0) (52 -1 37) (70))) Translation: (begin (define cos-153 (lambda (cos-154) ((lambda (cos-37) (if (tish ((cos-> (cos-55 cos-37)) 0)) (cos-52 cos-37) (cos-51 0))) (cos-62 cos-154)))) 1) ok Expression: (17 155 -1 26 (154 156 157) (18 (2 (156) 1) (60 (57 (157) (61 -1 154)) (151 -1 62 -1 154)) (18 (2 (156) 0) (60 (151 -1 61 -1 154) (57 (152 -1 61 -1 154) (57 (157) (151 -1 62 -1 154)))) (60 (61 -1 154) (57 (157) (151 -1 62 -1 154)))))) Translation: (begin (define cos-155 (lambda (cos-154) (lambda (cos-156) (lambda (cos-157) (if (tish ((cos-= cos-156) 1)) ((cos-60 ((cos-57 cos-157) (cos-61 cos-154))) (cos-151 (cos-62 cos-154))) (if (tish ((cos-= cos-156) 0)) ((cos-60 (cos-151 (cos-61 cos-154))) ((cos-57 (cos-152 (cos-61 cos-154))) ((cos-57 cos-157) (cos-151 (cos-62 cos-154))))) ((cos-60 (cos-61 cos-154)) ((cos-57 cos-157) (cos-151 (cos-62 cos-154)))))))))) 1) ok Expression: (17 158 -1 26 (159 160 76 154) (18 (2 (160) (76)) (154) (74 ((161 (159 (160) (153 -1 154)))) (158 (159) (56 (161) 0) (76) (155 (154) (56 (161) 1) (56 (161) 2)))))) Translation: (begin (define cos-158 (lambda (cos-159) (lambda (cos-160) (lambda (cos-76) (lambda (cos-154) (if (tish ((cos-= cos-160) cos-76)) cos-154 ((lambda (cos-161) ((((cos-158 cos-159) ((cos-56 cos-161) 0)) cos-76) (((cos-155 cos-154) ((cos-56 cos-161) 1)) ((cos-56 cos-161) 2)))) ((cos-159 cos-160) (cos-153 cos-154))))))))) 1) ok Expression: (17 162 -1 0 37 -1 60 (70) (37)) Translation: (begin (define cos-162 (lambda (cos-37) ((cos-60 (cos-51 0)) cos-37))) 1) ok Expression: (17 163 -1 0 37 -1 0 53 -1 18 (3 (55 -1 53) 0) (18 (2 (76 -1 53) (37)) (163 (37) (77 -1 53)) (53)) (53)) Translation: (begin (define cos-163 (lambda (cos-37) (lambda (cos-53) (if (tish ((cos-> (cos-55 cos-53)) 0)) (if (tish ((cos-= (cos-76 cos-53)) cos-37)) ((cos-163 cos-37) (cos-77 cos-53)) cos-53) cos-53)))) 1) ok Expression: (17 164 -1 0 37 -1 163 (70) (62 -1 37)) Translation: (begin (define cos-164 (lambda (cos-37) ((cos-163 (cos-51 0)) (cos-62 cos-37)))) 1) ok Expression: (17 165 -1 135 -1 70 (60 166 (135 -1 70 (60 0 (70 166 1 0)) (60 1 (70 166 1 1)) (60 (70) (70 167 0 (70))))) (60 167 (135 -1 70 (60 0 (70 168 0 1)) (60 1 (70 167 0 0)) (60 (70) (70 169 2 1)))) (60 168 (135 -1 70 (60 0 (70 168 0 0)) (60 1 (70 168 0 1)) (60 (70) (70 169 1 (70))))) (60 169 (135 -1 70))) Translation: (begin (define cos-165 (cos-135 (((((cos-51 4) ((cos-60 166) (cos-135 ((((cos-51 3) ((cos-60 0) ((((cos-51 3) 166) 1) 0))) ((cos-60 1) ((((cos-51 3) 166) 1) 1))) ((cos-60 (cos-51 0)) ((((cos-51 3) 167) 0) (cos-51 0))))))) ((cos-60 167) (cos-135 ((((cos-51 3) ((cos-60 0) ((((cos-51 3) 168) 0) 1))) ((cos-60 1) ((((cos-51 3) 167) 0) 0))) ((cos-60 (cos-51 0)) ((((cos-51 3) 169) 2) 1)))))) ((cos-60 168) (cos-135 ((((cos-51 3) ((cos-60 0) ((((cos-51 3) 168) 0) 0))) ((cos-60 1) ((((cos-51 3) 168) 0) 1))) ((cos-60 (cos-51 0)) ((((cos-51 3) 169) 1) (cos-51 0))))))) ((cos-60 169) (cos-135 (cos-51 0)))))) 1) ok Expression: (2 (164 -1 158 (165) 166 169 (162 -1 70 1 0 0 1)) (70 1 0 1 0)) Translation: ((cos-= (cos-164 ((((cos-158 cos-165) 166) 169) (cos-162 (((((cos-51 4) 1) 0) 0) 1))))) (((((cos-51 4) 1) 0) 1) 0)) ok Expression: (2 (164 -1 158 (165) 166 169 (162 -1 70 1 1 1)) (70 1 0 0 0)) Translation: ((cos-= (cos-164 ((((cos-158 cos-165) 166) 169) (cos-162 ((((cos-51 3) 1) 1) 1))))) (((((cos-51 4) 1) 0) 0) 0)) ok Expression: (2 (164 -1 158 (165) 166 169 (162 -1 70 1 1 1 0 0 0 1 1 1)) (70 1 1 1 0 0 1 0 0 0)) Translation: ((cos-= (cos-164 ((((cos-158 cos-165) 166) 169) (cos-162 ((((((((((cos-51 9) 1) 1) 1) 0) 0) 0) 1) 1) 1))))) ((((((((((cos-51 9) 1) 1) 1) 0) 0) 1) 0) 0) 0)) ok ; OBJECT introduce simple form of typing, for ease of documentation. ; An object is simply a function that takes an argument. ; The argument is the method to call on the object. ; Types are here taken to be just the existence of a particular method, ; with that method returning an object of the appropriate type. Expression: (17 170 (26 (171) (26 (37) (18 (2 (37) 172) (171) 0)))) Translation: (begin (define cos-170 (lambda (cos-171) (lambda (cos-37) (if (tish ((cos-= cos-37) 172)) cos-171 0)))) 1) ok Expression: (17 173 (0 37 (18 (24 (37)) (170 (37)) (37)))) Translation: (begin (define cos-173 (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-170 cos-37) cos-37))) 1) ok Expression: (17 174 (26 (175 176) (18 (24 (176)) (2 (175) 172) (8 (24 ((173 (176)) (175))))))) Translation: (begin (define cos-174 (lambda (cos-175) (lambda (cos-176) (if (tish (cos-number? cos-176)) ((cos-= cos-175) 172) (cos-not (cos-number? ((cos-173 cos-176) cos-175))))))) 1) ok ; add version of lambda that allows types to be declared Expression: (17 78 (25)) Translation: (begin (define cos-78 cos-translate) 1) ok Expression: (17 25 (74 ((79 (78))) (0 37 (18 (24 (37)) (79 (37)) (18 (2 (52 (37)) 26) (74 ((80 (52 (54 (37)))) (73 (52 (54 (54 (37)))))) (18 (3 (55 (80)) 0) (18 (24 (76 (80))) (25 (70 26 (77 (80)) (70 0 (76 (80)) (73)))) (74 ((177 (61 (76 (80)))) (178 (62 (76 (80))))) (25 (70 26 (77 (80)) (70 0 (177) (70 74 (70 (70 (177) (70 (70 173 (70 (177))) (178)))) (73))))))) (25 (73)))) (79 (37))))))) Translation: (begin (define cos-translate ((lambda (cos-79) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-79 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 26)) ((lambda (cos-73) ((lambda (cos-80) (if (tish ((cos-> (cos-55 cos-80)) 0)) (if (tish (cos-number? (cos-76 cos-80))) (cos-translate ((((cos-51 3) 26) (cos-77 cos-80)) ((((cos-51 3) 0) (cos-76 cos-80)) cos-73))) ((lambda (cos-178) ((lambda (cos-177) (cos-translate ((((cos-51 3) 26) (cos-77 cos-80)) ((((cos-51 3) 0) cos-177) ((((cos-51 3) 74) ((cos-51 1) (((cos-51 2) cos-177) (((cos-51 2) (((cos-51 2) 173) ((cos-51 1) cos-177))) cos-178)))) cos-73))))) (cos-61 (cos-76 cos-80)))) (cos-62 (cos-76 cos-80)))) (cos-translate cos-73))) (cos-52 (cos-54 cos-37)))) (cos-52 (cos-54 (cos-54 cos-37)))) (cos-79 cos-37))))) cos-78)) 1) ok ; add conditional form Expression: (17 78 (25)) Translation: (begin (define cos-78 cos-translate) 1) ok Expression: (17 25 (74 ((79 (78))) (0 37 (18 (24 (37)) (79 (37)) (18 (2 (52 (37)) 179) (74 ((180 (52 (54 (37)))) (181 (54 (54 (37))))) (18 (3 (55 (181)) 0) (25 (70 18 (61 (180)) (62 (180)) (57 179 (181)))) (25 (180)))) (79 (37))))))) Translation: (begin (define cos-translate ((lambda (cos-79) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-79 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 179)) ((lambda (cos-181) ((lambda (cos-180) (if (tish ((cos-> (cos-55 cos-181)) 0)) (cos-translate (((((cos-51 4) 18) (cos-61 cos-180)) (cos-62 cos-180)) ((cos-57 179) cos-181))) (cos-translate cos-180))) (cos-52 (cos-54 cos-37)))) (cos-54 (cos-54 cos-37))) (cos-79 cos-37))))) cos-78)) 1) ok Expression: (2 99 (179 99)) Translation: ((cos-= 99) 99) ok Expression: (2 8 (179 ((16) 8) 11)) Translation: ((cos-= 8) (if (tish cos-true) 8 11)) ok Expression: (2 11 (179 ((15) 8) 11)) Translation: ((cos-= 11) (if (tish cos-false) 8 11)) ok Expression: (2 7 (179 ((15) 3) ((16) 7) 11)) Translation: ((cos-= 7) (if (tish cos-false) 3 (if (tish cos-true) 7 11))) ok Expression: (2 3 (179 ((16) 3) ((16) 7) 11)) Translation: ((cos-= 3) (if (tish cos-true) 3 (if (tish cos-true) 7 11))) ok Expression: (2 11 (179 ((15) 3) ((15) 7) 11)) Translation: ((cos-= 11) (if (tish cos-false) 3 (if (tish cos-false) 7 11))) ok Expression: (17 182 (26 (183 53) (18 (3 (55 (53)) 0) (18 (183 (52 (53))) (182 (183) (54 (53))) (57 (52 (53)) (182 (183) (54 (53))))) (53)))) Translation: (begin (define cos-182 (lambda (cos-183) (lambda (cos-53) (if (tish ((cos-> (cos-55 cos-53)) 0)) (if (tish (cos-183 (cos-52 cos-53))) ((cos-182 cos-183) (cos-54 cos-53)) ((cos-57 (cos-52 cos-53)) ((cos-182 cos-183) (cos-54 cos-53)))) cos-53)))) 1) ok Expression: (17 184 (26 (37) (182 (26 (36) (2 (36) (37)))))) Translation: (begin (define cos-184 (lambda (cos-37) (cos-182 (lambda (cos-36) ((cos-= cos-36) cos-37))))) 1) ok Expression: (59 (70 1 2 3 5) (184 4 (70 1 2 3 4 5))) Translation: ((cos-59 (((((cos-51 4) 1) 2) 3) 5)) ((cos-184 4) ((((((cos-51 5) 1) 2) 3) 4) 5))) ok Expression: (59 (70 1 2 3 5) (184 4 (70 1 4 2 4 3 4 5))) Translation: ((cos-59 (((((cos-51 4) 1) 2) 3) 5)) ((cos-184 4) ((((((((cos-51 7) 1) 4) 2) 4) 3) 4) 5))) ok Expression: (17 185 (26 (175 176) (74 ((186 (173 (176)))) (186 (175))))) Translation: (begin (define cos-185 (lambda (cos-175) (lambda (cos-176) ((lambda (cos-186) (cos-186 cos-175)) (cos-173 cos-176))))) 1) ok Expression: (17 187 (26 ((37 172) (36 172)) (185 172 (5 (37) (36))))) Translation: (begin (define cos-187 (lambda (cos-37) ((lambda (cos-37) (lambda (cos-36) ((lambda (cos-36) ((cos-185 172) ((cos-+ cos-37) cos-36))) ((cos-173 cos-36) 172)))) ((cos-173 cos-37) 172)))) 1) ok Expression: (2 42 (187 (170 10) (170 32))) Translation: ((cos-= 42) ((cos-187 (cos-170 10)) (cos-170 32))) ok Expression: (2 42 (187 10 32)) Translation: ((cos-= 42) ((cos-187 10) 32)) ok Expression: (17 188 (26 (87) ((26 (37) (87 (26 (36) ((37 (37)) (36))))) (26 (37) (87 (26 (36) ((37 (37)) (36)))))))) Translation: (begin (define cos-188 (lambda (cos-87) ((lambda (cos-37) (cos-87 (lambda (cos-36) ((cos-37 cos-37) cos-36)))) (lambda (cos-37) (cos-87 (lambda (cos-36) ((cos-37 cos-37) cos-36))))))) 1) ok ; OBJECT an example object -- a 2D point Expression: (17 189 (26 (37 36) (188 (26 (150 190) (179 ((2 (190) 37) (37)) ((2 (190) 36) (36)) ((2 (190) 189) (150)) ((2 (190) 5) (26 ((83 189)) (189 (5 (37) (83 37)) (5 (36) (83 36))))) ((2 (190) 2) (26 ((83 189)) (13 (2 (37) (83 37)) (2 (36) (83 36))))) 0))))) Translation: (begin (define cos-189 (lambda (cos-37) (lambda (cos-36) (cos-188 (lambda (cos-150) (lambda (cos-190) (if (tish ((cos-= cos-190) 37)) cos-37 (if (tish ((cos-= cos-190) 36)) cos-36 (if (tish ((cos-= cos-190) 189)) cos-150 (if (tish ((cos-= cos-190) 5)) (lambda (cos-83) ((lambda (cos-83) ((cos-189 ((cos-+ cos-37) (cos-83 37))) ((cos-+ cos-36) (cos-83 36)))) ((cos-173 cos-83) 189))) (if (tish ((cos-= cos-190) 2)) (lambda (cos-83) ((lambda (cos-83) ((cos-and ((cos-= cos-37) (cos-83 37))) ((cos-= cos-36) (cos-83 36)))) ((cos-173 cos-83) 189))) 0))))))))))) 1) ok Expression: (17 191 (189 1 11)) Translation: (begin (define cos-191 ((cos-189 1) 11)) 1) ok Expression: (17 192 (189 2 22)) Translation: (begin (define cos-192 ((cos-189 2) 22)) 1) ok Expression: (2 1 (191 37)) Translation: ((cos-= 1) (cos-191 37)) ok Expression: (2 22 (192 36)) Translation: ((cos-= 22) (cos-192 36)) ok Expression: (2 11 ((189 11 12) 37)) Translation: ((cos-= 11) (((cos-189 11) 12) 37)) ok Expression: (2 11 (((189 11 12) 189) 37)) Translation: ((cos-= 11) ((((cos-189 11) 12) 189) 37)) ok Expression: (2 16 (((189 16 17) 189) 37)) Translation: ((cos-= 16) ((((cos-189 16) 17) 189) 37)) ok Expression: (2 33 (191 5 (192) 36)) Translation: ((cos-= 33) (((cos-191 5) cos-192) 36)) ok Expression: (191 5 (192) 2 (189 3 33)) Translation: ((((cos-191 5) cos-192) 2) ((cos-189 3) 33)) ok Expression: (192 5 (191) 2 (189 3 33)) Translation: ((((cos-192 5) cos-191) 2) ((cos-189 3) 33)) ok Expression: ((189 100 200) 5 (189 200 100) 2 (189 300 300)) Translation: ((((((cos-189 100) 200) 5) ((cos-189 200) 100)) 2) ((cos-189 300) 300)) ok Expression: (174 189 (191)) Translation: ((cos-174 189) cos-191) ok Expression: (8 (174 172 (191))) Translation: (cos-not ((cos-174 172) cos-191)) ok Expression: (174 172 5) Translation: ((cos-174 172) 5) ok Expression: (8 (174 189 5)) Translation: (cos-not ((cos-174 189) 5)) ok ; OBJECT an example object -- a container Expression: (17 193 (26 (37) (74 ((194 (27 (70)))) (188 (26 (150 190) (179 ((2 (190) 193) (150)) ((2 (190) 195) (29 (194))) ((2 (190) 98) (26 (37) (18 (8 (110 (37) (29 (194)))) (28 (194) (57 (37) (29 (194)))) (15)))) ((2 (190) 196) (26 (37) (28 (194) (184 (37) (29 (194)))))) ((2 (190) 2) (26 ((107 193)) (112 (150 195) (107 195)))) 0)))))) Translation: (begin (define cos-193 (lambda (cos-37) ((lambda (cos-194) (cos-188 (lambda (cos-150) (lambda (cos-190) (if (tish ((cos-= cos-190) 193)) cos-150 (if (tish ((cos-= cos-190) 195)) (cos-get! cos-194) (if (tish ((cos-= cos-190) 98)) (lambda (cos-37) (if (tish (cos-not ((cos-110 cos-37) (cos-get! cos-194)))) ((cos-set! cos-194) ((cos-57 cos-37) (cos-get! cos-194))) cos-false)) (if (tish ((cos-= cos-190) 196)) (lambda (cos-37) ((cos-set! cos-194) ((cos-184 cos-37) (cos-get! cos-194)))) (if (tish ((cos-= cos-190) 2)) (lambda (cos-107) ((lambda (cos-107) ((cos-112 (cos-150 195)) (cos-107 195))) ((cos-173 cos-107) 193))) 0))))))))) (cos-make-cell (cos-51 0))))) 1) ok ; Can pass anything to container function to create an object ; Should eventually use a consistent protocol for all objects, ; but all this stuff is still in flux Expression: (17 197 (193 198)) Translation: (begin (define cos-197 (cos-193 198)) 1) ok Expression: (197 98 77) Translation: ((cos-197 98) 77) ok Expression: (197 98 88) Translation: ((cos-197 98) 88) ok Expression: (197 98 99) Translation: ((cos-197 98) 99) ok Expression: (112 (197 195) (70 77 88 99)) Translation: ((cos-112 (cos-197 195)) ((((cos-51 3) 77) 88) 99)) ok Expression: (197 196 88) Translation: ((cos-197 196) 88) ok Expression: (112 (197 195) (70 77 99)) Translation: ((cos-112 (cos-197 195)) (((cos-51 2) 77) 99)) ok Expression: (17 199 (193 198)) Translation: (begin (define cos-199 (cos-193 198)) 1) ok Expression: (199 98 77) Translation: ((cos-199 98) 77) ok Expression: (199 98 99) Translation: ((cos-199 98) 99) ok Expression: (199 2 (197)) Translation: ((cos-199 2) cos-197) ok ; OBJECT expressing inheritance ; counter-container adds one method to container: count Expression: (17 200 (26 (37) (74 ((201 (193 198))) (188 (26 (150 190) (179 ((2 (190) 200) (150)) ((2 (190) 202) (55 (201 195))) (201 (190)))))))) Translation: (begin (define cos-200 (lambda (cos-37) ((lambda (cos-201) (cos-188 (lambda (cos-150) (lambda (cos-190) (if (tish ((cos-= cos-190) 200)) cos-150 (if (tish ((cos-= cos-190) 202)) (cos-55 (cos-201 195)) (cos-201 cos-190))))))) (cos-193 198)))) 1) ok Expression: (17 203 (200 198)) Translation: (begin (define cos-203 (cos-200 198)) 1) ok Expression: (2 0 (203 202)) Translation: ((cos-= 0) (cos-203 202)) ok Expression: (203 98 4) Translation: ((cos-203 98) 4) ok Expression: (2 1 (203 202)) Translation: ((cos-= 1) (cos-203 202)) ok Expression: (203 98 5) Translation: ((cos-203 98) 5) ok Expression: (2 2 (203 202)) Translation: ((cos-= 2) (cos-203 202)) ok ; OBJECT adding a special form for classes ; need a bunch of extra machinery first, will push this ; back into previous sections eventually, and simplify Expression: (17 204 (26 (205 206) (18 (3 (55 (205)) 0) (204 (77 (205)) (57 (76 (205)) (206))) (206)))) Translation: (begin (define cos-204 (lambda (cos-205) (lambda (cos-206) (if (tish ((cos-> (cos-55 cos-205)) 0)) ((cos-204 (cos-77 cos-205)) ((cos-57 (cos-76 cos-205)) cos-206)) cos-206)))) 1) ok Expression: (2 (204 (70 1 2 3) (70 4 5 6)) (70 1 2 3 4 5 6)) Translation: ((cos-= ((cos-204 ((((cos-51 3) 1) 2) 3)) ((((cos-51 3) 4) 5) 6))) (((((((cos-51 6) 1) 2) 3) 4) 5) 6)) ok Expression: (17 207 (0 37 (0 53 (18 (3 (55 (53)) 0) (57 (52 (53)) (207 (37) (54 (53)))) (70 (37)))))) Translation: (begin (define cos-207 (lambda (cos-37) (lambda (cos-53) (if (tish ((cos-> (cos-55 cos-53)) 0)) ((cos-57 (cos-52 cos-53)) ((cos-207 cos-37) (cos-54 cos-53))) ((cos-51 1) cos-37))))) 1) ok Expression: (2 (207 5 (70 1 2)) (70 1 2 5)) Translation: ((cos-= ((cos-207 5) (((cos-51 2) 1) 2))) ((((cos-51 3) 1) 2) 5)) ok Expression: (17 208 (26 (183 53) (18 (3 (55 (53)) 0) (18 (183 (52 (53))) (57 (52 (53)) (208 (183) (54 (53)))) (208 (183) (54 (53)))) (53)))) Translation: (begin (define cos-208 (lambda (cos-183) (lambda (cos-53) (if (tish ((cos-> (cos-55 cos-53)) 0)) (if (tish (cos-183 (cos-52 cos-53))) ((cos-57 (cos-52 cos-53)) ((cos-208 cos-183) (cos-54 cos-53))) ((cos-208 cos-183) (cos-54 cos-53))) cos-53)))) 1) ok Expression: (17 209 (74 ((210 (27 0))) (26 (37) (74 ((211 (29 (210)))) (126 (28 (210) (5 (211) 1)) (211)))))) Translation: (begin (define cos-209 ((lambda (cos-210) (lambda (cos-37) ((lambda (cos-211) ((lambda (cos-37) (cos-52 cos-37)) (((cos-51 2) cos-211) ((cos-set! cos-210) ((cos-+ cos-211) 1))))) (cos-get! cos-210)))) (cos-make-cell 0))) 1) ok Expression: (2 (209 198) 0) Translation: ((cos-= (cos-209 198)) 0) ok Expression: (2 (209 198) 1) Translation: ((cos-= (cos-209 198)) 1) ok Expression: (2 (209 198) 2) Translation: ((cos-= (cos-209 198)) 2) ok Expression: (8 (2 (209 198) (209 198))) Translation: (cos-not ((cos-= (cos-209 198)) (cos-209 198))) ok ; okay, here it comes. don't panic! ; I need to split this up into helpers, and simplify. ; It basically just writes code for classes like we saw in ; a previous section. Expression: (17 78 (25)) Translation: (begin (define cos-78 cos-translate) 1) ok Expression: (17 25 (74 ((79 (78))) (0 37 (18 (24 (37)) (79 (37)) (18 (2 (52 (37)) 212) (74 ((144 (56 (37) 1)) (213 (56 (37) 2)) (214 (54 (54 (54 (37)))))) (25 (70 17 (144) (70 26 (57 145 (213)) (70 74 (207 (70 215 (70 209 198)) (82 (54) (208 (0 37 (2 (61 (37)) 216)) (214)))) (70 74 (70 (70 150 (70 188 (70 26 (70 150 145) (204 (57 179 (204 (82 (0 37 (70 (70 2 (70 145) (61 (37))) (62 (37)))) (82 (54) (208 (0 37 (2 (61 (37)) 145)) (214)))) (82 (0 37 (70 (70 2 (70 145) (37)) (70 (37)))) (82 (62) (208 (0 37 (2 (61 (37)) 216)) (214)))))) (70 (70 (70 2 (70 145) 150) (70 150)) (70 (70 2 (70 145) (144)) (70 150 150)) (70 (70 2 (70 145) 217) (70 26 (70 37) 0)) (70 (70 2 (70 145) 198) 0) (70 (70 2 (70 145) 215) (70 215)) (70 (70 2 (70 145) 218) (70 26 (70 37) (70 2 (70 215) (70 37 215)))) (70 150 217 (70 145)))))))) (70 126 (70 150 (70 145)) (70 150)))))))) (79 (37))))))) Translation: (begin (define cos-translate ((lambda (cos-79) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-79 cos-37) (if (tish ((cos-= (cos-52 cos-37)) 212)) ((lambda (cos-214) ((lambda (cos-213) ((lambda (cos-144) (cos-translate ((((cos-51 3) 17) cos-144) ((((cos-51 3) 26) ((cos-57 145) cos-213)) ((((cos-51 3) 74) ((cos-207 (((cos-51 2) 215) (((cos-51 2) 209) 198))) ((cos-82 cos-54) ((cos-208 (lambda (cos-37) ((cos-= (cos-61 cos-37)) 216))) cos-214)))) ((((cos-51 3) 74) ((cos-51 1) (((cos-51 2) 150) (((cos-51 2) 188) ((((cos-51 3) 26) (((cos-51 2) 150) 145)) ((cos-204 ((cos-57 179) ((cos-204 ((cos-82 (lambda (cos-37) (((cos-51 2) ((((cos-51 3) 2) ((cos-51 1) 145)) (cos-61 cos-37))) (cos-62 cos-37)))) ((cos-82 cos-54) ((cos-208 (lambda (cos-37) ((cos-= (cos-61 cos-37)) 145))) cos-214)))) ((cos-82 (lambda (cos-37) (((cos-51 2) ((((cos-51 3) 2) ((cos-51 1) 145)) cos-37)) ((cos-51 1) cos-37)))) ((cos-82 cos-62) ((cos-208 (lambda (cos-37) ((cos-= (cos-61 cos-37)) 216))) cos-214)))))) ((((((((cos-51 7) (((cos-51 2) ((((cos-51 3) 2) ((cos-51