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@csail.mit.edu ; Copyright (c) 2005 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, go through some primes, etc. ; There is some syntax around the numbers, but that doesn't ; need to be understood at this point. ; 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. Expression: (0 1) Translation: (cos-intro 1) ok Expression: (0 2) Translation: (cos-intro 2) ok Expression: (0 3) Translation: (cos-intro 3) ok Expression: (0 4) Translation: (cos-intro 4) ok Expression: (0 5) Translation: (cos-intro 5) ok Expression: (0 6) Translation: (cos-intro 6) ok Expression: (0 7) Translation: (cos-intro 7) ok Expression: (0 8) Translation: (cos-intro 8) ok Expression: (0 9) Translation: (cos-intro 9) ok Expression: (0 10) Translation: (cos-intro 10) ok Expression: (0 11) Translation: (cos-intro 11) ok Expression: (0 12) Translation: (cos-intro 12) ok Expression: (0 13) Translation: (cos-intro 13) ok Expression: (0 14) Translation: (cos-intro 14) ok Expression: (0 15) Translation: (cos-intro 15) ok Expression: (0 16) Translation: (cos-intro 16) ok Expression: (0 2) Translation: (cos-intro 2) ok Expression: (0 3) Translation: (cos-intro 3) ok Expression: (0 5) Translation: (cos-intro 5) ok Expression: (0 7) Translation: (cos-intro 7) ok Expression: (0 11) Translation: (cos-intro 11) ok Expression: (0 13) Translation: (cos-intro 13) ok Expression: (0 1) Translation: (cos-intro 1) ok Expression: (0 4) Translation: (cos-intro 4) ok Expression: (0 9) Translation: (cos-intro 9) ok Expression: (0 16) Translation: (cos-intro 16) 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. ; drive the lesson home Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (3 2 1) Translation: ((cos-> 2) 1) ok Expression: (3 3 1) Translation: ((cos-> 3) 1) ok Expression: (3 4 1) Translation: ((cos-> 4) 1) ok Expression: (1 1 2) Translation: ((cos-< 1) 2) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (3 3 2) Translation: ((cos-> 3) 2) ok Expression: (3 4 2) Translation: ((cos-> 4) 2) ok Expression: (1 1 3) Translation: ((cos-< 1) 3) ok Expression: (1 2 3) Translation: ((cos-< 2) 3) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (3 4 3) Translation: ((cos-> 4) 3) ok Expression: (1 1 4) Translation: ((cos-< 1) 4) ok Expression: (1 2 4) Translation: ((cos-< 2) 4) ok Expression: (1 3 4) Translation: ((cos-< 3) 4) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok Expression: (3 9 2) Translation: ((cos-> 9) 2) ok Expression: (3 6 0) Translation: ((cos-> 6) 0) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (3 8 2) Translation: ((cos-> 8) 2) ok Expression: (3 4 1) Translation: ((cos-> 4) 1) ok Expression: (3 2 0) Translation: ((cos-> 2) 0) ok Expression: (3 10 1) Translation: ((cos-> 10) 1) ok Expression: (3 6 1) Translation: ((cos-> 6) 1) ok Expression: (3 9 1) Translation: ((cos-> 9) 1) ok Expression: (3 7 1) Translation: ((cos-> 7) 1) ok Expression: (1 0 1) Translation: ((cos-< 0) 1) ok Expression: (1 3 10) Translation: ((cos-< 3) 10) ok Expression: (1 4 9) Translation: ((cos-< 4) 9) ok Expression: (1 2 4) Translation: ((cos-< 2) 4) ok Expression: (1 1 7) Translation: ((cos-< 1) 7) ok Expression: (1 0 10) Translation: ((cos-< 0) 10) ok Expression: (1 0 2) Translation: ((cos-< 0) 2) ok Expression: (1 0 2) Translation: ((cos-< 0) 2) ok Expression: (1 1 3) Translation: ((cos-< 1) 3) ok Expression: (1 2 5) Translation: ((cos-< 2) 5) ok Expression: (1 1 4) Translation: ((cos-< 1) 4) ok ; switch to binary labelling for commands Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (3 2 1) Translation: ((cos-> 2) 1) ok Expression: (3 3 1) Translation: ((cos-> 3) 1) ok Expression: (3 4 1) Translation: ((cos-> 4) 1) ok Expression: (1 1 2) Translation: ((cos-< 1) 2) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (3 3 2) Translation: ((cos-> 3) 2) ok Expression: (3 4 2) Translation: ((cos-> 4) 2) ok Expression: (1 1 3) Translation: ((cos-< 1) 3) ok Expression: (1 2 3) Translation: ((cos-< 2) 3) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (3 4 3) Translation: ((cos-> 4) 3) ok Expression: (1 1 4) Translation: ((cos-< 1) 4) ok Expression: (1 2 4) Translation: ((cos-< 2) 4) ok Expression: (1 3 4) Translation: ((cos-< 3) 4) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok ; a few more random examples Expression: (1 3 4) Translation: ((cos-< 3) 4) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (1 1 5) Translation: ((cos-< 1) 5) ok Expression: (3 4 0) Translation: ((cos-> 4) 0) ok Expression: (3 5 4) Translation: ((cos-> 5) 4) ok Expression: (1 2 3) Translation: ((cos-< 2) 3) ok Expression: (3 2 1) Translation: ((cos-> 2) 1) ok Expression: (3 5 1) Translation: ((cos-> 5) 1) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (3 1 0) Translation: ((cos-> 1) 0) ok ; MATH introduce the NOT logical operator Expression: (0 4) Translation: (cos-intro 4) ok Expression: (2 0 0) Translation: ((cos-= 0) 0) ok Expression: (4 -1 1 0 0) Translation: (cos-not ((cos-< 0) 0)) ok Expression: (4 -1 3 0 0) Translation: (cos-not ((cos-> 0) 0)) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (4 -1 1 4 4) Translation: (cos-not ((cos-< 4) 4)) ok Expression: (4 -1 3 4 4) Translation: (cos-not ((cos-> 4) 4)) ok Expression: (2 6 6) Translation: ((cos-= 6) 6) ok Expression: (4 -1 1 6 6) Translation: (cos-not ((cos-< 6) 6)) ok Expression: (4 -1 3 6 6) Translation: (cos-not ((cos-> 6) 6)) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (4 -1 1 2 2) Translation: (cos-not ((cos-< 2) 2)) ok Expression: (4 -1 3 2 2) Translation: (cos-not ((cos-> 2) 2)) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (4 -1 1 3 3) Translation: (cos-not ((cos-< 3) 3)) ok Expression: (4 -1 3 3 3) Translation: (cos-not ((cos-> 3) 3)) ok Expression: (4 -1 2 3 10) Translation: (cos-not ((cos-= 3) 10)) ok Expression: (1 3 10) Translation: ((cos-< 3) 10) ok Expression: (4 -1 3 3 10) Translation: (cos-not ((cos-> 3) 10)) ok Expression: (4 -1 2 5 7) Translation: (cos-not ((cos-= 5) 7)) ok Expression: (1 5 7) Translation: ((cos-< 5) 7) ok Expression: (4 -1 3 5 7) Translation: (cos-not ((cos-> 5) 7)) ok Expression: (4 -1 2 1 2) Translation: (cos-not ((cos-= 1) 2)) ok Expression: (1 1 2) Translation: ((cos-< 1) 2) ok Expression: (4 -1 3 1 2) Translation: (cos-not ((cos-> 1) 2)) ok Expression: (4 -1 2 0 5) Translation: (cos-not ((cos-= 0) 5)) ok Expression: (1 0 5) Translation: ((cos-< 0) 5) ok Expression: (4 -1 3 0 5) Translation: (cos-not ((cos-> 0) 5)) ok Expression: (4 -1 2 8 14) Translation: (cos-not ((cos-= 8) 14)) ok Expression: (1 8 14) Translation: ((cos-< 8) 14) ok Expression: (4 -1 3 8 14) Translation: (cos-not ((cos-> 8) 14)) ok Expression: (4 -1 2 11 6) Translation: (cos-not ((cos-= 11) 6)) ok Expression: (3 11 6) Translation: ((cos-> 11) 6) ok Expression: (4 -1 1 11 6) Translation: (cos-not ((cos-< 11) 6)) ok Expression: (4 -1 2 12 2) Translation: (cos-not ((cos-= 12) 2)) ok Expression: (3 12 2) Translation: ((cos-> 12) 2) ok Expression: (4 -1 1 12 2) Translation: (cos-not ((cos-< 12) 2)) ok Expression: (4 -1 2 10 7) Translation: (cos-not ((cos-= 10) 7)) ok Expression: (3 10 7) Translation: ((cos-> 10) 7) ok Expression: (4 -1 1 10 7) Translation: (cos-not ((cos-< 10) 7)) ok Expression: (4 -1 2 4 0) Translation: (cos-not ((cos-= 4) 0)) ok Expression: (3 4 0) Translation: ((cos-> 4) 0) ok Expression: (4 -1 1 4 0) Translation: (cos-not ((cos-< 4) 0)) ok Expression: (4 -1 2 16 9) Translation: (cos-not ((cos-= 16) 9)) ok Expression: (3 16 9) Translation: ((cos-> 16) 9) ok Expression: (4 -1 1 16 9) Translation: (cos-not ((cos-< 16) 9)) ok ; MATH introduce addition Expression: (0 10) Translation: (cos-intro 10) ok Expression: (2 2 -1 10 0 2) Translation: ((cos-= 2) ((cos-+ 0) 2)) ok Expression: (2 5 -1 10 4 1) Translation: ((cos-= 5) ((cos-+ 4) 1)) ok Expression: (2 2 -1 10 2 0) Translation: ((cos-= 2) ((cos-+ 2) 0)) ok Expression: (2 4 -1 10 0 4) Translation: ((cos-= 4) ((cos-+ 0) 4)) ok Expression: (2 4 -1 10 3 1) Translation: ((cos-= 4) ((cos-+ 3) 1)) ok Expression: (2 3 -1 10 1 2) Translation: ((cos-= 3) ((cos-+ 1) 2)) ok Expression: (2 0 -1 10 0 0) Translation: ((cos-= 0) ((cos-+ 0) 0)) ok Expression: (2 4 -1 10 4 0) Translation: ((cos-= 4) ((cos-+ 4) 0)) ok Expression: (2 3 -1 10 2 1) Translation: ((cos-= 3) ((cos-+ 2) 1)) ok Expression: (2 4 -1 10 4 0) Translation: ((cos-= 4) ((cos-+ 4) 0)) ok ; MATH introduce subtraction Expression: (0 11) Translation: (cos-intro 11) ok Expression: (2 0 -1 11 2 2) Translation: ((cos-= 0) ((cos-- 2) 2)) ok Expression: (2 4 -1 11 5 1) Translation: ((cos-= 4) ((cos-- 5) 1)) ok Expression: (2 2 -1 11 2 0) Translation: ((cos-= 2) ((cos-- 2) 0)) ok Expression: (2 0 -1 11 4 4) Translation: ((cos-= 0) ((cos-- 4) 4)) ok Expression: (2 3 -1 11 4 1) Translation: ((cos-= 3) ((cos-- 4) 1)) ok Expression: (2 1 -1 11 3 2) Translation: ((cos-= 1) ((cos-- 3) 2)) ok Expression: (2 0 -1 11 0 0) Translation: ((cos-= 0) ((cos-- 0) 0)) ok Expression: (2 4 -1 11 4 0) Translation: ((cos-= 4) ((cos-- 4) 0)) ok Expression: (2 2 -1 11 3 1) Translation: ((cos-= 2) ((cos-- 3) 1)) ok Expression: (2 4 -1 11 4 0) Translation: ((cos-= 4) ((cos-- 4) 0)) ok ; MATH introduce multiplication Expression: (0 9) Translation: (cos-intro 9) ok Expression: (2 0 -1 9 0 0) Translation: ((cos-= 0) ((cos-* 0) 0)) ok Expression: (2 0 -1 9 0 1) Translation: ((cos-= 0) ((cos-* 0) 1)) ok Expression: (2 0 -1 9 0 2) Translation: ((cos-= 0) ((cos-* 0) 2)) ok Expression: (2 0 -1 9 0 3) Translation: ((cos-= 0) ((cos-* 0) 3)) ok Expression: (2 0 -1 9 1 0) Translation: ((cos-= 0) ((cos-* 1) 0)) ok Expression: (2 1 -1 9 1 1) Translation: ((cos-= 1) ((cos-* 1) 1)) ok Expression: (2 2 -1 9 1 2) Translation: ((cos-= 2) ((cos-* 1) 2)) ok Expression: (2 3 -1 9 1 3) Translation: ((cos-= 3) ((cos-* 1) 3)) ok Expression: (2 0 -1 9 2 0) Translation: ((cos-= 0) ((cos-* 2) 0)) ok Expression: (2 2 -1 9 2 1) Translation: ((cos-= 2) ((cos-* 2) 1)) ok Expression: (2 4 -1 9 2 2) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (2 6 -1 9 2 3) Translation: ((cos-= 6) ((cos-* 2) 3)) ok Expression: (2 0 -1 9 3 0) Translation: ((cos-= 0) ((cos-* 3) 0)) ok Expression: (2 3 -1 9 3 1) Translation: ((cos-= 3) ((cos-* 3) 1)) ok Expression: (2 6 -1 9 3 2) Translation: ((cos-= 6) ((cos-* 3) 2)) ok Expression: (2 9 -1 9 3 3) Translation: ((cos-= 9) ((cos-* 3) 3)) ok Expression: (2 0 -1 9 0 1) Translation: ((cos-= 0) ((cos-* 0) 1)) ok Expression: (2 3 -1 9 3 1) Translation: ((cos-= 3) ((cos-* 3) 1)) ok Expression: (2 0 -1 9 2 0) Translation: ((cos-= 0) ((cos-* 2) 0)) ok Expression: (2 0 -1 9 0 3) Translation: ((cos-= 0) ((cos-* 0) 3)) ok Expression: (2 3 -1 9 3 1) Translation: ((cos-= 3) ((cos-* 3) 1)) ok Expression: (2 2 -1 9 1 2) Translation: ((cos-= 2) ((cos-* 1) 2)) ok Expression: (2 0 -1 9 0 0) Translation: ((cos-= 0) ((cos-* 0) 0)) ok Expression: (2 0 -1 9 3 0) Translation: ((cos-= 0) ((cos-* 3) 0)) ok Expression: (2 0 -1 9 2 0) Translation: ((cos-= 0) ((cos-* 2) 0)) ok Expression: (2 0 -1 9 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 should be delayed? Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (2 4 4) Translation: ((cos-= 4) 4) ok Expression: (2 8 8) Translation: ((cos-= 8) 8) ok Expression: (2 16 16) Translation: ((cos-= 16) 16) ok 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 0 0) Translation: ((cos-= 0) 0) ok Expression: (2 7 7) Translation: ((cos-= 7) 7) ok Expression: (2 13 13) Translation: ((cos-= 13) 13) ok Expression: (2 5 5) Translation: ((cos-= 5) 5) ok Expression: (2 9 9) Translation: ((cos-= 9) 9) ok Expression: (2 0 0) Translation: ((cos-= 0) 0) ok Expression: (2 3 3) Translation: ((cos-= 3) 3) ok Expression: (2 15 15) Translation: ((cos-= 15) 15) ok Expression: (2 12 12) Translation: ((cos-= 12) 12) ok Expression: (2 5 5) Translation: ((cos-= 5) 5) ok Expression: (2 5 5) Translation: ((cos-= 5) 5) ok Expression: (2 9 9) Translation: ((cos-= 9) 9) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (2 1 1) Translation: ((cos-= 1) 1) ok Expression: (2 15 15) Translation: ((cos-= 15) 15) ok Expression: (2 2 2) Translation: ((cos-= 2) 2) ok Expression: (2 5 -1 10 4 1) Translation: ((cos-= 5) ((cos-+ 4) 1)) ok Expression: (2 5 -1 10 4 1) Translation: ((cos-= 5) ((cos-+ 4) 1)) ok Expression: (2 7 -1 10 6 1) Translation: ((cos-= 7) ((cos-+ 6) 1)) ok Expression: (2 7 -1 10 6 1) Translation: ((cos-= 7) ((cos-+ 6) 1)) ok Expression: (2 5 -1 10 4 1) Translation: ((cos-= 5) ((cos-+ 4) 1)) ok Expression: (2 5 -1 10 4 1) Translation: ((cos-= 5) ((cos-+ 4) 1)) ok Expression: (2 4 -1 10 0 4) Translation: ((cos-= 4) ((cos-+ 0) 4)) ok Expression: (2 4 -1 10 0 4) Translation: ((cos-= 4) ((cos-+ 0) 4)) ok Expression: (2 9 -1 10 7 2) Translation: ((cos-= 9) ((cos-+ 7) 2)) ok Expression: (2 9 -1 10 7 2) Translation: ((cos-= 9) ((cos-+ 7) 2)) ok Expression: (2 11 -1 10 7 4) Translation: ((cos-= 11) ((cos-+ 7) 4)) ok Expression: (2 11 -1 10 7 4) Translation: ((cos-= 11) ((cos-+ 7) 4)) ok Expression: (2 10 -1 10 3 7) Translation: ((cos-= 10) ((cos-+ 3) 7)) ok Expression: (2 10 -1 10 3 7) Translation: ((cos-= 10) ((cos-+ 3) 7)) ok Expression: (2 6 -1 10 5 1) Translation: ((cos-= 6) ((cos-+ 5) 1)) ok Expression: (2 6 -1 10 5 1) Translation: ((cos-= 6) ((cos-+ 5) 1)) ok Expression: (2 4 -1 9 4 1) Translation: ((cos-= 4) ((cos-* 4) 1)) ok Expression: (2 4 -1 9 4 1) Translation: ((cos-= 4) ((cos-* 4) 1)) ok Expression: (2 4 -1 9 1 4) Translation: ((cos-= 4) ((cos-* 1) 4)) ok Expression: (2 4 -1 9 1 4) Translation: ((cos-= 4) ((cos-* 1) 4)) ok Expression: (2 4 -1 9 1 4) Translation: ((cos-= 4) ((cos-* 1) 4)) ok Expression: (2 4 -1 9 1 4) Translation: ((cos-= 4) ((cos-* 1) 4)) ok Expression: (2 6 -1 9 2 3) Translation: ((cos-= 6) ((cos-* 2) 3)) ok Expression: (2 6 -1 9 2 3) Translation: ((cos-= 6) ((cos-* 2) 3)) ok Expression: (2 6 -1 9 2 3) Translation: ((cos-= 6) ((cos-* 2) 3)) ok Expression: (2 6 -1 9 2 3) Translation: ((cos-= 6) ((cos-* 2) 3)) ok Expression: (2 4 -1 9 2 2) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (2 4 -1 9 2 2) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (2 9 -1 9 3 3) Translation: ((cos-= 9) ((cos-* 3) 3)) ok Expression: (2 9 -1 9 3 3) Translation: ((cos-= 9) ((cos-* 3) 3)) ok Expression: (2 16 -1 9 4 4) Translation: ((cos-= 16) ((cos-* 4) 4)) ok Expression: (2 16 -1 9 4 4) Translation: ((cos-= 16) ((cos-* 4) 4)) ok ; MATH show local assignment Expression: (14 20 0 -1 2 (20) 0) Translation: ((lambda (cos-exists) ((cos-= cos-exists) 0)) 0) ok Expression: (14 20 1 -1 2 (20) 1) Translation: ((lambda (cos-exists) ((cos-= cos-exists) 1)) 1) ok Expression: (14 20 2 -1 2 (20) 2) Translation: ((lambda (cos-exists) ((cos-= cos-exists) 2)) 2) ok Expression: (14 21 0 -1 2 (21) 0) Translation: ((lambda (cos-cons) ((cos-= cos-cons) 0)) 0) ok Expression: (14 21 1 -1 2 (21) 1) Translation: ((lambda (cos-cons) ((cos-= cos-cons) 1)) 1) ok Expression: (14 21 2 -1 2 (21) 2) Translation: ((lambda (cos-cons) ((cos-= cos-cons) 2)) 2) ok Expression: (14 22 0 -1 2 (22) 0) Translation: ((lambda (cos-car) ((cos-= cos-car) 0)) 0) ok Expression: (14 22 1 -1 2 (22) 1) Translation: ((lambda (cos-car) ((cos-= cos-car) 1)) 1) ok Expression: (14 22 2 -1 2 (22) 2) Translation: ((lambda (cos-car) ((cos-= cos-car) 2)) 2) ok Expression: (2 0 (14 20 0 (20))) Translation: ((cos-= 0) ((lambda (cos-exists) cos-exists) 0)) ok Expression: (2 0 (14 20 0 -1 20)) Translation: ((cos-= 0) ((lambda (cos-exists) cos-exists) 0)) ok Expression: (2 0 -1 14 20 0 -1 20) Translation: ((cos-= 0) ((lambda (cos-exists) cos-exists) 0)) ok Expression: (2 20 -1 14 20 0 20) Translation: ((cos-= 20) ((lambda (cos-exists) 20) 0)) ok Expression: (2 5 -1 14 20 0 5) Translation: ((cos-= 5) ((lambda (cos-exists) 5) 0)) ok Expression: (2 5 -1 14 20 0 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-exists) ((lambda (cos-cdr) cos-cdr) 5)) 0)) ok Expression: (2 23 -1 14 20 0 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-exists) ((lambda (cos-cdr) 23) 5)) 0)) ok Expression: (2 1 (14 20 1 (20))) Translation: ((cos-= 1) ((lambda (cos-exists) cos-exists) 1)) ok Expression: (2 1 (14 20 1 -1 20)) Translation: ((cos-= 1) ((lambda (cos-exists) cos-exists) 1)) ok Expression: (2 1 -1 14 20 1 -1 20) Translation: ((cos-= 1) ((lambda (cos-exists) cos-exists) 1)) ok Expression: (2 20 -1 14 20 1 20) Translation: ((cos-= 20) ((lambda (cos-exists) 20) 1)) ok Expression: (2 5 -1 14 20 1 5) Translation: ((cos-= 5) ((lambda (cos-exists) 5) 1)) ok Expression: (2 5 -1 14 20 1 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-exists) ((lambda (cos-cdr) cos-cdr) 5)) 1)) ok Expression: (2 23 -1 14 20 1 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-exists) ((lambda (cos-cdr) 23) 5)) 1)) ok Expression: (2 2 (14 20 2 (20))) Translation: ((cos-= 2) ((lambda (cos-exists) cos-exists) 2)) ok Expression: (2 2 (14 20 2 -1 20)) Translation: ((cos-= 2) ((lambda (cos-exists) cos-exists) 2)) ok Expression: (2 2 -1 14 20 2 -1 20) Translation: ((cos-= 2) ((lambda (cos-exists) cos-exists) 2)) ok Expression: (2 20 -1 14 20 2 20) Translation: ((cos-= 20) ((lambda (cos-exists) 20) 2)) ok Expression: (2 5 -1 14 20 2 5) Translation: ((cos-= 5) ((lambda (cos-exists) 5) 2)) ok Expression: (2 5 -1 14 20 2 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-exists) ((lambda (cos-cdr) cos-cdr) 5)) 2)) ok Expression: (2 23 -1 14 20 2 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-exists) ((lambda (cos-cdr) 23) 5)) 2)) ok Expression: (2 0 (14 21 0 (21))) Translation: ((cos-= 0) ((lambda (cos-cons) cos-cons) 0)) ok Expression: (2 0 (14 21 0 -1 21)) Translation: ((cos-= 0) ((lambda (cos-cons) cos-cons) 0)) ok Expression: (2 0 -1 14 21 0 -1 21) Translation: ((cos-= 0) ((lambda (cos-cons) cos-cons) 0)) ok Expression: (2 21 -1 14 21 0 21) Translation: ((cos-= 21) ((lambda (cos-cons) 21) 0)) ok Expression: (2 5 -1 14 21 0 5) Translation: ((cos-= 5) ((lambda (cos-cons) 5) 0)) ok Expression: (2 5 -1 14 21 0 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-cons) ((lambda (cos-cdr) cos-cdr) 5)) 0)) ok Expression: (2 23 -1 14 21 0 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-cons) ((lambda (cos-cdr) 23) 5)) 0)) ok Expression: (2 1 (14 21 1 (21))) Translation: ((cos-= 1) ((lambda (cos-cons) cos-cons) 1)) ok Expression: (2 1 (14 21 1 -1 21)) Translation: ((cos-= 1) ((lambda (cos-cons) cos-cons) 1)) ok Expression: (2 1 -1 14 21 1 -1 21) Translation: ((cos-= 1) ((lambda (cos-cons) cos-cons) 1)) ok Expression: (2 21 -1 14 21 1 21) Translation: ((cos-= 21) ((lambda (cos-cons) 21) 1)) ok Expression: (2 5 -1 14 21 1 5) Translation: ((cos-= 5) ((lambda (cos-cons) 5) 1)) ok Expression: (2 5 -1 14 21 1 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-cons) ((lambda (cos-cdr) cos-cdr) 5)) 1)) ok Expression: (2 23 -1 14 21 1 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-cons) ((lambda (cos-cdr) 23) 5)) 1)) ok Expression: (2 2 (14 21 2 (21))) Translation: ((cos-= 2) ((lambda (cos-cons) cos-cons) 2)) ok Expression: (2 2 (14 21 2 -1 21)) Translation: ((cos-= 2) ((lambda (cos-cons) cos-cons) 2)) ok Expression: (2 2 -1 14 21 2 -1 21) Translation: ((cos-= 2) ((lambda (cos-cons) cos-cons) 2)) ok Expression: (2 21 -1 14 21 2 21) Translation: ((cos-= 21) ((lambda (cos-cons) 21) 2)) ok Expression: (2 5 -1 14 21 2 5) Translation: ((cos-= 5) ((lambda (cos-cons) 5) 2)) ok Expression: (2 5 -1 14 21 2 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-cons) ((lambda (cos-cdr) cos-cdr) 5)) 2)) ok Expression: (2 23 -1 14 21 2 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-cons) ((lambda (cos-cdr) 23) 5)) 2)) ok Expression: (2 0 (14 22 0 (22))) Translation: ((cos-= 0) ((lambda (cos-car) cos-car) 0)) ok Expression: (2 0 (14 22 0 -1 22)) Translation: ((cos-= 0) ((lambda (cos-car) cos-car) 0)) ok Expression: (2 0 -1 14 22 0 -1 22) Translation: ((cos-= 0) ((lambda (cos-car) cos-car) 0)) ok Expression: (2 22 -1 14 22 0 22) Translation: ((cos-= 22) ((lambda (cos-car) 22) 0)) ok Expression: (2 5 -1 14 22 0 5) Translation: ((cos-= 5) ((lambda (cos-car) 5) 0)) ok Expression: (2 5 -1 14 22 0 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-car) ((lambda (cos-cdr) cos-cdr) 5)) 0)) ok Expression: (2 23 -1 14 22 0 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-car) ((lambda (cos-cdr) 23) 5)) 0)) ok Expression: (2 1 (14 22 1 (22))) Translation: ((cos-= 1) ((lambda (cos-car) cos-car) 1)) ok Expression: (2 1 (14 22 1 -1 22)) Translation: ((cos-= 1) ((lambda (cos-car) cos-car) 1)) ok Expression: (2 1 -1 14 22 1 -1 22) Translation: ((cos-= 1) ((lambda (cos-car) cos-car) 1)) ok Expression: (2 22 -1 14 22 1 22) Translation: ((cos-= 22) ((lambda (cos-car) 22) 1)) ok Expression: (2 5 -1 14 22 1 5) Translation: ((cos-= 5) ((lambda (cos-car) 5) 1)) ok Expression: (2 5 -1 14 22 1 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-car) ((lambda (cos-cdr) cos-cdr) 5)) 1)) ok Expression: (2 23 -1 14 22 1 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-car) ((lambda (cos-cdr) 23) 5)) 1)) ok Expression: (2 2 (14 22 2 (22))) Translation: ((cos-= 2) ((lambda (cos-car) cos-car) 2)) ok Expression: (2 2 (14 22 2 -1 22)) Translation: ((cos-= 2) ((lambda (cos-car) cos-car) 2)) ok Expression: (2 2 -1 14 22 2 -1 22) Translation: ((cos-= 2) ((lambda (cos-car) cos-car) 2)) ok Expression: (2 22 -1 14 22 2 22) Translation: ((cos-= 22) ((lambda (cos-car) 22) 2)) ok Expression: (2 5 -1 14 22 2 5) Translation: ((cos-= 5) ((lambda (cos-car) 5) 2)) ok Expression: (2 5 -1 14 22 2 -1 14 23 5 -1 23) Translation: ((cos-= 5) ((lambda (cos-car) ((lambda (cos-cdr) cos-cdr) 5)) 2)) ok Expression: (2 23 -1 14 22 2 -1 14 23 5 23) Translation: ((cos-= 23) ((lambda (cos-car) ((lambda (cos-cdr) 23) 5)) 2)) ok ; Now for functions. Expression: (14 20 (12 28 5) -1 2 5 (20 2)) Translation: ((lambda (cos-exists) ((cos-= 5) (cos-exists 2))) (lambda (cos-set!) 5)) ok Expression: (14 32 (12 24 5) -1 2 5 (32 3)) Translation: ((lambda (cos-undefined) ((cos-= 5) (cos-undefined 3))) (lambda (cos-number?) 5)) ok Expression: (14 28 (12 29 6) -1 2 6 (28 2)) Translation: ((lambda (cos-set!) ((cos-= 6) (cos-set! 2))) (lambda (cos-get!) 6)) ok Expression: (14 30 (12 32 6) -1 2 6 (30 3)) Translation: ((lambda (cos-all) ((cos-= 6) (cos-all 3))) (lambda (cos-undefined) 6)) ok Expression: (14 25 (12 38 (38)) -1 2 2 (25 2)) Translation: ((lambda (cos-translate) ((cos-= 2) (cos-translate 2))) (lambda (cos-38) cos-38)) ok Expression: (14 23 (12 30 (30)) -1 2 3 (23 3)) Translation: ((lambda (cos-cdr) ((cos-= 3) (cos-cdr 3))) (lambda (cos-all) cos-all)) ok Expression: (14 25 (12 33 (33)) -1 2 2 (25 2)) Translation: ((lambda (cos-translate) ((cos-= 2) (cos-translate 2))) (lambda (cos-!) cos-!)) ok Expression: (14 29 (12 21 (21)) -1 2 3 (29 3)) Translation: ((lambda (cos-get!) ((cos-= 3) (cos-get! 3))) (lambda (cos-cons) cos-cons)) ok Expression: (14 25 (12 32 -1 10 (32) 1) -1 2 3 (25 2)) Translation: ((lambda (cos-translate) ((cos-= 3) (cos-translate 2))) (lambda (cos-undefined) ((cos-+ cos-undefined) 1))) ok Expression: (14 31 (12 38 -1 10 (38) 1) -1 2 4 (31 3)) Translation: ((lambda (cos-natural-set) ((cos-= 4) (cos-natural-set 3))) (lambda (cos-38) ((cos-+ cos-38) 1))) ok Expression: (14 35 (12 33 -1 10 (33) 1) -1 2 3 (35 2)) Translation: ((lambda (cos-primer) ((cos-= 3) (cos-primer 2))) (lambda (cos-!) ((cos-+ cos-!) 1))) ok Expression: (14 32 (12 26 -1 10 (26) 1) -1 2 4 (32 3)) Translation: ((lambda (cos-undefined) ((cos-= 4) (cos-undefined 3))) (lambda (cos-lambda) ((cos-+ cos-lambda) 1))) ok Expression: (14 36 (12 37 -1 10 (37) 6) -1 2 (36 6) 12) Translation: ((lambda (cos-36) ((cos-= (cos-36 6)) 12)) (lambda (cos-37) ((cos-+ cos-37) 6))) ok Expression: (2 ((12 37 -1 10 (37) 6) 6) 12) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 6)) 6)) 12) ok Expression: (14 36 (12 37 -1 10 (37) 4) -1 2 (36 0) 4) Translation: ((lambda (cos-36) ((cos-= (cos-36 0)) 4)) (lambda (cos-37) ((cos-+ cos-37) 4))) ok Expression: (2 ((12 37 -1 10 (37) 4) 0) 4) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 4)) 0)) 4) ok Expression: (14 36 (12 37 -1 10 (37) 12) -1 2 (36 0) 12) Translation: ((lambda (cos-36) ((cos-= (cos-36 0)) 12)) (lambda (cos-37) ((cos-+ cos-37) 12))) ok Expression: (2 ((12 37 -1 10 (37) 12) 0) 12) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 12)) 0)) 12) ok Expression: (14 36 (12 37 -1 10 (37) 15) -1 2 (36 2) 17) Translation: ((lambda (cos-36) ((cos-= (cos-36 2)) 17)) (lambda (cos-37) ((cos-+ cos-37) 15))) ok Expression: (2 ((12 37 -1 10 (37) 15) 2) 17) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 15)) 2)) 17) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 13 4) 53) Translation: ((lambda (cos-38) ((cos-= ((cos-38 13) 4)) 53)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 13) 4) 53) Translation: ((lambda (cos-38) ((cos-= ((cos-38 13) 4)) 53)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 13 4) 53) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 13) 4)) 53) ok Expression: (2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 13) 4) 53) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 13) 4)) 53) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 5 6) 31) Translation: ((lambda (cos-38) ((cos-= ((cos-38 5) 6)) 31)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 5) 6) 31) Translation: ((lambda (cos-38) ((cos-= ((cos-38 5) 6)) 31)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 5 6) 31) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 5) 6)) 31) ok Expression: (2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 5) 6) 31) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 5) 6)) 31) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 7 8) 57) Translation: ((lambda (cos-38) ((cos-= ((cos-38 7) 8)) 57)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 7) 8) 57) Translation: ((lambda (cos-38) ((cos-= ((cos-38 7) 8)) 57)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 7 8) 57) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 7) 8)) 57) ok Expression: (2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 7) 8) 57) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 7) 8)) 57) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 8 2) 17) Translation: ((lambda (cos-38) ((cos-= ((cos-38 8) 2)) 17)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 8) 2) 17) Translation: ((lambda (cos-38) ((cos-= ((cos-38 8) 2)) 17)) (lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36))))) ok Expression: (2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 8 2) 17) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 8) 2)) 17) ok Expression: (2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 8) 2) 17) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-+ 1) ((cos-* cos-37) cos-36)))) 8) 2)) 17) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 15 14 29) Translation: ((lambda (cos-39) (((cos-39 15) 14) 29)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 5 8 13) Translation: ((lambda (cos-39) (((cos-39 5) 8) 13)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 12 15 27) Translation: ((lambda (cos-39) (((cos-39 12) 15) 27)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 14 14 28) Translation: ((lambda (cos-39) (((cos-39 14) 14) 28)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 8 0 8) Translation: ((lambda (cos-39) (((cos-39 8) 0) 8)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 15 9 24) Translation: ((lambda (cos-39) (((cos-39 15) 9) 24)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 11 15 26) Translation: ((lambda (cos-39) (((cos-39 11) 15) 26)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok Expression: (14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 5 7 12) Translation: ((lambda (cos-39) (((cos-39 5) 7) 12)) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-= cos-38) ((cos-+ cos-37) cos-36)))))) ok ; MATH demonstrate existence of memory Expression: (13 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: (14 41 (12 37 -1 9 (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: (14 41 (12 37 -1 9 (37) (37)) -1 2 16 (41 4)) Translation: ((lambda (cos-41) ((cos-= 16) (cos-41 4))) (lambda (cos-37) ((cos-* cos-37) cos-37))) ok Expression: (14 41 (12 37 -1 9 (37) (37)) -1 2 64 (41 8)) Translation: ((lambda (cos-41) ((cos-= 64) (cos-41 8))) (lambda (cos-37) ((cos-* cos-37) cos-37))) ok Expression: (14 41 (12 37 -1 9 (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: (13 41 -1 12 37 -1 9 (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 0) 0) Translation: ((cos-= (cos-41 0)) 0) ok Expression: (2 (41 1) 1) Translation: ((cos-= (cos-41 1)) 1) ok Expression: (2 (41 9) 81) Translation: ((cos-= (cos-41 9)) 81) ok Expression: (13 42 -1 12 37 -1 10 (37) 1) Translation: (begin (define cos-42 (lambda (cos-37) ((cos-+ cos-37) 1))) 1) ok Expression: (2 (42 7) 8) Translation: ((cos-= (cos-42 7)) 8) ok Expression: (2 (42 3) 4) Translation: ((cos-= (cos-42 3)) 4) ok Expression: (2 (42 3) 4) Translation: ((cos-= (cos-42 3)) 4) ok Expression: (2 (42 5) 6) Translation: ((cos-= (cos-42 5)) 6) ok ; This could all be simplified or removed ; once the handling of true / false stabilizes ; MATH use equality for truth values Expression: (2 (2 2 2) (3 4 2)) Translation: ((cos-= ((cos-= 2) 2)) ((cos-> 4) 2)) ok Expression: (2 (2 1 1) (3 6 4)) Translation: ((cos-= ((cos-= 1) 1)) ((cos-> 6) 4)) ok Expression: (2 (1 3 4) (2 5 5)) Translation: ((cos-= ((cos-< 3) 4)) ((cos-= 5) 5)) ok Expression: (2 (2 3 3) (2 4 4)) Translation: ((cos-= ((cos-= 3) 3)) ((cos-= 4) 4)) ok Expression: (2 (2 3 3) (2 0 0)) Translation: ((cos-= ((cos-= 3) 3)) ((cos-= 0) 0)) ok Expression: (2 (1 6 2) (1 4 2)) Translation: ((cos-= ((cos-< 6) 2)) ((cos-< 4) 2)) ok Expression: (2 (1 4 1) (3 0 0)) Translation: ((cos-= ((cos-< 4) 1)) ((cos-> 0) 0)) ok Expression: (2 (3 0 5) (2 3 2)) Translation: ((cos-= ((cos-> 0) 5)) ((cos-= 3) 2)) ok Expression: (2 (3 2 3) (3 4 5)) Translation: ((cos-= ((cos-> 2) 3)) ((cos-> 4) 5)) ok Expression: (2 (3 2 6) (3 1 6)) Translation: ((cos-= ((cos-> 2) 6)) ((cos-> 1) 6)) ok Expression: (4 -1 2 (3 2 3) (1 1 4)) Translation: (cos-not ((cos-= ((cos-> 2) 3)) ((cos-< 1) 4))) ok Expression: (4 -1 2 (2 4 3) (1 1 2)) Translation: (cos-not ((cos-= ((cos-= 4) 3)) ((cos-< 1) 2))) ok Expression: (4 -1 2 (2 5 4) (1 2 4)) Translation: (cos-not ((cos-= ((cos-= 5) 4)) ((cos-< 2) 4))) ok Expression: (4 -1 2 (3 4 6) (2 3 3)) Translation: (cos-not ((cos-= ((cos-> 4) 6)) ((cos-= 3) 3))) ok Expression: (4 -1 2 (2 3 1) (3 4 1)) Translation: (cos-not ((cos-= ((cos-= 3) 1)) ((cos-> 4) 1))) ok Expression: (4 -1 2 (1 3 6) (1 6 2)) Translation: (cos-not ((cos-= ((cos-< 3) 6)) ((cos-< 6) 2))) ok Expression: (4 -1 2 (2 2 2) (3 2 5)) Translation: (cos-not ((cos-= ((cos-= 2) 2)) ((cos-> 2) 5))) ok Expression: (4 -1 2 (2 5 5) (1 6 2)) Translation: (cos-not ((cos-= ((cos-= 5) 5)) ((cos-< 6) 2))) ok Expression: (4 -1 2 (2 3 3) (1 4 3)) Translation: (cos-not ((cos-= ((cos-= 3) 3)) ((cos-< 4) 3))) ok Expression: (4 -1 2 (3 5 2) (1 5 4)) Translation: (cos-not ((cos-= ((cos-> 5) 2)) ((cos-< 5) 4))) ok Expression: (13 43 1) Translation: (begin (define cos-43 1) 1) ok Expression: (13 44 0) Translation: (begin (define cos-44 0) 1) ok Expression: (2 (43) (2 1 1)) Translation: ((cos-= cos-43) ((cos-= 1) 1)) ok Expression: (2 (43) (2 0 0)) Translation: ((cos-= cos-43) ((cos-= 0) 0)) ok Expression: (2 (43) (3 7 5)) Translation: ((cos-= cos-43) ((cos-> 7) 5)) ok Expression: (2 (43) (2 5 5)) Translation: ((cos-= cos-43) ((cos-= 5) 5)) ok Expression: (2 (43) (2 4 4)) Translation: ((cos-= cos-43) ((cos-= 4) 4)) ok Expression: (2 (1 5 6) (43)) Translation: ((cos-= ((cos-< 5) 6)) cos-43) ok Expression: (2 (2 5 5) (43)) Translation: ((cos-= ((cos-= 5) 5)) cos-43) ok Expression: (2 (3 7 5) (43)) Translation: ((cos-= ((cos-> 7) 5)) cos-43) ok Expression: (2 (2 2 2) (43)) Translation: ((cos-= ((cos-= 2) 2)) cos-43) ok Expression: (2 (1 3 6) (43)) Translation: ((cos-= ((cos-< 3) 6)) cos-43) ok Expression: (2 (44) (1 5 0)) Translation: ((cos-= cos-44) ((cos-< 5) 0)) ok Expression: (2 (44) (2 2 3)) Translation: ((cos-= cos-44) ((cos-= 2) 3)) ok Expression: (2 (44) (1 6 2)) Translation: ((cos-= cos-44) ((cos-< 6) 2)) ok Expression: (2 (44) (3 1 2)) Translation: ((cos-= cos-44) ((cos-> 1) 2)) ok Expression: (2 (44) (3 2 5)) Translation: ((cos-= cos-44) ((cos-> 2) 5)) ok Expression: (2 (2 4 3) (44)) Translation: ((cos-= ((cos-= 4) 3)) cos-44) ok Expression: (2 (2 0 1) (44)) Translation: ((cos-= ((cos-= 0) 1)) cos-44) ok Expression: (2 (1 6 3) (44)) Translation: ((cos-= ((cos-< 6) 3)) cos-44) ok Expression: (2 (2 3 0) (44)) Translation: ((cos-= ((cos-= 3) 0)) cos-44) ok Expression: (2 (2 4 3) (44)) Translation: ((cos-= ((cos-= 4) 3)) cos-44) ok Expression: (2 (43) (43)) Translation: ((cos-= cos-43) cos-43) ok Expression: (2 (44) (44)) Translation: ((cos-= cos-44) cos-44) ok Expression: (4 -1 2 (43) (44)) Translation: (cos-not ((cos-= cos-43) cos-44)) ok Expression: (4 -1 2 (44) (43)) Translation: (cos-not ((cos-= cos-44) cos-43)) ok ; MATH show mechanisms for branching Expression: (0 15) Translation: (cos-intro 15) ok Expression: (2 28 -1 15 (1 3 0) 24 28) Translation: ((cos-= 28) (if (tish ((cos-< 3) 0)) 24 28)) ok Expression: (2 27 -1 15 (3 2 4) 29 27) Translation: ((cos-= 27) (if (tish ((cos-> 2) 4)) 29 27)) ok Expression: (2 29 -1 15 (2 3 1) 20 29) Translation: ((cos-= 29) (if (tish ((cos-= 3) 1)) 20 29)) ok Expression: (2 21 -1 15 (2 0 0) 21 26) Translation: ((cos-= 21) (if (tish ((cos-= 0) 0)) 21 26)) ok Expression: (2 29 -1 15 (3 5 3) 29 23) Translation: ((cos-= 29) (if (tish ((cos-> 5) 3)) 29 23)) ok Expression: (2 26 -1 15 (3 1 0) 26 22) Translation: ((cos-= 26) (if (tish ((cos-> 1) 0)) 26 22)) ok Expression: (2 21 -1 15 (2 3 3) 21 27) Translation: ((cos-= 21) (if (tish ((cos-= 3) 3)) 21 27)) ok Expression: (2 23 -1 15 (3 4 4) 25 23) Translation: ((cos-= 23) (if (tish ((cos-> 4) 4)) 25 23)) ok Expression: (13 45 -1 12 37 -1 12 36 -1 15 (3 (37) (36)) (37) (36)) Translation: (begin (define cos-45 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-> cos-37) cos-36)) cos-37 cos-36)))) 1) ok Expression: (13 46 -1 12 37 -1 12 36 -1 15 (1 (37) (36)) (37) (36)) Translation: (begin (define cos-46 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-< cos-37) cos-36)) cos-37 cos-36)))) 1) ok Expression: (2 0 -1 45 0 0) Translation: ((cos-= 0) ((cos-45 0) 0)) ok Expression: (2 0 -1 46 0 0) Translation: ((cos-= 0) ((cos-46 0) 0)) ok Expression: (2 1 -1 45 0 1) Translation: ((cos-= 1) ((cos-45 0) 1)) ok Expression: (2 0 -1 46 0 1) Translation: ((cos-= 0) ((cos-46 0) 1)) ok Expression: (2 2 -1 45 0 2) Translation: ((cos-= 2) ((cos-45 0) 2)) ok Expression: (2 0 -1 46 0 2) Translation: ((cos-= 0) ((cos-46 0) 2)) ok Expression: (2 1 -1 45 1 0) Translation: ((cos-= 1) ((cos-45 1) 0)) ok Expression: (2 0 -1 46 1 0) Translation: ((cos-= 0) ((cos-46 1) 0)) ok Expression: (2 1 -1 45 1 1) Translation: ((cos-= 1) ((cos-45 1) 1)) ok Expression: (2 1 -1 46 1 1) Translation: ((cos-= 1) ((cos-46 1) 1)) ok Expression: (2 2 -1 45 1 2) Translation: ((cos-= 2) ((cos-45 1) 2)) ok Expression: (2 1 -1 46 1 2) Translation: ((cos-= 1) ((cos-46 1) 2)) ok Expression: (2 2 -1 45 2 0) Translation: ((cos-= 2) ((cos-45 2) 0)) ok Expression: (2 0 -1 46 2 0) Translation: ((cos-= 0) ((cos-46 2) 0)) ok Expression: (2 2 -1 45 2 1) Translation: ((cos-= 2) ((cos-45 2) 1)) ok Expression: (2 1 -1 46 2 1) Translation: ((cos-= 1) ((cos-46 2) 1)) ok Expression: (2 2 -1 45 2 2) Translation: ((cos-= 2) ((cos-45 2) 2)) ok Expression: (2 2 -1 46 2 2) Translation: ((cos-= 2) ((cos-46 2) 2)) ok ; need to be careful about whether 'if' is eager or lazy ; here we suggest that it is lazy Expression: (13 47 -1 12 48 -1 15 (1 (48) 1) 1 -1 9 (48) -1 47 -1 11 (48) 1) Translation: (begin (define cos-47 (lambda (cos-48) (if (tish ((cos-< cos-48) 1)) 1 ((cos-* cos-48) (cos-47 ((cos-- cos-48) 1)))))) 1) ok Expression: (2 1 -1 47 1) Translation: ((cos-= 1) (cos-47 1)) ok Expression: (2 2 -1 47 2) Translation: ((cos-= 2) (cos-47 2)) ok Expression: (2 6 -1 47 3) Translation: ((cos-= 6) (cos-47 3)) ok Expression: (2 24 -1 47 4) Translation: ((cos-= 24) (cos-47 4)) ok Expression: (2 120 -1 47 5) Translation: ((cos-= 120) (cos-47 5)) ok ; MATH introduce the AND logical operator Expression: (0 5) Translation: (cos-intro 5) ok Expression: (13 5 (12 37 -1 12 36 -1 15 (37) (15 (36) (43) (44)) (44))) Translation: (begin (define cos-and (lambda (cos-37) (lambda (cos-36) (if (tish cos-37) (if (tish cos-36) cos-43 cos-44) cos-44)))) 1) ok Expression: (5 (2 2 2) (3 4 2)) Translation: ((cos-and ((cos-= 2) 2)) ((cos-> 4) 2)) ok Expression: (5 (2 1 1) (3 6 4)) Translation: ((cos-and ((cos-= 1) 1)) ((cos-> 6) 4)) ok Expression: (5 (1 3 4) (2 5 5)) Translation: ((cos-and ((cos-< 3) 4)) ((cos-= 5) 5)) ok Expression: (5 (2 3 3) (2 4 4)) Translation: ((cos-and ((cos-= 3) 3)) ((cos-= 4) 4)) ok Expression: (5 (2 3 3) (2 0 0)) Translation: ((cos-and ((cos-= 3) 3)) ((cos-= 0) 0)) ok Expression: (5 (1 5 7) (3 5 3)) Translation: ((cos-and ((cos-< 5) 7)) ((cos-> 5) 3)) ok Expression: (5 (3 5 4) (3 1 0)) Translation: ((cos-and ((cos-> 5) 4)) ((cos-> 1) 0)) ok Expression: (5 (3 3 0) (2 3 3)) Translation: ((cos-and ((cos-> 3) 0)) ((cos-= 3) 3)) ok Expression: (5 (1 3 4) (1 3 6)) Translation: ((cos-and ((cos-< 3) 4)) ((cos-< 3) 6)) ok Expression: (5 (3 5 4) (3 5 4)) Translation: ((cos-and ((cos-> 5) 4)) ((cos-> 5) 4)) ok Expression: (4 -1 5 (3 6 4) (1 3 1)) Translation: (cos-not ((cos-and ((cos-> 6) 4)) ((cos-< 3) 1))) ok Expression: (4 -1 5 (3 3 1) (3 3 3)) Translation: (cos-not ((cos-and ((cos-> 3) 1)) ((cos-> 3) 3))) ok Expression: (4 -1 5 (2 0 0) (2 5 4)) Translation: (cos-not ((cos-and ((cos-= 0) 0)) ((cos-= 5) 4))) ok Expression: (4 -1 5 (1 2 4) (3 4 6)) Translation: (cos-not ((cos-and ((cos-< 2) 4)) ((cos-> 4) 6))) ok Expression: (4 -1 5 (2 3 3) (2 3 1)) Translation: (cos-not ((cos-and ((cos-= 3) 3)) ((cos-= 3) 1))) ok Expression: (4 -1 5 (3 1 5) (1 3 6)) Translation: (cos-not ((cos-and ((cos-> 1) 5)) ((cos-< 3) 6))) ok Expression: (4 -1 5 (1 6 2) (2 2 2)) Translation: (cos-not ((cos-and ((cos-< 6) 2)) ((cos-= 2) 2))) ok Expression: (4 -1 5 (3 2 5) (2 5 5)) Translation: (cos-not ((cos-and ((cos-> 2) 5)) ((cos-= 5) 5))) ok Expression: (4 -1 5 (1 6 2) (2 3 3)) Translation: (cos-not ((cos-and ((cos-< 6) 2)) ((cos-= 3) 3))) ok Expression: (4 -1 5 (1 4 3) (3 5 2)) Translation: (cos-not ((cos-and ((cos-< 4) 3)) ((cos-> 5) 2))) ok Expression: (4 -1 5 (1 5 4) (2 1 2)) Translation: (cos-not ((cos-and ((cos-< 5) 4)) ((cos-= 1) 2))) ok Expression: (4 -1 5 (1 6 4) (2 5 1)) Translation: (cos-not ((cos-and ((cos-< 6) 4)) ((cos-= 5) 1))) ok Expression: (4 -1 5 (3 2 6) (2 1 5)) Translation: (cos-not ((cos-and ((cos-> 2) 6)) ((cos-= 1) 5))) ok Expression: (4 -1 5 (1 6 3) (2 2 3)) Translation: (cos-not ((cos-and ((cos-< 6) 3)) ((cos-= 2) 3))) ok Expression: (4 -1 5 (1 6 4) (3 0 1)) Translation: (cos-not ((cos-and ((cos-< 6) 4)) ((cos-> 0) 1))) ok Expression: (4 -1 5 (2 3 5) (1 4 1)) Translation: (cos-not ((cos-and ((cos-= 3) 5)) ((cos-< 4) 1))) ok Expression: (4 -1 5 (2 4 1) (1 4 2)) Translation: (cos-not ((cos-and ((cos-= 4) 1)) ((cos-< 4) 2))) ok Expression: (4 -1 5 (1 6 3) (2 3 0)) Translation: (cos-not ((cos-and ((cos-< 6) 3)) ((cos-= 3) 0))) ok Expression: (4 -1 5 (1 4 2) (1 4 6)) Translation: (cos-not ((cos-and ((cos-< 4) 2)) ((cos-< 4) 6))) ok Expression: (4 -1 5 (3 4 1) (1 5 2)) Translation: (cos-not ((cos-and ((cos-> 4) 1)) ((cos-< 5) 2))) ok Expression: (4 -1 5 (3 0 1) (3 7 5)) Translation: (cos-not ((cos-and ((cos-> 0) 1)) ((cos-> 7) 5))) ok Expression: (4 -1 5 (1 3 4) (3 3 6)) Translation: (cos-not ((cos-and ((cos-< 3) 4)) ((cos-> 3) 6))) ok Expression: (4 -1 5 (3 1 2) (3 6 4)) Translation: (cos-not ((cos-and ((cos-> 1) 2)) ((cos-> 6) 4))) ok Expression: (4 -1 5 (1 0 1) (2 4 5)) Translation: (cos-not ((cos-and ((cos-< 0) 1)) ((cos-= 4) 5))) ok Expression: (5 (1 4 6) (1 5 7)) Translation: ((cos-and ((cos-< 4) 6)) ((cos-< 5) 7)) ok ; MATH introduce the OR logical operator Expression: (13 6 (12 37 -1 12 36 -1 15 (37) (43) (15 (36) (43) (44)))) Translation: (begin (define cos-or (lambda (cos-37) (lambda (cos-36) (if (tish cos-37) cos-43 (if (tish cos-36) cos-43 cos-44))))) 1) ok Expression: (0 6) Translation: (cos-intro 6) ok Expression: (6 (2 2 2) (3 4 2)) Translation: ((cos-or ((cos-= 2) 2)) ((cos-> 4) 2)) ok Expression: (6 (2 1 1) (3 6 4)) Translation: ((cos-or ((cos-= 1) 1)) ((cos-> 6) 4)) ok Expression: (6 (1 3 4) (2 5 5)) Translation: ((cos-or ((cos-< 3) 4)) ((cos-= 5) 5)) ok Expression: (6 (2 3 3) (2 4 4)) Translation: ((cos-or ((cos-= 3) 3)) ((cos-= 4) 4)) ok Expression: (6 (2 3 3) (2 0 0)) Translation: ((cos-or ((cos-= 3) 3)) ((cos-= 0) 0)) ok Expression: (6 (1 5 7) (3 5 3)) Translation: ((cos-or ((cos-< 5) 7)) ((cos-> 5) 3)) ok Expression: (6 (3 5 4) (3 1 0)) Translation: ((cos-or ((cos-> 5) 4)) ((cos-> 1) 0)) ok Expression: (6 (3 3 0) (2 3 3)) Translation: ((cos-or ((cos-> 3) 0)) ((cos-= 3) 3)) ok Expression: (6 (1 3 4) (1 3 6)) Translation: ((cos-or ((cos-< 3) 4)) ((cos-< 3) 6)) ok Expression: (6 (3 5 4) (3 5 4)) Translation: ((cos-or ((cos-> 5) 4)) ((cos-> 5) 4)) ok Expression: (6 (3 6 4) (1 3 1)) Translation: ((cos-or ((cos-> 6) 4)) ((cos-< 3) 1)) ok Expression: (6 (3 3 1) (3 3 3)) Translation: ((cos-or ((cos-> 3) 1)) ((cos-> 3) 3)) ok Expression: (6 (2 0 0) (2 5 4)) Translation: ((cos-or ((cos-= 0) 0)) ((cos-= 5) 4)) ok Expression: (6 (1 2 4) (3 4 6)) Translation: ((cos-or ((cos-< 2) 4)) ((cos-> 4) 6)) ok Expression: (6 (2 3 3) (2 3 1)) Translation: ((cos-or ((cos-= 3) 3)) ((cos-= 3) 1)) ok Expression: (6 (3 1 5) (1 3 6)) Translation: ((cos-or ((cos-> 1) 5)) ((cos-< 3) 6)) ok Expression: (6 (1 6 2) (2 2 2)) Translation: ((cos-or ((cos-< 6) 2)) ((cos-= 2) 2)) ok Expression: (6 (3 2 5) (2 5 5)) Translation: ((cos-or ((cos-> 2) 5)) ((cos-= 5) 5)) ok Expression: (6 (1 6 2) (2 3 3)) Translation: ((cos-or ((cos-< 6) 2)) ((cos-= 3) 3)) ok Expression: (6 (1 4 3) (3 5 2)) Translation: ((cos-or ((cos-< 4) 3)) ((cos-> 5) 2)) ok Expression: (4 -1 6 (1 5 4) (2 1 2)) Translation: (cos-not ((cos-or ((cos-< 5) 4)) ((cos-= 1) 2))) ok Expression: (4 -1 6 (1 6 4) (2 5 1)) Translation: (cos-not ((cos-or ((cos-< 6) 4)) ((cos-= 5) 1))) ok Expression: (4 -1 6 (3 2 6) (2 1 5)) Translation: (cos-not ((cos-or ((cos-> 2) 6)) ((cos-= 1) 5))) ok Expression: (4 -1 6 (1 6 3) (2 2 3)) Translation: (cos-not ((cos-or ((cos-< 6) 3)) ((cos-= 2) 3))) ok Expression: (4 -1 6 (1 6 4) (3 0 1)) Translation: (cos-not ((cos-or ((cos-< 6) 4)) ((cos-> 0) 1))) ok Expression: (4 -1 6 (2 3 5) (1 4 1)) Translation: (cos-not ((cos-or ((cos-= 3) 5)) ((cos-< 4) 1))) ok Expression: (4 -1 6 (2 4 1) (1 4 2)) Translation: (cos-not ((cos-or ((cos-= 4) 1)) ((cos-< 4) 2))) ok Expression: (4 -1 6 (1 6 3) (2 3 0)) Translation: (cos-not ((cos-or ((cos-< 6) 3)) ((cos-= 3) 0))) ok Expression: (6 (1 4 2) (1 4 6)) Translation: ((cos-or ((cos-< 4) 2)) ((cos-< 4) 6)) ok Expression: (6 (3 4 1) (1 5 2)) Translation: ((cos-or ((cos-> 4) 1)) ((cos-< 5) 2)) ok Expression: (6 (3 0 1) (3 7 5)) Translation: ((cos-or ((cos-> 0) 1)) ((cos-> 7) 5)) ok Expression: (6 (1 3 4) (3 3 6)) Translation: ((cos-or ((cos-< 3) 4)) ((cos-> 3) 6)) ok Expression: (6 (3 1 2) (3 6 4)) Translation: ((cos-or ((cos-> 1) 2)) ((cos-> 6) 4)) ok Expression: (6 (1 0 1) (2 4 5)) Translation: ((cos-or ((cos-< 0) 1)) ((cos-= 4) 5)) ok Expression: (6 (1 4 6) (1 5 7)) Translation: ((cos-or ((cos-< 4) 6)) ((cos-< 5) 7)) ok Expression: (13 49 (12 37 -1 12 36 -1 6 (3 (37) (36)) (2 (37) (36)))) Translation: (begin (define cos-49 (lambda (cos-37) (lambda (cos-36) ((cos-or ((cos-> cos-37) cos-36)) ((cos-= cos-37) cos-36))))) 1) ok Expression: (13 50 (12 37 -1 12 36 -1 6 (1 (37) (36)) (2 (37) (36)))) Translation: (begin (define cos-50 (lambda (cos-37) (lambda (cos-36) ((cos-or ((cos-< cos-37) cos-36)) ((cos-= cos-37) cos-36))))) 1) ok Expression: (49 0 0) Translation: ((cos-49 0) 0) ok Expression: (50 0 0) Translation: ((cos-50 0) 0) ok Expression: (4 -1 49 0 1) Translation: (cos-not ((cos-49 0) 1)) ok Expression: (50 0 1) Translation: ((cos-50 0) 1) ok Expression: (4 -1 49 0 2) Translation: (cos-not ((cos-49 0) 2)) ok Expression: (50 0 2) Translation: ((cos-50 0) 2) ok Expression: (49 1 0) Translation: ((cos-49 1) 0) ok Expression: (4 -1 50 1 0) Translation: (cos-not ((cos-50 1) 0)) ok Expression: (49 1 1) Translation: ((cos-49 1) 1) ok Expression: (50 1 1) Translation: ((cos-50 1) 1) ok Expression: (4 -1 49 1 2) Translation: (cos-not ((cos-49 1) 2)) ok Expression: (50 1 2) Translation: ((cos-50 1) 2) ok Expression: (49 2 0) Translation: ((cos-49 2) 0) ok Expression: (4 -1 50 2 0) Translation: (cos-not ((cos-50 2) 0)) ok Expression: (49 2 1) Translation: ((cos-49 2) 1) ok Expression: (4 -1 50 2 1) Translation: (cos-not ((cos-50 2) 1)) ok Expression: (49 2 2) Translation: ((cos-49 2) 2) ok Expression: (50 2 2) Translation: ((cos-50 2) 2) ok ; MATH illustrate pairs Expression: (13 21 (12 37 -1 12 36 -1 12 51 -1 51 (37) (36))) Translation: (begin (define cos-cons (lambda (cos-37) (lambda (cos-36) (lambda (cos-51) ((cos-51 cos-37) cos-36))))) 1) ok Expression: (13 22 (12 52 -1 52 (12 37 -1 12 36 -1 37))) Translation: (begin (define cos-car (lambda (cos-52) (cos-52 (lambda (cos-37) (lambda (cos-36) cos-37))))) 1) ok Expression: (13 23 (12 52 -1 52 (12 37 -1 12 36 -1 36))) Translation: (begin (define cos-cdr (lambda (cos-52) (cos-52 (lambda (cos-37) (lambda (cos-36) cos-36))))) 1) ok Expression: (14 37 (21 0 4) -1 2 (22 -1 37) 0) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 0)) ((cos-cons 0) 4)) ok Expression: (14 37 (21 0 4) -1 2 (23 -1 37) 4) Translation: ((lambda (cos-37) ((cos-= (cos-cdr cos-37)) 4)) ((cos-cons 0) 4)) ok Expression: (14 37 (21 6 2) -1 2 (22 -1 37) 6) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 6)) ((cos-cons 6) 2)) ok Expression: (14 37 (21 6 2) -1 2 (23 -1 37) 2) Translation: ((lambda (cos-37) ((cos-= (cos-cdr cos-37)) 2)) ((cos-cons 6) 2)) ok Expression: (14 37 (21 3 9) -1 2 (22 -1 37) 3) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 3)) ((cos-cons 3) 9)) ok Expression: (14 37 (21 3 9) -1 2 (23 -1 37) 9) Translation: ((lambda (cos-37) ((cos-= (cos-cdr cos-37)) 9)) ((cos-cons 3) 9)) ok Expression: (14 37 (21 7 -1 21 10 2) -1 2 (22 -1 37) 7) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 7)) ((cos-cons 7) ((cos-cons 10) 2))) ok Expression: (14 37 (21 7 -1 21 10 2) -1 2 (22 -1 23 -1 37) 10) Translation: ((lambda (cos-37) ((cos-= (cos-car (cos-cdr cos-37))) 10)) ((cos-cons 7) ((cos-cons 10) 2))) ok Expression: (14 37 (21 7 -1 21 10 2) -1 2 (23 -1 23 -1 37) 2) Translation: ((lambda (cos-37) ((cos-= (cos-cdr (cos-cdr cos-37))) 2)) ((cos-cons 7) ((cos-cons 10) 2))) ok Expression: (14 37 (21 1 -1 21 15 17) -1 2 (22 -1 37) 1) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 1)) ((cos-cons 1) ((cos-cons 15) 17))) ok Expression: (14 37 (21 1 -1 21 15 17) -1 2 (22 -1 23 -1 37) 15) Translation: ((lambda (cos-37) ((cos-= (cos-car (cos-cdr cos-37))) 15)) ((cos-cons 1) ((cos-cons 15) 17))) ok Expression: (14 37 (21 1 -1 21 15 17) -1 2 (23 -1 23 -1 37) 17) Translation: ((lambda (cos-37) ((cos-= (cos-cdr (cos-cdr cos-37))) 17)) ((cos-cons 1) ((cos-cons 15) 17))) ok Expression: (14 37 (21 8 -1 21 14 9) -1 2 (22 -1 37) 8) Translation: ((lambda (cos-37) ((cos-= (cos-car cos-37)) 8)) ((cos-cons 8) ((cos-cons 14) 9))) ok Expression: (14 37 (21 8 -1 21 14 9) -1 2 (22 -1 23 -1 37) 14) Translation: ((lambda (cos-37) ((cos-= (cos-car (cos-cdr cos-37))) 14)) ((cos-cons 8) ((cos-cons 14) 9))) ok Expression: (14 37 (21 8 -1 21 14 9) -1 2 (23 -1 23 -1 37) 9) Translation: ((lambda (cos-37) ((cos-= (cos-cdr (cos-cdr cos-37))) 9)) ((cos-cons 8) ((cos-cons 14) 9))) ok Expression: (14 37 (21 3 -1 21 0 -1 21 2 -1 21 4 1) -1 5 (2 3 -1 22 -1 37) -1 5 (2 0 -1 22 -1 23 -1 37) -1 5 (2 2 -1 22 -1 23 -1 23 -1 37) -1 5 (2 4 -1 22 -1 23 -1 23 -1 23 -1 37) (2 1 -1 23 -1 23 -1 23 -1 23 -1 37)) Translation: ((lambda (cos-37) ((cos-and ((cos-= 3) (cos-car cos-37))) ((cos-and ((cos-= 0) (cos-car (cos-cdr cos-37)))) ((cos-and ((cos-= 2) (cos-car (cos-cdr (cos-cdr cos-37))))) ((cos-and ((cos-= 4) (cos-car (cos-cdr (cos-cdr (cos-cdr cos-37)))))) ((cos-= 1) (cos-cdr (cos-cdr (cos-cdr (cos-cdr cos-37)))))))))) ((cos-cons 3) ((cos-cons 0) ((cos-cons 2) ((cos-cons 4) 1))))) ok ; MATH introduce mutable objects, and side-effects Expression: (0 27) Translation: (cos-intro 27) ok Expression: (0 28) Translation: (cos-intro 28) ok Expression: (0 29) Translation: (cos-intro 29) ok Expression: (13 53 -1 27 0) Translation: (begin (define cos-53 (cos-make-cell 0)) 1) ok Expression: (28 (53) 15) Translation: ((cos-set! cos-53) 15) ok Expression: (2 (29 -1 53) 15) Translation: ((cos-= (cos-get! cos-53)) 15) ok Expression: (28 (53) 5) Translation: ((cos-set! cos-53) 5) ok Expression: (28 (53) 7) Translation: ((cos-set! cos-53) 7) ok Expression: (2 (29 -1 53) 7) Translation: ((cos-= (cos-get! cos-53)) 7) ok Expression: (13 54 -1 27 11) Translation: (begin (define cos-54 (cos-make-cell 11)) 1) ok Expression: (2 (29 -1 54) 11) Translation: ((cos-= (cos-get! cos-54)) 11) ok Expression: (28 (54) 22) Translation: ((cos-set! cos-54) 22) ok Expression: (2 (29 -1 54) 22) Translation: ((cos-= (cos-get! cos-54)) 22) ok Expression: (2 (29 -1 53) 7) Translation: ((cos-= (cos-get! cos-53)) 7) ok Expression: (2 (10 (29 -1 53) (29 -1 54)) 29) Translation: ((cos-= ((cos-+ (cos-get! cos-53)) (cos-get! cos-54))) 29) ok Expression: (15 (2 (29 -1 53) 7) (28 (53) 88) (28 (53) 99)) Translation: (if (tish ((cos-= (cos-get! cos-53)) 7)) ((cos-set! cos-53) 88) ((cos-set! cos-53) 99)) ok Expression: (2 (29 -1 53) 88) Translation: ((cos-= (cos-get! cos-53)) 88) ok Expression: (15 (2 (29 -1 53) 7) (28 (53) 88) (28 (53) 99)) Translation: (if (tish ((cos-= (cos-get! cos-53)) 7)) ((cos-set! cos-53) 88) ((cos-set! cos-53) 99)) ok Expression: (2 (29 -1 53) 99) Translation: ((cos-= (cos-get! cos-53)) 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. ; pending: should introduce number? check function Expression: (13 55 -1 12 48 -1 12 56 -1 15 (3 (48) 1) (12 37 -1 55 (11 (48) 1) (12 36 -1 12 38 -1 56 (10 1 (36)) (21 (37) (38)))) (12 37 -1 56 1 (37))) Translation: (begin (define cos-55 (lambda (cos-48) (lambda (cos-56) (if (tish ((cos-> cos-48) 1)) (lambda (cos-37) ((cos-55 ((cos-- cos-48) 1)) (lambda (cos-36) (lambda (cos-38) ((cos-56 ((cos-+ 1) cos-36)) ((cos-cons cos-37) cos-38)))))) (lambda (cos-37) ((cos-56 1) cos-37)))))) 1) ok Expression: (13 57 -1 12 48 -1 15 (2 (48) 0) (21 0 0) (55 (48) (12 36 -1 12 38 -1 21 (36) (38)))) Translation: (begin (define cos-57 (lambda (cos-48) (if (tish ((cos-= cos-48) 0)) ((cos-cons 0) 0) ((cos-55 cos-48) (lambda (cos-36) (lambda (cos-38) ((cos-cons cos-36) cos-38))))))) 1) ok Expression: (13 58 -1 12 59 -1 15 (2 (22 -1 59) 0) (32) (15 (2 (22 -1 59) 1) (23 -1 59) (22 -1 23 -1 59))) Translation: (begin (define cos-58 (lambda (cos-59) (if (tish ((cos-= (cos-car cos-59)) 0)) cos-undefined (if (tish ((cos-= (cos-car cos-59)) 1)) (cos-cdr cos-59) (cos-car (cos-cdr cos-59)))))) 1) ok Expression: (13 60 -1 12 59 -1 15 (2 (22 -1 59) 0) (32) (15 (2 (22 -1 59) 1) (21 0 0) (21 (11 (22 -1 59) 1) (23 -1 23 -1 59)))) Translation: (begin (define cos-60 (lambda (cos-59) (if (tish ((cos-= (cos-car cos-59)) 0)) cos-undefined (if (tish ((cos-= (cos-car cos-59)) 1)) ((cos-cons 0) 0) ((cos-cons ((cos-- (cos-car cos-59)) 1)) (cos-cdr (cos-cdr cos-59))))))) 1) ok Expression: (13 61 -1 12 59 -1 22 -1 59) Translation: (begin (define cos-61 (lambda (cos-59) (cos-car cos-59))) 1) ok Expression: (13 62 -1 12 59 -1 12 48 -1 15 (2 (62 -1 59) 0) (32) (15 (2 (48) 0) (58 -1 59) (62 (60 -1 59) (11 (48) 1)))) Translation: (begin (define cos-62 (lambda (cos-59) (lambda (cos-48) (if (tish ((cos-= (cos-62 cos-59)) 0)) cos-undefined (if (tish ((cos-= cos-48) 0)) (cos-58 cos-59) ((cos-62 (cos-60 cos-59)) ((cos-- cos-48) 1))))))) 1) ok Expression: (13 63 -1 12 37 -1 12 59 -1 15 (2 (61 -1 59) 0) (21 1 (37)) (21 (10 (61 -1 59) 1) (21 (37) (23 -1 59)))) Translation: (begin (define cos-63 (lambda (cos-37) (lambda (cos-59) (if (tish ((cos-= (cos-61 cos-59)) 0)) ((cos-cons 1) cos-37) ((cos-cons ((cos-+ (cos-61 cos-59)) 1)) ((cos-cons cos-37) (cos-cdr cos-59))))))) 1) ok Expression: (13 8 -1 12 37 -1 12 36 -1 15 (2 (24 (37)) (24 (36))) (15 (24 (37)) (2 (37) (36)) (64 (37) (36))) (44)) Translation: (begin (define cos-equal (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-64 cos-37) cos-36)) cos-44)))) 1) ok Expression: (13 64 -1 12 37 -1 12 36 -1 15 (2 (61 -1 37) (61 -1 36)) (15 (3 (61 -1 37) 0) (5 (8 (58 -1 37) (58 -1 36)) (64 (60 -1 37) (60 -1 36))) (43)) (44)) Translation: (begin (define cos-64 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-= (cos-61 cos-37)) (cos-61 cos-36))) (if (tish ((cos-> (cos-61 cos-37)) 0)) ((cos-and ((cos-equal (cos-58 cos-37)) (cos-58 cos-36))) ((cos-64 (cos-60 cos-37)) (cos-60 cos-36))) cos-43) cos-44)))) 1) ok Expression: (2 (61 -1 (57 0)) 0) Translation: ((cos-= (cos-61 (cos-57 0))) 0) ok Expression: (2 (61 -1 (57 4) 6 1 0 4) 4) Translation: ((cos-= (cos-61 (((((cos-57 4) 6) 1) 0) 4))) 4) ok Expression: (2 (61 -1 (57 6) 6 2 7 0 9 4) 6) Translation: ((cos-= (cos-61 (((((((cos-57 6) 6) 2) 7) 0) 9) 4))) 6) ok Expression: (2 (61 -1 (57 2) 4 9) 2) Translation: ((cos-= (cos-61 (((cos-57 2) 4) 9))) 2) ok Expression: (2 (61 -1 (57 3) 6 1 7) 3) Translation: ((cos-= (cos-61 ((((cos-57 3) 6) 1) 7))) 3) ok Expression: (2 (58 -1 (57 6) 12 11 10 4 1 5) 12) Translation: ((cos-= (cos-58 (((((((cos-57 6) 12) 11) 10) 4) 1) 5))) 12) ok Expression: (64 (60 -1 (57 6) 12 11 10 4 1 5) ((57 5) 11 10 4 1 5)) Translation: ((cos-64 (cos-60 (((((((cos-57 6) 12) 11) 10) 4) 1) 5))) ((((((cos-57 5) 11) 10) 4) 1) 5)) ok Expression: (2 (58 -1 (57 8) 15 13 12 7 10 11 13 18) 15) Translation: ((cos-= (cos-58 (((((((((cos-57 8) 15) 13) 12) 7) 10) 11) 13) 18))) 15) ok Expression: (64 (60 -1 (57 8) 15 13 12 7 10 11 13 18) ((57 7) 13 12 7 10 11 13 18)) Translation: ((cos-64 (cos-60 (((((((((cos-57 8) 15) 13) 12) 7) 10) 11) 13) 18))) ((((((((cos-57 7) 13) 12) 7) 10) 11) 13) 18)) ok Expression: (2 (58 -1 (57 2) 11 1) 11) Translation: ((cos-= (cos-58 (((cos-57 2) 11) 1))) 11) ok Expression: (64 (60 -1 (57 2) 11 1) ((57 1) 1)) Translation: ((cos-64 (cos-60 (((cos-57 2) 11) 1))) ((cos-57 1) 1)) ok Expression: (2 (58 -1 (57 6) 5 19 4 16 6 11) 5) Translation: ((cos-= (cos-58 (((((((cos-57 6) 5) 19) 4) 16) 6) 11))) 5) ok Expression: (64 (60 -1 (57 6) 5 19 4 16 6 11) ((57 5) 19 4 16 6 11)) Translation: ((cos-64 (cos-60 (((((((cos-57 6) 5) 19) 4) 16) 6) 11))) ((((((cos-57 5) 19) 4) 16) 6) 11)) ok Expression: (2 (58 -1 (57 10) 12 18 7 4 9 18 6 16 6 18) 12) Translation: ((cos-= (cos-58 (((((((((((cos-57 10) 12) 18) 7) 4) 9) 18) 6) 16) 6) 18))) 12) ok Expression: (64 (60 -1 (57 10) 12 18 7 4 9 18 6 16 6 18) ((57 9) 18 7 4 9 18 6 16 6 18)) Translation: ((cos-64 (cos-60 (((((((((((cos-57 10) 12) 18) 7) 4) 9) 18) 6) 16) 6) 18))) ((((((((((cos-57 9) 18) 7) 4) 9) 18) 6) 16) 6) 18)) ok Expression: (2 (58 -1 (57 6) 19 7 3 10 19 13) 19) Translation: ((cos-= (cos-58 (((((((cos-57 6) 19) 7) 3) 10) 19) 13))) 19) ok Expression: (64 (60 -1 (57 6) 19 7 3 10 19 13) ((57 5) 7 3 10 19 13)) Translation: ((cos-64 (cos-60 (((((((cos-57 6) 19) 7) 3) 10) 19) 13))) ((((((cos-57 5) 7) 3) 10) 19) 13)) ok Expression: (2 (58 -1 (57 6) 19 7 19 12 16 13) 19) Translation: ((cos-= (cos-58 (((((((cos-57 6) 19) 7) 19) 12) 16) 13))) 19) ok Expression: (64 (60 -1 (57 6) 19 7 19 12 16 13) ((57 5) 7 19 12 16 13)) Translation: ((cos-64 (cos-60 (((((((cos-57 6) 19) 7) 19) 12) 16) 13))) ((((((cos-57 5) 7) 19) 12) 16) 13)) ok Expression: (2 (58 -1 (57 1) 3) 3) Translation: ((cos-= (cos-58 ((cos-57 1) 3))) 3) ok Expression: (64 (60 -1 (57 1) 3) ((57 0))) Translation: ((cos-64 (cos-60 ((cos-57 1) 3))) (cos-57 0)) ok Expression: (2 (58 -1 (57 3) 2 19 17) 2) Translation: ((cos-= (cos-58 ((((cos-57 3) 2) 19) 17))) 2) ok Expression: (64 (60 -1 (57 3) 2 19 17) ((57 2) 19 17)) Translation: ((cos-64 (cos-60 ((((cos-57 3) 2) 19) 17))) (((cos-57 2) 19) 17)) ok Expression: (2 (58 -1 (57 7) 1 16 5 14 6 19 2) 1) Translation: ((cos-= (cos-58 ((((((((cos-57 7) 1) 16) 5) 14) 6) 19) 2))) 1) ok Expression: (64 (60 -1 (57 7) 1 16 5 14 6 19 2) ((57 6) 16 5 14 6 19 2)) Translation: ((cos-64 (cos-60 ((((((((cos-57 7) 1) 16) 5) 14) 6) 19) 2))) (((((((cos-57 6) 16) 5) 14) 6) 19) 2)) ok Expression: (2 (62 ((57 3) 18 14 17) 1) 14) Translation: ((cos-= ((cos-62 ((((cos-57 3) 18) 14) 17)) 1)) 14) ok Expression: (2 (62 ((57 3) 8 11 10) 2) 10) Translation: ((cos-= ((cos-62 ((((cos-57 3) 8) 11) 10)) 2)) 10) ok Expression: (2 (62 ((57 8) 15 0 4 9 9 2 10 17) 3) 9) Translation: ((cos-= ((cos-62 (((((((((cos-57 8) 15) 0) 4) 9) 9) 2) 10) 17)) 3)) 9) ok Expression: (2 (62 ((57 7) 4 8 8 5 14 5 13) 4) 14) Translation: ((cos-= ((cos-62 ((((((((cos-57 7) 4) 8) 8) 5) 14) 5) 13)) 4)) 14) ok Expression: (2 (62 ((57 4) 1 4 7 18) 2) 7) Translation: ((cos-= ((cos-62 (((((cos-57 4) 1) 4) 7) 18)) 2)) 7) ok Expression: (2 (62 ((57 3) 12 2 3) 1) 2) Translation: ((cos-= ((cos-62 ((((cos-57 3) 12) 2) 3)) 1)) 2) ok Expression: (2 (62 ((57 6) 12 5 7 15 7 16) 2) 7) Translation: ((cos-= ((cos-62 (((((((cos-57 6) 12) 5) 7) 15) 7) 16)) 2)) 7) ok Expression: (2 (62 ((57 8) 5 15 7 14 7 1 11 19) 0) 5) Translation: ((cos-= ((cos-62 (((((((((cos-57 8) 5) 15) 7) 14) 7) 1) 11) 19)) 0)) 5) ok Expression: (2 (62 ((57 3) 19 17 8) 2) 8) Translation: ((cos-= ((cos-62 ((((cos-57 3) 19) 17) 8)) 2)) 8) ok Expression: (2 (62 ((57 4) 10 10 4 11) 1) 10) Translation: ((cos-= ((cos-62 (((((cos-57 4) 10) 10) 4) 11)) 1)) 10) ok Expression: (64 ((57 0)) ((57 0))) Translation: ((cos-64 (cos-57 0)) (cos-57 0)) ok Expression: (64 ((57 1) 4) ((57 1) 4)) Translation: ((cos-64 ((cos-57 1) 4)) ((cos-57 1) 4)) ok Expression: (64 ((57 2) 7 5) ((57 2) 7 5)) Translation: ((cos-64 (((cos-57 2) 7) 5)) (((cos-57 2) 7) 5)) ok Expression: (64 ((57 3) 15 13 11) ((57 3) 15 13 11)) Translation: ((cos-64 ((((cos-57 3) 15) 13) 11)) ((((cos-57 3) 15) 13) 11)) ok Expression: (64 ((57 4) 2 8 0 6) ((57 4) 2 8 0 6)) Translation: ((cos-64 (((((cos-57 4) 2) 8) 0) 6)) (((((cos-57 4) 2) 8) 0) 6)) ok ; this next batch of examples are a bit misleading, should streamline Expression: (4 -1 64 ((57 0)) ((57 1) 9)) Translation: (cos-not ((cos-64 (cos-57 0)) ((cos-57 1) 9))) ok Expression: (4 -1 64 ((57 0)) ((57 1) 5)) Translation: (cos-not ((cos-64 (cos-57 0)) ((cos-57 1) 5))) ok Expression: (4 -1 64 ((57 1) 18) ((57 2) 8 18)) Translation: (cos-not ((cos-64 ((cos-57 1) 18)) (((cos-57 2) 8) 18))) ok Expression: (4 -1 64 ((57 1) 18) ((57 2) 18 5)) Translation: (cos-not ((cos-64 ((cos-57 1) 18)) (((cos-57 2) 18) 5))) ok Expression: (4 -1 64 ((57 2) 11 18) ((57 3) 7 11 18)) Translation: (cos-not ((cos-64 (((cos-57 2) 11) 18)) ((((cos-57 3) 7) 11) 18))) ok Expression: (4 -1 64 ((57 2) 11 18) ((57 3) 11 18 6)) Translation: (cos-not ((cos-64 (((cos-57 2) 11) 18)) ((((cos-57 3) 11) 18) 6))) ok Expression: (4 -1 64 ((57 3) 7 19 17) ((57 4) 6 7 19 17)) Translation: (cos-not ((cos-64 ((((cos-57 3) 7) 19) 17)) (((((cos-57 4) 6) 7) 19) 17))) ok Expression: (4 -1 64 ((57 3) 7 19 17) ((57 4) 7 19 17 0)) Translation: (cos-not ((cos-64 ((((cos-57 3) 7) 19) 17)) (((((cos-57 4) 7) 19) 17) 0))) ok Expression: (4 -1 64 ((57 4) 10 0 11 1) ((57 5) 0 10 0 11 1)) Translation: (cos-not ((cos-64 (((((cos-57 4) 10) 0) 11) 1)) ((((((cos-57 5) 0) 10) 0) 11) 1))) ok Expression: (4 -1 64 ((57 4) 10 0 11 1) ((57 5) 10 0 11 1 8)) Translation: (cos-not ((cos-64 (((((cos-57 4) 10) 0) 11) 1)) ((((((cos-57 5) 10) 0) 11) 1) 8))) ok ; some helpful functions Expression: (64 (63 8 ((57 0))) ((57 1) 8)) Translation: ((cos-64 ((cos-63 8) (cos-57 0))) ((cos-57 1) 8)) ok Expression: (64 (63 11 ((57 1) 8)) ((57 2) 11 8)) Translation: ((cos-64 ((cos-63 11) ((cos-57 1) 8))) (((cos-57 2) 11) 8)) ok Expression: (64 (63 13 ((57 2) 1 12)) ((57 3) 13 1 12)) Translation: ((cos-64 ((cos-63 13) (((cos-57 2) 1) 12))) ((((cos-57 3) 13) 1) 12)) ok Expression: (64 (63 0 ((57 3) 7 7 5)) ((57 4) 0 7 7 5)) Translation: ((cos-64 ((cos-63 0) ((((cos-57 3) 7) 7) 5))) (((((cos-57 4) 0) 7) 7) 5)) ok Expression: (64 (63 16 ((57 4) 16 0 19 3)) ((57 5) 16 16 0 19 3)) Translation: ((cos-64 ((cos-63 16) (((((cos-57 4) 16) 0) 19) 3))) ((((((cos-57 5) 16) 16) 0) 19) 3)) ok Expression: (64 (63 10 ((57 5) 5 6 7 9 10)) ((57 6) 10 5 6 7 9 10)) Translation: ((cos-64 ((cos-63 10) ((((((cos-57 5) 5) 6) 7) 9) 10))) (((((((cos-57 6) 10) 5) 6) 7) 9) 10)) ok Expression: (64 (63 19 ((57 6) 3 19 18 6 10 16)) ((57 7) 19 3 19 18 6 10 16)) Translation: ((cos-64 ((cos-63 19) (((((((cos-57 6) 3) 19) 18) 6) 10) 16))) ((((((((cos-57 7) 19) 3) 19) 18) 6) 10) 16)) ok Expression: (64 (63 19 ((57 7) 17 17 10 1 18 12 14)) ((57 8) 19 17 17 10 1 18 12 14)) Translation: ((cos-64 ((cos-63 19) ((((((((cos-57 7) 17) 17) 10) 1) 18) 12) 14))) (((((((((cos-57 8) 19) 17) 17) 10) 1) 18) 12) 14)) ok Expression: (13 52 -1 12 37 -1 12 36 -1 (57 2) (37) (36)) Translation: (begin (define cos-52 (lambda (cos-37) (lambda (cos-36) (((cos-57 2) cos-37) cos-36)))) 1) ok Expression: (13 65 -1 12 59 -1 58 -1 59) Translation: (begin (define cos-65 (lambda (cos-59) (cos-58 cos-59))) 1) ok Expression: (13 66 -1 12 59 -1 58 -1 60 -1 59) Translation: (begin (define cos-66 (lambda (cos-59) (cos-58 (cos-60 cos-59)))) 1) ok Expression: (64 (52 3 6) ((57 2) 3 6)) Translation: ((cos-64 ((cos-52 3) 6)) (((cos-57 2) 3) 6)) ok Expression: (2 (65 -1 52 3 6) 3) Translation: ((cos-= (cos-65 ((cos-52 3) 6))) 3) ok Expression: (2 (66 -1 52 3 6) 6) Translation: ((cos-= (cos-66 ((cos-52 3) 6))) 6) ok Expression: (64 (52 4 9) ((57 2) 4 9)) Translation: ((cos-64 ((cos-52 4) 9)) (((cos-57 2) 4) 9)) ok Expression: (2 (65 -1 52 4 9) 4) Translation: ((cos-= (cos-65 ((cos-52 4) 9))) 4) ok Expression: (2 (66 -1 52 4 9) 9) Translation: ((cos-= (cos-66 ((cos-52 4) 9))) 9) ok Expression: (64 (52 8 3) ((57 2) 8 3)) Translation: ((cos-64 ((cos-52 8) 3)) (((cos-57 2) 8) 3)) ok Expression: (2 (65 -1 52 8 3) 8) Translation: ((cos-= (cos-65 ((cos-52 8) 3))) 8) ok Expression: (2 (66 -1 52 8 3) 3) Translation: ((cos-= (cos-66 ((cos-52 8) 3))) 3) ok Expression: (13 67 -1 12 59 -1 12 68 -1 12 69 -1 12 70 -1 15 (2 (61 -1 59) 0) (69 0) (15 (8 (58 -1 59) (68)) (70) (67 (60 -1 59) (68) (69) (10 (70) 1)))) Translation: (begin (define cos-67 (lambda (cos-59) (lambda (cos-68) (lambda (cos-69) (lambda (cos-70) (if (tish ((cos-= (cos-61 cos-59)) 0)) (cos-69 0) (if (tish ((cos-equal (cos-58 cos-59)) cos-68)) cos-70 ((((cos-67 (cos-60 cos-59)) cos-68) cos-69) ((cos-+ cos-70) 1))))))))) 1) ok Expression: (13 71 -1 12 59 -1 12 68 -1 12 69 -1 67 (59) (68) (69) 0) Translation: (begin (define cos-71 (lambda (cos-59) (lambda (cos-68) (lambda (cos-69) ((((cos-67 cos-59) cos-68) cos-69) 0))))) 1) ok Expression: (13 72 -1 12 37 100) Translation: (begin (define cos-72 (lambda (cos-37) 100)) 1) ok Expression: (2 (71 ((57 1) 13) 13 (72)) 0) Translation: ((cos-= (((cos-71 ((cos-57 1) 13)) 13) cos-72)) 0) ok Expression: (2 (71 ((57 10) 0 9 8 16 15 14 17 5 9 2) 15 (72)) 4) Translation: ((cos-= (((cos-71 (((((((((((cos-57 10) 0) 9) 8) 16) 15) 14) 17) 5) 9) 2)) 15) cos-72)) 4) ok Expression: (2 (71 ((57 3) 7 4 10) 7 (72)) 0) Translation: ((cos-= (((cos-71 ((((cos-57 3) 7) 4) 10)) 7) cos-72)) 0) ok Expression: (2 (71 ((57 6) 0 17 10 13 11 5) 17 (72)) 1) Translation: ((cos-= (((cos-71 (((((((cos-57 6) 0) 17) 10) 13) 11) 5)) 17) cos-72)) 1) ok Expression: (2 (71 ((57 3) 12 9 6) 12 (72)) 0) Translation: ((cos-= (((cos-71 ((((cos-57 3) 12) 9) 6)) 12) cos-72)) 0) ok Expression: (2 (71 ((57 7) 17 1 4 17 14 13 13) 14 (72)) 4) Translation: ((cos-= (((cos-71 ((((((((cos-57 7) 17) 1) 4) 17) 14) 13) 13)) 14) cos-72)) 4) ok Expression: (2 (71 ((57 3) 2 15 2) 15 (72)) 1) Translation: ((cos-= (((cos-71 ((((cos-57 3) 2) 15) 2)) 15) cos-72)) 1) ok Expression: (2 (71 ((57 9) 6 13 10 8 10 9 6 15 18) 13 (72)) 1) Translation: ((cos-= (((cos-71 ((((((((((cos-57 9) 6) 13) 10) 8) 10) 9) 6) 15) 18)) 13) cos-72)) 1) ok Expression: (2 (71 ((57 3) 12 16 0) 12 (72)) 0) Translation: ((cos-= (((cos-71 ((((cos-57 3) 12) 16) 0)) 12) cos-72)) 0) ok Expression: (2 (71 ((57 1) 15) 15 (72)) 0) Translation: ((cos-= (((cos-71 ((cos-57 1) 15)) 15) cos-72)) 0) ok Expression: (2 (71 ((57 4) 2 17 11 5) 14 (72)) 100) Translation: ((cos-= (((cos-71 (((((cos-57 4) 2) 17) 11) 5)) 14) cos-72)) 100) ok Expression: (2 (71 ((57 6) 12 1 19 6 17 9) 2 (72)) 100) Translation: ((cos-= (((cos-71 (((((((cos-57 6) 12) 1) 19) 6) 17) 9)) 2) cos-72)) 100) ok Expression: (2 (71 ((57 8) 11 6 17 8 13 10 9 16) 19 (72)) 100) Translation: ((cos-= (((cos-71 (((((((((cos-57 8) 11) 6) 17) 8) 13) 10) 9) 16)) 19) cos-72)) 100) ok ; HACK describe changes to the implicit interpreter to allow new special forms Expression: (13 73 -1 25) Translation: (begin (define cos-73 cos-translate) 1) ok Expression: (13 25 -1 12 37 -1 15 (2 (37) 32) 64 (73 -1 37)) Translation: (begin (define cos-translate (lambda (cos-37) (if (tish ((cos-= cos-37) 32)) 64 (cos-73 cos-37)))) 1) ok Expression: (2 32 64) Translation: ((cos-= 64) 64) ok Expression: (2 (10 32 64) 128) Translation: ((cos-= ((cos-+ 64) 64)) 128) ok Expression: (13 25 -1 73) Translation: (begin (define cos-translate cos-73) 1) ok Expression: (4 -1 2 32 64) Translation: (cos-not ((cos-= 32) 64)) ok Expression: (2 (10 32 64) 96) Translation: ((cos-= ((cos-+ 32) 64)) 96) ok ; now can create a special form for lists Expression: (13 25 -1 12 37 -1 15 (24 -1 37) (73 -1 37) (15 (2 (58 -1 37) 16) (25 -1 63 ((57 2) 57 (61 -1 60 -1 37)) (60 -1 37)) (73 -1 37))) Translation: (begin (define cos-translate (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-73 cos-37) (if (tish ((cos-= (cos-58 cos-37)) 16)) (cos-translate ((cos-63 (((cos-57 2) 57) (cos-61 (cos-60 cos-37)))) (cos-60 cos-37))) (cos-73 cos-37))))) 1) ok Expression: (64 (16 1 2 3) ((57 3) 1 2 3)) Translation: ((cos-64 ((((cos-57 3) 1) 2) 3)) ((((cos-57 3) 1) 2) 3)) ok ; now to desugar let expressions Expression: (13 74 -1 25) Translation: (begin (define cos-74 cos-translate) 1) ok Expression: (13 75 -1 12 37 -1 12 76 -1 15 (2 (61 -1 37) 0) (25 -1 76) (75 (60 -1 37) (16 (16 12 (58 -1 58 -1 37) (76)) (58 -1 60 -1 58 -1 37)))) Translation: (begin (define cos-75 (lambda (cos-37) (lambda (cos-76) (if (tish ((cos-= (cos-61 cos-37)) 0)) (cos-translate cos-76) ((cos-75 (cos-60 cos-37)) (((cos-57 2) ((((cos-57 3) 12) (cos-58 (cos-58 cos-37))) cos-76)) (cos-58 (cos-60 (cos-58 cos-37))))))))) 1) ok Expression: (13 25 -1 12 37 -1 15 (24 -1 37) (74 -1 37) (15 (2 (58 -1 37) 77) (75 (58 -1 60 -1 37) (58 -1 60 -1 60 -1 37)) (74 -1 37))) Translation: (begin (define cos-translate (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-74 cos-37) (if (tish ((cos-= (cos-58 cos-37)) 77)) ((cos-75 (cos-58 (cos-60 cos-37))) (cos-58 (cos-60 (cos-60 cos-37)))) (cos-74 cos-37))))) 1) ok Expression: (77 ((37 20)) (2 (37) 20)) Translation: ((lambda (cos-37) ((cos-= cos-37) 20)) 20) ok Expression: (77 ((37 50) (36 20)) (2 (11 (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: (13 78 -1 12 37 -1 4 -1 24 -1 37) Translation: (begin (define cos-78 (lambda (cos-37) (cos-not (cos-number? cos-37)))) 1) ok Expression: (78 -1 (57 2) 1 3) Translation: (cos-78 (((cos-57 2) 1) 3)) ok Expression: (78 -1 (57 0)) Translation: (cos-78 (cos-57 0)) ok Expression: (4 -1 78 23) Translation: (cos-not (cos-78 23)) ok Expression: (78 -1 (57 3) ((57 2) 2 3) 1 (12 37 -1 10 (37) 10)) Translation: (cos-78 ((((cos-57 3) (((cos-57 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: (0 77) Translation: (cos-intro 77) ok Expression: (2 (77 ((37 10)) (10 (37) 5)) ((12 37 -1 10 (37) 5) 10)) Translation: ((cos-= ((lambda (cos-37) ((cos-+ cos-37) 5)) 10)) ((lambda (cos-37) ((cos-+ cos-37) 5)) 10)) ok Expression: (2 (77 ((37 10) (36 5)) (10 (37) (36))) (((12 37 -1 12 36 -1 10 (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 ((12 37 -1 12 36 -1 11 (37) (36)) 4 0) 4) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 4) 0)) 4) ok Expression: (2 ((12 37 -1 12 36 -1 11 (37) (36)) 11 8) 3) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 11) 8)) 3) ok Expression: (2 ((12 37 -1 12 36 -1 11 (37) (36)) 5 5) 0) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 5) 5)) 0) ok Expression: (2 ((12 37 -1 12 36 -1 11 (37) (36)) 10 1) 9) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 10) 1)) 9) ok Expression: (2 ((12 37 -1 12 36 -1 11 (37) (36)) 10 7) 3) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 10) 7)) 3) ok Expression: (13 79 -1 12 37 -1 62 (37) (11 (61 -1 37) 1)) Translation: (begin (define cos-79 (lambda (cos-37) ((cos-62 cos-37) ((cos-- (cos-61 cos-37)) 1)))) 1) ok Expression: (13 80 -1 12 37 -1 15 (3 (61 -1 37) 1) (63 (58 -1 37) (80 -1 60 -1 37)) (16)) Translation: (begin (define cos-80 (lambda (cos-37) (if (tish ((cos-> (cos-61 cos-37)) 1)) ((cos-63 (cos-58 cos-37)) (cos-80 (cos-60 cos-37))) (cos-57 0)))) 1) ok ; test last and except-last Expression: (2 15 (79 -1 16 4 5 15)) Translation: ((cos-= 15) (cos-79 ((((cos-57 3) 4) 5) 15))) ok Expression: (64 (16 4 5) (80 -1 16 4 5 15)) Translation: ((cos-64 (((cos-57 2) 4) 5)) (cos-80 ((((cos-57 3) 4) 5) 15))) ok Expression: (0 26) Translation: (cos-intro 26) ok Expression: (13 81 -1 25) Translation: (begin (define cos-81 cos-translate) 1) ok Expression: (13 25 -1 77 ((82 (81))) (12 37 -1 15 (24 -1 37) (82 -1 37) (15 (2 (58 -1 37) 26) (77 ((83 (58 -1 60 -1 37)) (76 (58 -1 60 -1 60 -1 37))) (15 (3 (61 -1 83) 0) (25 (16 26 (80 -1 83) (16 12 (79 -1 83) (76)))) (25 (76)))) (82 -1 37)))) Translation: (begin (define cos-translate ((lambda (cos-82) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-82 cos-37) (if (tish ((cos-= (cos-58 cos-37)) 26)) ((lambda (cos-76) ((lambda (cos-83) (if (tish ((cos-> (cos-61 cos-83)) 0)) (cos-translate ((((cos-57 3) 26) (cos-80 cos-83)) ((((cos-57 3) 12) (cos-79 cos-83)) cos-76))) (cos-translate cos-76))) (cos-58 (cos-60 cos-37)))) (cos-58 (cos-60 (cos-60 cos-37)))) (cos-82 cos-37))))) cos-81)) 1) ok ; test lambda Expression: (2 ((26 (37 36) (11 (37) (36))) 8 3) 5) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 8) 3)) 5) ok Expression: (2 ((26 (37 36) (11 (37) (36))) 1 1) 0) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 1) 1)) 0) ok Expression: (2 ((26 (37 36) (11 (37) (36))) 10 9) 1) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 10) 9)) 1) ok Expression: (2 ((26 (37 36) (11 (37) (36))) 7 5) 2) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 7) 5)) 2) ok Expression: (2 ((26 (37 36) (11 (37) (36))) 9 8) 1) Translation: ((cos-= (((lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36))) 9) 8)) 1) ok Expression: (13 84 -1 26 (37 36) (15 (64 (36) (16)) (37) (84 ((37) (58 -1 36)) (60 -1 36)))) Translation: (begin (define cos-84 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-64 cos-36) (cos-57 0))) cos-37 ((cos-84 (cos-37 (cos-58 cos-36))) (cos-60 cos-36)))))) 1) ok Expression: (2 (84 (26 (37 36) (11 (37) (36))) (16 8 6)) 2) Translation: ((cos-= ((cos-84 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-57 2) 8) 6))) 2) ok Expression: (2 (84 (26 (37 36) (11 (37) (36))) (16 5 0)) 5) Translation: ((cos-= ((cos-84 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-57 2) 5) 0))) 5) ok Expression: (2 (84 (26 (37 36) (11 (37) (36))) (16 12 9)) 3) Translation: ((cos-= ((cos-84 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-57 2) 12) 9))) 3) ok Expression: (2 (84 (26 (37 36) (11 (37) (36))) (16 13 8)) 5) Translation: ((cos-= ((cos-84 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-57 2) 13) 8))) 5) ok Expression: (2 (84 (26 (37 36) (11 (37) (36))) (16 11 3)) 8) Translation: ((cos-= ((cos-84 (lambda (cos-37) (lambda (cos-36) ((cos-- cos-37) cos-36)))) (((cos-57 2) 11) 3))) 8) ok ; MATH show map function for applying a function across the elements of a list Expression: (13 85 -1 26 (86 59) (15 (3 (61 -1 59) 0) (63 (86 (58 -1 59)) (85 (86) (60 -1 59))) (16))) Translation: (begin (define cos-85 (lambda (cos-86) (lambda (cos-59) (if (tish ((cos-> (cos-61 cos-59)) 0)) ((cos-63 (cos-86 (cos-58 cos-59))) ((cos-85 cos-86) (cos-60 cos-59))) (cos-57 0))))) 1) ok Expression: (64 (85 (12 37 -1 9 (37) 2) (16 0 8 15)) (16 0 16 30)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) ((cos-* cos-37) 2))) ((((cos-57 3) 0) 8) 15))) ((((cos-57 3) 0) 16) 30)) ok Expression: (64 (85 (12 37 -1 9 (37) 2) (16 12 4 0 9)) (16 24 8 0 18)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) ((cos-* cos-37) 2))) (((((cos-57 4) 12) 4) 0) 9))) (((((cos-57 4) 24) 8) 0) 18)) ok Expression: (64 (85 (12 37 -1 9 (37) 2) (16 8 9 5 7 10)) (16 16 18 10 14 20)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) ((cos-* cos-37) 2))) ((((((cos-57 5) 8) 9) 5) 7) 10))) ((((((cos-57 5) 16) 18) 10) 14) 20)) ok Expression: (64 (85 (12 37 -1 9 (37) 2) (16 10 12 19 8 3 1)) (16 20 24 38 16 6 2)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) ((cos-* cos-37) 2))) (((((((cos-57 6) 10) 12) 19) 8) 3) 1))) (((((((cos-57 6) 20) 24) 38) 16) 6) 2)) ok Expression: (64 (85 (12 37 42) (16 5 18 4)) (16 42 42 42)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) 42)) ((((cos-57 3) 5) 18) 4))) ((((cos-57 3) 42) 42) 42)) ok Expression: (64 (85 (12 37 42) (16 3 10 17 11)) (16 42 42 42 42)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) 42)) (((((cos-57 4) 3) 10) 17) 11))) (((((cos-57 4) 42) 42) 42) 42)) ok Expression: (64 (85 (12 37 42) (16 5 13 6 16 2)) (16 42 42 42 42 42)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) 42)) ((((((cos-57 5) 5) 13) 6) 16) 2))) ((((((cos-57 5) 42) 42) 42) 42) 42)) ok Expression: (64 (85 (12 37 42) (16 9 1 19 14 6 10)) (16 42 42 42 42 42 42)) Translation: ((cos-64 ((cos-85 (lambda (cos-37) 42)) (((((((cos-57 6) 9) 1) 19) 14) 6) 10))) (((((((cos-57 6) 42) 42) 42) 42) 42) 42)) ok Expression: (13 87 -1 26 (86 59) (15 (49 (61 -1 59) 2) (86 (58 -1 59) (87 (86) (60 -1 59))) (15 (2 (61 -1 59) 1) (58 -1 59) (32)))) Translation: (begin (define cos-87 (lambda (cos-86) (lambda (cos-59) (if (tish ((cos-49 (cos-61 cos-59)) 2)) ((cos-86 (cos-58 cos-59)) ((cos-87 cos-86) (cos-60 cos-59))) (if (tish ((cos-= (cos-61 cos-59)) 1)) (cos-58 cos-59) cos-undefined))))) 1) ok Expression: (2 (87 (10) (16 5 12 2)) 19) Translation: ((cos-= ((cos-87 cos-+) ((((cos-57 3) 5) 12) 2))) 19) ok Expression: (2 (87 (10) (16 11 18 1 4)) 34) Translation: ((cos-= ((cos-87 cos-+) (((((cos-57 4) 11) 18) 1) 4))) 34) ok Expression: (2 (87 (10) (16 15 13 10 12 2)) 52) Translation: ((cos-= ((cos-87 cos-+) ((((((cos-57 5) 15) 13) 10) 12) 2))) 52) ok Expression: (2 (87 (10) (16 12 6 17 15 4 10)) 64) Translation: ((cos-= ((cos-87 cos-+) (((((((cos-57 6) 12) 6) 17) 15) 4) 10))) 64) 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: (0 88) Translation: (cos-intro 88) ok ; MATH show an example of recursive evaluation ; skipping over a lot of definitions and desugarings Expression: (13 89 -1 12 51 -1 12 37 -1 15 (3 (37) 0) (9 (37) -1 51 (51) (11 (37) 1)) 1) Translation: (begin (define cos-89 (lambda (cos-51) (lambda (cos-37) (if (tish ((cos-> cos-37) 0)) ((cos-* cos-37) ((cos-51 cos-51) ((cos-- cos-37) 1))) 1)))) 1) ok Expression: (13 47 -1 12 37 -1 15 (3 (37) 0) (9 (37) -1 47 -1 11 (37) 1) 1) Translation: (begin (define cos-47 (lambda (cos-37) (if (tish ((cos-> cos-37) 0)) ((cos-* cos-37) (cos-47 ((cos-- cos-37) 1))) 1))) 1) ok Expression: (2 (89 (89) 0) 1) Translation: ((cos-= ((cos-89 cos-89) 0)) 1) ok Expression: (2 (89 (89) 1) 1) Translation: ((cos-= ((cos-89 cos-89) 1)) 1) ok Expression: (2 (89 (89) 2) 2) Translation: ((cos-= ((cos-89 cos-89) 2)) 2) ok Expression: (2 (89 (89) 3) 6) Translation: ((cos-= ((cos-89 cos-89) 3)) 6) ok Expression: (2 (89 (89) 4) 24) Translation: ((cos-= ((cos-89 cos-89) 4)) 24) ok Expression: (2 (89 (89) 5) 120) Translation: ((cos-= ((cos-89 cos-89) 5)) 120) ok Expression: (2 (47 0) 1) Translation: ((cos-= (cos-47 0)) 1) ok Expression: (2 (47 1) 1) Translation: ((cos-= (cos-47 1)) 1) ok Expression: (2 (47 2) 2) Translation: ((cos-= (cos-47 2)) 2) ok Expression: (2 (47 3) 6) Translation: ((cos-= (cos-47 3)) 6) ok Expression: (2 (47 4) 24) Translation: ((cos-= (cos-47 4)) 24) ok Expression: (2 (47 5) 120) Translation: ((cos-= (cos-47 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: (13 90 -1 12 37 -1 12 36 -1 12 38 -1 37 (36) (38)) Translation: (begin (define cos-90 (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) ((cos-37 cos-36) cos-38))))) 1) ok Expression: (13 91 -1 12 36 -1 12 38 -1 36) Translation: (begin (define cos-91 (lambda (cos-36) (lambda (cos-38) cos-36))) 1) ok Expression: (13 92 -1 12 36 -1 12 38 -1 38) Translation: (begin (define cos-92 (lambda (cos-36) (lambda (cos-38) cos-38))) 1) ok Expression: (13 93 -1 12 37 -1 12 36 -1 12 38 -1 90 (38) (37) (36)) Translation: (begin (define cos-93 (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) (((cos-90 cos-38) cos-37) cos-36))))) 1) ok Expression: (13 94 -1 12 37 -1 37 (91)) Translation: (begin (define cos-94 (lambda (cos-37) (cos-37 cos-91))) 1) ok Expression: (13 95 -1 12 37 -1 37 (92)) Translation: (begin (define cos-95 (lambda (cos-37) (cos-37 cos-92))) 1) ok Expression: (13 96 -1 12 51 -1 12 37 -1 37) Translation: (begin (define cos-96 (lambda (cos-51) (lambda (cos-37) cos-37))) 1) ok Expression: (13 97 -1 12 51 -1 12 37 -1 51 (37)) Translation: (begin (define cos-97 (lambda (cos-51) (lambda (cos-37) (cos-51 cos-37)))) 1) ok Expression: (13 98 -1 12 51 -1 12 37 -1 51 (51 (37))) Translation: (begin (define cos-98 (lambda (cos-51) (lambda (cos-37) (cos-51 (cos-51 cos-37))))) 1) ok Expression: (13 99 -1 12 48 -1 12 51 -1 12 37 -1 51 ((48 (51)) (37))) Translation: (begin (define cos-99 (lambda (cos-48) (lambda (cos-51) (lambda (cos-37) (cos-51 ((cos-48 cos-51) cos-37)))))) 1) ok Expression: (13 100 -1 12 101 -1 12 102 -1 (101 (99)) (102)) Translation: (begin (define cos-100 (lambda (cos-101) (lambda (cos-102) ((cos-101 cos-99) cos-102)))) 1) ok Expression: (13 103 -1 12 101 -1 12 102 -1 (101 (100 -1 102)) (96)) Translation: (begin (define cos-103 (lambda (cos-101) (lambda (cos-102) ((cos-101 (cos-100 cos-102)) cos-96)))) 1) ok Expression: (13 104 -1 12 48 -1 95 -1 (48 (12 86 -1 93 (99 -1 94 -1 86) (94 -1 86))) (93 (96) (96))) Translation: (begin (define cos-104 (lambda (cos-48) (cos-95 ((cos-48 (lambda (cos-86) ((cos-93 (cos-99 (cos-94 cos-86))) (cos-94 cos-86)))) ((cos-93 cos-96) cos-96))))) 1) ok Expression: (13 105 -1 12 48 -1 (48 (12 106 -1 92) (91))) Translation: (begin (define cos-105 (lambda (cos-48) ((cos-48 (lambda (cos-106) cos-92)) cos-91))) 1) ok Expression: (13 107 -1 12 51 -1 (12 37 -1 51 (37 (37))) (12 37 -1 51 (37 (37)))) Translation: (begin (define cos-107 (lambda (cos-51) ((lambda (cos-37) (cos-51 (cos-37 cos-37))) (lambda (cos-37) (cos-51 (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: (13 108 -1 12 109 -1 109 (12 37 -1 10 (37) 1) 0) Translation: (begin (define cos-108 (lambda (cos-109) ((cos-109 (lambda (cos-37) ((cos-+ cos-37) 1))) 0))) 1) ok Expression: (2 0 (108 -1 96)) Translation: ((cos-= 0) (cos-108 cos-96)) ok Expression: (2 1 (108 -1 97)) Translation: ((cos-= 1) (cos-108 cos-97)) ok Expression: (2 2 (108 -1 98)) Translation: ((cos-= 2) (cos-108 cos-98)) ok Expression: (13 110 -1 12 37 -1 15 (2 0 (37)) (96) (99 -1 110 -1 11 (37) 1)) Translation: (begin (define cos-110 (lambda (cos-37) (if (tish ((cos-= 0) cos-37)) cos-96 (cos-99 (cos-110 ((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: (0 19) Translation: (cos-intro 19) ok Expression: (1 5 (10 5 1)) Translation: ((cos-< 5) ((cos-+ 5) 1)) ok Expression: (1 4 (10 4 1)) Translation: ((cos-< 4) ((cos-+ 4) 1)) ok Expression: (1 3 (10 3 1)) Translation: ((cos-< 3) ((cos-+ 3) 1)) ok Expression: (1 2 (10 2 1)) Translation: ((cos-< 2) ((cos-+ 2) 1)) ok Expression: (1 1 (10 1 1)) Translation: ((cos-< 1) ((cos-+ 1) 1)) ok Expression: (1 0 (10 0 1)) Translation: ((cos-< 0) ((cos-+ 0) 1)) ok Expression: (19 (12 37 -1 1 (37) (10 (37) 1))) Translation: (cos-forall (lambda (cos-37) ((cos-< cos-37) ((cos-+ cos-37) 1)))) ok Expression: (1 5 (9 5 2)) Translation: ((cos-< 5) ((cos-* 5) 2)) ok Expression: (1 4 (9 4 2)) Translation: ((cos-< 4) ((cos-* 4) 2)) ok Expression: (1 3 (9 3 2)) Translation: ((cos-< 3) ((cos-* 3) 2)) ok Expression: (1 2 (9 2 2)) Translation: ((cos-< 2) ((cos-* 2) 2)) ok Expression: (1 1 (9 1 2)) Translation: ((cos-< 1) ((cos-* 1) 2)) ok Expression: (4 -1 1 0 (9 0 2)) Translation: (cos-not ((cos-< 0) ((cos-* 0) 2))) ok Expression: (4 -1 19 (12 37 -1 1 (37) (9 (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: (4 -1 2 5 (9 2 2)) Translation: (cos-not ((cos-= 5) ((cos-* 2) 2))) ok Expression: (2 4 (9 2 2)) Translation: ((cos-= 4) ((cos-* 2) 2)) ok Expression: (4 -1 2 3 (9 2 2)) Translation: (cos-not ((cos-= 3) ((cos-* 2) 2))) ok Expression: (4 -1 2 2 (9 2 2)) Translation: (cos-not ((cos-= 2) ((cos-* 2) 2))) ok Expression: (4 -1 2 1 (9 2 2)) Translation: (cos-not ((cos-= 1) ((cos-* 2) 2))) ok Expression: (4 -1 2 0 (9 2 2)) Translation: (cos-not ((cos-= 0) ((cos-* 2) 2))) ok Expression: (0 20) Translation: (cos-intro 20) ok Expression: (20 (12 37 -1 2 (37) (9 2 2))) Translation: (cos-exists (lambda (cos-37) ((cos-= cos-37) ((cos-* 2) 2)))) ok Expression: (4 -1 2 5 (10 5 2)) Translation: (cos-not ((cos-= 5) ((cos-+ 5) 2))) ok Expression: (4 -1 2 4 (10 4 2)) Translation: (cos-not ((cos-= 4) ((cos-+ 4) 2))) ok Expression: (4 -1 2 3 (10 3 2)) Translation: (cos-not ((cos-= 3) ((cos-+ 3) 2))) ok Expression: (4 -1 2 2 (10 2 2)) Translation: (cos-not ((cos-= 2) ((cos-+ 2) 2))) ok Expression: (4 -1 2 1 (10 1 2)) Translation: (cos-not ((cos-= 1) ((cos-+ 1) 2))) ok Expression: (4 -1 2 0 (10 0 2)) Translation: (cos-not ((cos-= 0) ((cos-+ 0) 2))) ok Expression: (4 (20 (12 37 -1 2 (37) (10 (37) 2)))) Translation: (cos-not (cos-exists (lambda (cos-37) ((cos-= cos-37) ((cos-+ cos-37) 2))))) ok ; MATH introduce logical implication Expression: (0 111) Translation: (cos-intro 111) ok Expression: (13 111 -1 12 37 -1 12 36 -1 4 -1 5 (37) (4 -1 36)) Translation: (begin (define cos-111 (lambda (cos-37) (lambda (cos-36) (cos-not ((cos-and cos-37) (cos-not cos-36)))))) 1) ok Expression: (111 (43) (43)) Translation: ((cos-111 cos-43) cos-43) ok Expression: (4 -1 111 (43) (44)) Translation: (cos-not ((cos-111 cos-43) cos-44)) ok Expression: (111 (44) (43)) Translation: ((cos-111 cos-44) cos-43) ok Expression: (111 (44) (44)) Translation: ((cos-111 cos-44) cos-44) ok Expression: (19 (12 37 -1 19 (12 36 -1 111 (111 (37) (36)) (111 (4 -1 36) (4 -1 37))))) Translation: (cos-forall (lambda (cos-37) (cos-forall (lambda (cos-36) ((cos-111 ((cos-111 cos-37) cos-36)) ((cos-111 (cos-not cos-36)) (cos-not cos-37))))))) ok ; MATH introduce sets and set membership Expression: (0 112) Translation: (cos-intro 112) ok Expression: (13 112 -1 12 37 -1 12 59 -1 4 -1 2 (67 (59) (37) (12 36 0) 1) 0) Translation: (begin (define cos-112 (lambda (cos-37) (lambda (cos-59) (cos-not ((cos-= ((((cos-67 cos-59) cos-37) (lambda (cos-36) 0)) 1)) 0))))) 1) ok Expression: (112 8 (16 8 4 3 0 5)) Translation: ((cos-112 8) ((((((cos-57 5) 8) 4) 3) 0) 5)) ok Expression: (112 5 (16 8 4 3 0 5)) Translation: ((cos-112 5) ((((((cos-57 5) 8) 4) 3) 0) 5)) ok Expression: (112 0 (16 8 4 3 0 5)) Translation: ((cos-112 0) ((((((cos-57 5) 8) 4) 3) 0) 5)) ok Expression: (112 1 (16 1 0 3 9 5)) Translation: ((cos-112 1) ((((((cos-57 5) 1) 0) 3) 9) 5)) ok Expression: (112 3 (16 1 0 3 9 5)) Translation: ((cos-112 3) ((((((cos-57 5) 1) 0) 3) 9) 5)) ok Expression: (112 0 (16 1 0 3 9 5)) Translation: ((cos-112 0) ((((((cos-57 5) 1) 0) 3) 9) 5)) ok Expression: (112 5 (16 6 8 1 0 2 5)) Translation: ((cos-112 5) (((((((cos-57 6) 6) 8) 1) 0) 2) 5)) ok Expression: (112 1 (16 6 8 1 0 2 5)) Translation: ((cos-112 1) (((((((cos-57 6) 6) 8) 1) 0) 2) 5)) ok Expression: (112 5 (16 6 8 1 0 2 5)) Translation: ((cos-112 5) (((((((cos-57 6) 6) 8) 1) 0) 2) 5)) ok Expression: (112 6 (16 6 8 3 9 2 5)) Translation: ((cos-112 6) (((((((cos-57 6) 6) 8) 3) 9) 2) 5)) ok Expression: (112 6 (16 6 8 3 9 2 5)) Translation: ((cos-112 6) (((((((cos-57 6) 6) 8) 3) 9) 2) 5)) ok Expression: (112 5 (16 6 8 3 9 2 5)) Translation: ((cos-112 5) (((((((cos-57 6) 6) 8) 3) 9) 2) 5)) ok Expression: (112 4 (16 6 4 1 7 2 5)) Translation: ((cos-112 4) (((((((cos-57 6) 6) 4) 1) 7) 2) 5)) ok Expression: (112 1 (16 6 4 1 7 2 5)) Translation: ((cos-112 1) (((((((cos-57 6) 6) 4) 1) 7) 2) 5)) ok Expression: (112 7 (16 6 4 1 7 2 5)) Translation: ((cos-112 7) (((((((cos-57 6) 6) 4) 1) 7) 2) 5)) ok Expression: (4 -1 112 6 (16 8 3 7 9)) Translation: (cos-not ((cos-112 6) (((((cos-57 4) 8) 3) 7) 9))) ok Expression: (4 -1 112 6 (16 8 4 1 3 5)) Translation: (cos-not ((cos-112 6) ((((((cos-57 5) 8) 4) 1) 3) 5))) ok Expression: (4 -1 112 6 (16 9 2 5)) Translation: (cos-not ((cos-112 6) ((((cos-57 3) 9) 2) 5))) ok Expression: (4 -1 112 0 (16 7 2 5)) Translation: (cos-not ((cos-112 0) ((((cos-57 3) 7) 2) 5))) ok Expression: (4 -1 112 6 (16 3 5)) Translation: (cos-not ((cos-112 6) (((cos-57 2) 3) 5))) ok ; rules for set equality Expression: (13 113 -1 12 37 -1 12 36 -1 15 (3 (61 -1 37) 0) (5 (112 (58 -1 37) (36)) (113 (60 -1 37) (36))) (43)) Translation: (begin (define cos-113 (lambda (cos-37) (lambda (cos-36) (if (tish ((cos-> (cos-61 cos-37)) 0)) ((cos-and ((cos-112 (cos-58 cos-37)) cos-36)) ((cos-113 (cos-60 cos-37)) cos-36)) cos-43)))) 1) ok Expression: (13 114 -1 12 37 -1 12 36 -1 5 (113 (37) (36)) (113 (36) (37))) Translation: (begin (define cos-114 (lambda (cos-37) (lambda (cos-36) ((cos-and ((cos-113 cos-37) cos-36)) ((cos-113 cos-36) cos-37))))) 1) ok Expression: (114 (16 1 5 9) (16 5 1 9)) Translation: ((cos-114 ((((cos-57 3) 1) 5) 9)) ((((cos-57 3) 5) 1) 9)) ok Expression: (114 (16 1 5 9) (16 9 1 5)) Translation: ((cos-114 ((((cos-57 3) 1) 5) 9)) ((((cos-57 3) 9) 1) 5)) ok Expression: (4 -1 114 (16 1 5 9) (16 1 5)) Translation: (cos-not ((cos-114 ((((cos-57 3) 1) 5) 9)) (((cos-57 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: (112 5 (30 (12 37 -1 2 (10 (37) 10) 15))) Translation: ((cos-112 5) (cos-all (lambda (cos-37) ((cos-= ((cos-+ cos-37) 10)) 15)))) ok Expression: (112 3 (30 (12 37 -1 2 (9 (37) 3) (10 (37) 6)))) Translation: ((cos-112 3) (cos-all (lambda (cos-37) ((cos-= ((cos-* cos-37) 3)) ((cos-+ cos-37) 6))))) ok Expression: (13 115 -1 16) Translation: (begin (define cos-115 (cos-57 0)) 1) ok Expression: (112 0 (31)) Translation: ((cos-112 0) cos-natural-set) ok Expression: (19 (12 37 -1 111 (112 (37) (31)) (112 (10 (37) 1) (31)))) Translation: (cos-forall (lambda (cos-37) ((cos-111 ((cos-112 cos-37) cos-natural-set)) ((cos-112 ((cos-+ cos-37) 1)) cos-natural-set)))) ok Expression: (112 1 (31)) Translation: ((cos-112 1) cos-natural-set) ok Expression: (112 2 (31)) Translation: ((cos-112 2) cos-natural-set) ok Expression: (112 3 (31)) Translation: ((cos-112 3) cos-natural-set) ok Expression: (112 4 (31)) Translation: ((cos-112 4) cos-natural-set) ok Expression: (112 5 (31)) Translation: ((cos-112 5) cos-natural-set) ok Expression: (112 6 (31)) Translation: ((cos-112 6) cos-natural-set) ok Expression: (112 7 (31)) Translation: ((cos-112 7) cos-natural-set) ok Expression: (112 8 (31)) Translation: ((cos-112 8) cos-natural-set) ok Expression: (112 9 (31)) Translation: ((cos-112 9) cos-natural-set) ok Expression: (13 116 -1 16 (43) (44)) Translation: (begin (define cos-116 (((cos-57 2) cos-43) cos-44)) 1) ok Expression: (112 (43) (116)) Translation: ((cos-112 cos-43) cos-116) ok Expression: (112 (44) (116)) Translation: ((cos-112 cos-44) cos-116) ok ; actually, to simplify semantics elsewhere, true and false ; are now just 0 and 1 so they are not distinct from ints Expression: (13 117 -1 30 -1 12 37 -1 20 -1 12 36 -1 5 (112 (36) (31)) (2 (9 2 (36)) (37))) Translation: (begin (define cos-117 (cos-all (lambda (cos-37) (cos-exists (lambda (cos-36) ((cos-and ((cos-112 cos-36) cos-natural-set)) ((cos-= ((cos-* 2) cos-36)) cos-37))))))) 1) ok Expression: (112 0 (31)) Translation: ((cos-112 0) cos-natural-set) ok Expression: (112 0 (117)) Translation: ((cos-112 0) cos-117) ok Expression: (112 1 (31)) Translation: ((cos-112 1) cos-natural-set) ok Expression: (4 -1 112 1 (117)) Translation: (cos-not ((cos-112 1) cos-117)) ok Expression: (112 2 (31)) Translation: ((cos-112 2) cos-natural-set) ok Expression: (112 2 (117)) Translation: ((cos-112 2) cos-117) ok Expression: (112 3 (31)) Translation: ((cos-112 3) cos-natural-set) ok Expression: (4 -1 112 3 (117)) Translation: (cos-not ((cos-112 3) cos-117)) ok Expression: (112 4 (31)) Translation: ((cos-112 4) cos-natural-set) ok Expression: (112 4 (117)) Translation: ((cos-112 4) cos-117) ok Expression: (112 5 (31)) Translation: ((cos-112 5) cos-natural-set) ok Expression: (4 -1 112 5 (117)) Translation: (cos-not ((cos-112 5) cos-117)) ok Expression: (112 6 (31)) Translation: ((cos-112 6) cos-natural-set) ok Expression: (112 6 (117)) Translation: ((cos-112 6) cos-117) ok ; MATH introduce graph structures Expression: (13 118 -1 26 (119 120) (52 (119) (120))) Translation: (begin (define cos-118 (lambda (cos-119) (lambda (cos-120) ((cos-52 cos-119) cos-120)))) 1) ok Expression: (13 121 -1 118 (16 1 2 3 4) (16 (16 1 2) (16 2 3) (16 1 4))) Translation: (begin (define cos-121 ((cos-118 (((((cos-57 4) 1) 2) 3) 4)) ((((cos-57 3) (((cos-57 2) 1) 2)) (((cos-57 2) 2) 3)) (((cos-57 2) 1) 4)))) 1) ok Expression: (13 122 -1 26 (123 124 125) (20 -1 12 70 -1 15 (5 (49 (70) 0) (1 (70) (61 -1 62 (123) 1))) (64 (62 (62 (123) 1) (70)) (16 (124) (125))) (44))) Translation: (begin (define cos-122 (lambda (cos-123) (lambda (cos-124) (lambda (cos-125) (cos-exists (lambda (cos-70) (if (tish ((cos-and ((cos-49 cos-70) 0)) ((cos-< cos-70) (cos-61 ((cos-62 cos-123) 1))))) ((cos-64 ((cos-62 ((cos-62 cos-123) 1)) cos-70)) (((cos-57 2) cos-124) cos-125)) cos-44))))))) 1) ok Expression: (2 (122 (121) 1 2) (43)) Translation: ((cos-= (((cos-122 cos-121) 1) 2)) cos-43) ok Expression: (2 (122 (121) 1 3) (44)) Translation: ((cos-= (((cos-122 cos-121) 1) 3)) cos-44) ok Expression: (2 (122 (121) 2 4) (44)) Translation: ((cos-= (((cos-122 cos-121) 2) 4)) cos-44) 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: (13 126 -1 26 (123 124 125) (15 (2 (124) (125)) (43) (15 (122 (123) (124) (125)) (43) (20 (12 127 -1 15 (122 (123) (124) (127)) (126 (123) (127) (125)) (44)))))) Translation: (begin (define cos-126 (lambda (cos-123) (lambda (cos-124) (lambda (cos-125) (if (tish ((cos-= cos-124) cos-125)) cos-43 (if (tish (((cos-122 cos-123) cos-124) cos-125)) cos-43 (cos-exists (lambda (cos-127) (if (tish (((cos-122 cos-123) cos-124) cos-127)) (((cos-126 cos-123) cos-127) cos-125) cos-44))))))))) 1) ok Expression: (2 (126 (121) 1 2) (43)) Translation: ((cos-= (((cos-126 cos-121) 1) 2)) cos-43) ok Expression: (2 (126 (121) 1 3) (43)) Translation: ((cos-= (((cos-126 cos-121) 1) 3)) cos-43) ok Expression: (2 (126 (121) 2 4) (44)) Translation: ((cos-= (((cos-126 cos-121) 2) 4)) cos-44) ok ; MATH show how to execute a sequence of instructions Expression: (0 128) Translation: (cos-intro 128) ok Expression: (13 81 -1 25) Translation: (begin (define cos-81 cos-translate) 1) ok Expression: (13 129 -1 12 37 -1 15 (49 (61 -1 37) 1) (63 (79 -1 37) (129 -1 80 -1 37)) (37)) Translation: (begin (define cos-129 (lambda (cos-37) (if (tish ((cos-49 (cos-61 cos-37)) 1)) ((cos-63 (cos-79 cos-37)) (cos-129 (cos-80 cos-37))) cos-37))) 1) ok ; test reverse Expression: (64 (16 1 2 3) (129 -1 16 3 2 1)) Translation: ((cos-64 ((((cos-57 3) 1) 2) 3)) (cos-129 ((((cos-57 3) 3) 2) 1))) ok Expression: (13 25 -1 77 ((82 (81))) (12 37 -1 15 (24 -1 37) (82 -1 37) (15 (2 (58 -1 37) 128) (25 (16 (16 12 37 (16 58 (16 37))) (63 16 (129 -1 60 -1 37)))) (82 -1 37)))) Translation: (begin (define cos-translate ((lambda (cos-82) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-82 cos-37) (if (tish ((cos-= (cos-58 cos-37)) 128)) (cos-translate (((cos-57 2) ((((cos-57 3) 12) 37) (((cos-57 2) 58) ((cos-57 1) 37)))) ((cos-63 16) (cos-129 (cos-60 cos-37))))) (cos-82 cos-37))))) cos-81)) 1) ok Expression: (2 (128 1 7 2 4) 4) Translation: ((cos-= ((lambda (cos-37) (cos-58 cos-37)) (((((cos-57 4) 4) 2) 7) 1))) 4) ok Expression: (2 (128 (28 (53) 88) (28 (53) 6) (29 -1 53)) 6) Translation: ((cos-= ((lambda (cos-37) (cos-58 cos-37)) ((((cos-57 3) (cos-get! cos-53)) ((cos-set! cos-53) 6)) ((cos-set! cos-53) 88)))) 6) ok Expression: (2 (128 (28 (54) 88) (28 (53) 6) (29 -1 54)) 88) Translation: ((cos-= ((lambda (cos-37) (cos-58 cos-37)) ((((cos-57 3) (cos-get! cos-54)) ((cos-set! cos-53) 6)) ((cos-set! cos-54) 88)))) 88) ok Expression: (2 (128 (28 (53) 88) (28 (53) 6) (29 -1 53) 4) 4) Translation: ((cos-= ((lambda (cos-37) (cos-58 cos-37)) (((((cos-57 4) 4) (cos-get! cos-53)) ((cos-set! cos-53) 6)) ((cos-set! cos-53) 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: (13 130 -1 26 (131 37 36 38) (15 (8 (38) (37)) (36) (131 (38)))) Translation: (begin (define cos-130 (lambda (cos-131) (lambda (cos-37) (lambda (cos-36) (lambda (cos-38) (if (tish ((cos-equal cos-38) cos-37)) cos-36 (cos-131 cos-38))))))) 1) ok Expression: (13 132 -1 26 (131 37) (131 (37))) Translation: (begin (define cos-132 (lambda (cos-131) (lambda (cos-37) (cos-131 cos-37)))) 1) ok Expression: (13 133 -1 12 37 -1 32) Translation: (begin (define cos-133 (lambda (cos-37) cos-undefined)) 1) ok Expression: (13 134 -1 12 135 -1 12 37 -1 135) Translation: (begin (define cos-134 (lambda (cos-135) (lambda (cos-37) cos-135))) 1) ok Expression: (13 136 -1 130 (130 (133) 3 2) 4 9) Translation: (begin (define cos-136 (((cos-130 (((cos-130 cos-133) 3) 2)) 4) 9)) 1) ok Expression: (2 (132 (136) 4) 9) Translation: ((cos-= ((cos-132 cos-136) 4)) 9) ok Expression: (2 (132 (136) 3) 2) Translation: ((cos-= ((cos-132 cos-136) 3)) 2) ok Expression: (2 (132 (136) 8) (32)) Translation: ((cos-= ((cos-132 cos-136) 8)) cos-undefined) ok Expression: (2 (132 (136) 15) (32)) Translation: ((cos-= ((cos-132 cos-136) 15)) cos-undefined) ok Expression: (2 (132 (130 (136) 15 33) 15) 33) Translation: ((cos-= ((cos-132 (((cos-130 cos-136) 15) 33)) 15)) 33) ok Expression: (2 (132 (136) 15) (32)) Translation: ((cos-= ((cos-132 cos-136) 15)) cos-undefined) ok Expression: (13 137 -1 12 37 -1 15 (64 (37) (16)) (133) (130 (137 (60 -1 37)) (65 -1 58 -1 37) (66 -1 58 -1 37))) Translation: (begin (define cos-137 (lambda (cos-37) (if (tish ((cos-64 cos-37) (cos-57 0))) cos-133 (((cos-130 (cos-137 (cos-60 cos-37))) (cos-65 (cos-58 cos-37))) (cos-66 (cos-58 cos-37)))))) 1) ok Expression: (2 (132 (137 -1 16 (52 3 10) (52 2 20) (52 1 30)) 3) 10) Translation: ((cos-= ((cos-132 (cos-137 ((((cos-57 3) ((cos-52 3) 10)) ((cos-52 2) 20)) ((cos-52 1) 30)))) 3)) 10) ok Expression: (2 (132 (137 -1 16 (52 3 10) (52 2 20) (52 1 30)) 1) 30) Translation: ((cos-= ((cos-132 (cos-137 ((((cos-57 3) ((cos-52 3) 10)) ((cos-52 2) 20)) ((cos-52 1) 30)))) 1)) 30) ok ; OBJECT introduce simple mutable structures Expression: (13 138 -1 12 59 -1 77 ((139 (85 (12 37 -1 27 0) (59)))) (12 68 -1 62 (139) (71 (59) (68) (12 37 0)))) Translation: (begin (define cos-138 (lambda (cos-59) ((lambda (cos-139) (lambda (cos-68) ((cos-62 cos-139) (((cos-71 cos-59) cos-68) (lambda (cos-37) 0))))) ((cos-85 (lambda (cos-37) (cos-make-cell 0))) cos-59)))) 1) ok Expression: (13 140 -1 138 -1 16 141 142 143) Translation: (begin (define cos-140 (cos-138 ((((cos-57 3) 141) 142) 143))) 1) ok Expression: (28 (140 141) 15) Translation: ((cos-set! (cos-140 141)) 15) ok Expression: (2 (29 -1 140 141) 15) Translation: ((cos-= (cos-get! (cos-140 141))) 15) ok ; OBJECT introduce method handler wrappers Expression: (13 144 -1 26 (145 146 147) (130 (145) (146) (12 106 -1 147 -1 145))) Translation: (begin (define cos-144 (lambda (cos-145) (lambda (cos-146) (lambda (cos-147) (((cos-130 cos-145) cos-146) (lambda (cos-106) (cos-147 cos-145))))))) 1) ok Expression: (13 148 -1 12 37 -1 37 0) Translation: (begin (define cos-148 (lambda (cos-37) (cos-37 0))) 1) ok Expression: (13 149 -1 138 -1 16 37 36) Translation: (begin (define cos-149 (cos-138 (((cos-57 2) 37) 36))) 1) ok Expression: (28 (149 37) 10) Translation: ((cos-set! (cos-149 37)) 10) ok Expression: (28 (149 36) 20) Translation: ((cos-set! (cos-149 36)) 20) ok Expression: (2 (29 -1 149 37) 10) Translation: ((cos-= (cos-get! (cos-149 37))) 10) ok Expression: (2 (29 -1 149 36) 20) Translation: ((cos-= (cos-get! (cos-149 36))) 20) ok Expression: (13 150 -1 144 (149) 151 (12 152 -1 10 (29 -1 152 37) (29 -1 152 36))) Translation: (begin (define cos-150 (((cos-144 cos-149) 151) (lambda (cos-152) ((cos-+ (cos-get! (cos-152 37))) (cos-get! (cos-152 36)))))) 1) ok Expression: (2 (29 -1 150 37) 10) Translation: ((cos-= (cos-get! (cos-150 37))) 10) ok Expression: (2 (29 -1 150 36) 20) Translation: ((cos-= (cos-get! (cos-150 36))) 20) ok Expression: (2 (148 -1 150 151) 30) Translation: ((cos-= (cos-148 (cos-150 151))) 30) ok Expression: (28 (150 36) 10) Translation: ((cos-set! (cos-150 36)) 10) ok Expression: (2 (148 -1 150 151) 20) Translation: ((cos-= (cos-148 (cos-150 151))) 20) ok Expression: (28 (149 36) 5) Translation: ((cos-set! (cos-149 36)) 5) ok Expression: (2 (148 -1 150 151) 15) Translation: ((cos-= (cos-148 (cos-150 151))) 15) ok ; TURING introduce turing machine model ; just for fun! Expression: (13 153 -1 12 37 -1 15 (3 (61 -1 37) 0) (15 (3 (61 -1 37) 1) (60 -1 37) (16 -1 16)) (16 -1 16)) Translation: (begin (define cos-153 (lambda (cos-37) (if (tish ((cos-> (cos-61 cos-37)) 0)) (if (tish ((cos-> (cos-61 cos-37)) 1)) (cos-60 cos-37) ((cos-57 1) (cos-57 0))) ((cos-57 1) (cos-57 0))))) 1) ok Expression: (13 154 -1 12 37 -1 15 (3 (61 -1 37) 0) (58 -1 37) (16)) Translation: (begin (define cos-154 (lambda (cos-37) (if (tish ((cos-> (cos-61 cos-37)) 0)) (cos-58 cos-37) (cos-57 0)))) 1) ok Expression: (13 155 -1 12 156 -1 77 ((37 (66 -1 156))) (15 (3 (61 -1 37) 0) (58 -1 37) (16))) Translation: (begin (define cos-155 (lambda (cos-156) ((lambda (cos-37) (if (tish ((cos-> (cos-61 cos-37)) 0)) (cos-58 cos-37) (cos-57 0))) (cos-66 cos-156)))) 1) ok Expression: (13 157 -1 26 (156 158 159) (15 (2 (158) 1) (52 (63 (159) (65 -1 156)) (153 -1 66 -1 156)) (15 (2 (158) 0) (52 (153 -1 65 -1 156) (63 (154 -1 65 -1 156) (63 (159) (153 -1 66 -1 156)))) (52 (65 -1 156) (63 (159) (153 -1 66 -1 156)))))) Translation: (begin (define cos-157 (lambda (cos-156) (lambda (cos-158) (lambda (cos-159) (if (tish ((cos-= cos-158) 1)) ((cos-52 ((cos-63 cos-159) (cos-65 cos-156))) (cos-153 (cos-66 cos-156))) (if (tish ((cos-= cos-158) 0)) ((cos-52 (cos-153 (cos-65 cos-156))) ((cos-63 (cos-154 (cos-65 cos-156))) ((cos-63 cos-159) (cos-153 (cos-66 cos-156))))) ((cos-52 (cos-65 cos-156)) ((cos-63 cos-159) (cos-153 (cos-66 cos-156)))))))))) 1) ok Expression: (13 160 -1 26 (161 162 79 156) (15 (2 (162) (79)) (156) (77 ((163 (161 (162) (155 -1 156)))) (160 (161) (62 (163) 0) (79) (157 (156) (62 (163) 1) (62 (163) 2)))))) Translation: (begin (define cos-160 (lambda (cos-161) (lambda (cos-162) (lambda (cos-79) (lambda (cos-156) (if (tish ((cos-= cos-162) cos-79)) cos-156 ((lambda (cos-163) ((((cos-160 cos-161) ((cos-62 cos-163) 0)) cos-79) (((cos-157 cos-156) ((cos-62 cos-163) 1)) ((cos-62 cos-163) 2)))) ((cos-161 cos-162) (cos-155 cos-156))))))))) 1) ok Expression: (13 164 -1 12 37 -1 52 (16) (37)) Translation: (begin (define cos-164 (lambda (cos-37) ((cos-52 (cos-57 0)) cos-37))) 1) ok Expression: (13 165 -1 12 37 -1 12 59 -1 15 (3 (61 -1 59) 0) (15 (8 (79 -1 59) (37)) (165 (37) (80 -1 59)) (59)) (59)) Translation: (begin (define cos-165 (lambda (cos-37) (lambda (cos-59) (if (tish ((cos-> (cos-61 cos-59)) 0)) (if (tish ((cos-equal (cos-79 cos-59)) cos-37)) ((cos-165 cos-37) (cos-80 cos-59)) cos-59) cos-59)))) 1) ok Expression: (13 166 -1 12 37 -1 165 (16) (66 -1 37)) Translation: (begin (define cos-166 (lambda (cos-37) ((cos-165 (cos-57 0)) (cos-66 cos-37)))) 1) ok Expression: (13 167 -1 137 -1 16 (52 168 (137 -1 16 (52 0 (16 168 1 0)) (52 1 (16 168 1 1)) (52 (16) (16 169 0 (16))))) (52 169 (137 -1 16 (52 0 (16 170 0 1)) (52 1 (16 169 0 0)) (52 (16) (16 171 2 1)))) (52 170 (137 -1 16 (52 0 (16 170 0 0)) (52 1 (16 170 0 1)) (52 (16) (16 171 1 (16))))) (52 171 (137 -1 16))) Translation: (begin (define cos-167 (cos-137 (((((cos-57 4) ((cos-52 168) (cos-137 ((((cos-57 3) ((cos-52 0) ((((cos-57 3) 168) 1) 0))) ((cos-52 1) ((((cos-57 3) 168) 1) 1))) ((cos-52 (cos-57 0)) ((((cos-57 3) 169) 0) (cos-57 0))))))) ((cos-52 169) (cos-137 ((((cos-57 3) ((cos-52 0) ((((cos-57 3) 170) 0) 1))) ((cos-52 1) ((((cos-57 3) 169) 0) 0))) ((cos-52 (cos-57 0)) ((((cos-57 3) 171) 2) 1)))))) ((cos-52 170) (cos-137 ((((cos-57 3) ((cos-52 0) ((((cos-57 3) 170) 0) 0))) ((cos-52 1) ((((cos-57 3) 170) 0) 1))) ((cos-52 (cos-57 0)) ((((cos-57 3) 171) 1) (cos-57 0))))))) ((cos-52 171) (cos-137 (cos-57 0)))))) 1) ok Expression: (64 (166 -1 160 (167) 168 171 (164 -1 16 1 0 0 1)) (16 1 0 1 0)) Translation: ((cos-64 (cos-166 ((((cos-160 cos-167) 168) 171) (cos-164 (((((cos-57 4) 1) 0) 0) 1))))) (((((cos-57 4) 1) 0) 1) 0)) ok Expression: (64 (166 -1 160 (167) 168 171 (164 -1 16 1 1 1)) (16 1 0 0 0)) Translation: ((cos-64 (cos-166 ((((cos-160 cos-167) 168) 171) (cos-164 ((((cos-57 3) 1) 1) 1))))) (((((cos-57 4) 1) 0) 0) 0)) ok Expression: (64 (166 -1 160 (167) 168 171 (164 -1 16 1 1 1 0 0 0 1 1 1)) (16 1 1 1 0 0 1 0 0 0)) Translation: ((cos-64 (cos-166 ((((cos-160 cos-167) 168) 171) (cos-164 ((((((((((cos-57 9) 1) 1) 1) 0) 0) 0) 1) 1) 1))))) ((((((((((cos-57 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: (13 172 (26 (173) (26 (37) (15 (2 (37) 174) (173) 0)))) Translation: (begin (define cos-172 (lambda (cos-173) (lambda (cos-37) (if (tish ((cos-= cos-37) 174)) cos-173 0)))) 1) ok Expression: (13 175 (12 37 (15 (24 (37)) (172 (37)) (37)))) Translation: (begin (define cos-175 (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-172 cos-37) cos-37))) 1) ok Expression: (13 176 (26 (177 178) (15 (24 (178)) (2 (177) 174) (4 (24 ((175 (178)) (177))))))) Translation: (begin (define cos-176 (lambda (cos-177) (lambda (cos-178) (if (tish (cos-number? cos-178)) ((cos-= cos-177) 174) (cos-not (cos-number? ((cos-175 cos-178) cos-177))))))) 1) ok ; add version of lambda that allows types to be declared Expression: (13 81 (25)) Translation: (begin (define cos-81 cos-translate) 1) ok Expression: (13 25 (77 ((82 (81))) (12 37 (15 (24 (37)) (82 (37)) (15 (2 (58 (37)) 26) (77 ((83 (58 (60 (37)))) (76 (58 (60 (60 (37)))))) (15 (3 (61 (83)) 0) (15 (24 (79 (83))) (25 (16 26 (80 (83)) (16 12 (79 (83)) (76)))) (77 ((179 (65 (79 (83)))) (180 (66 (79 (83))))) (25 (16 26 (80 (83)) (16 12 (179) (16 77 (16 (16 (179) (16 (16 175 (16 (179))) (180)))) (76))))))) (25 (76)))) (82 (37))))))) Translation: (begin (define cos-translate ((lambda (cos-82) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-82 cos-37) (if (tish ((cos-= (cos-58 cos-37)) 26)) ((lambda (cos-76) ((lambda (cos-83) (if (tish ((cos-> (cos-61 cos-83)) 0)) (if (tish (cos-number? (cos-79 cos-83))) (cos-translate ((((cos-57 3) 26) (cos-80 cos-83)) ((((cos-57 3) 12) (cos-79 cos-83)) cos-76))) ((lambda (cos-180) ((lambda (cos-179) (cos-translate ((((cos-57 3) 26) (cos-80 cos-83)) ((((cos-57 3) 12) cos-179) ((((cos-57 3) 77) ((cos-57 1) (((cos-57 2) cos-179) (((cos-57 2) (((cos-57 2) 175) ((cos-57 1) cos-179))) cos-180)))) cos-76))))) (cos-65 (cos-79 cos-83)))) (cos-66 (cos-79 cos-83)))) (cos-translate cos-76))) (cos-58 (cos-60 cos-37)))) (cos-58 (cos-60 (cos-60 cos-37)))) (cos-82 cos-37))))) cos-81)) 1) ok ; add conditional form Expression: (13 81 (25)) Translation: (begin (define cos-81 cos-translate) 1) ok Expression: (13 25 (77 ((82 (81))) (12 37 (15 (24 (37)) (82 (37)) (15 (2 (58 (37)) 181) (77 ((182 (58 (60 (37)))) (183 (60 (60 (37))))) (15 (3 (61 (183)) 0) (25 (16 15 (65 (182)) (66 (182)) (63 181 (183)))) (25 (182)))) (82 (37))))))) Translation: (begin (define cos-translate ((lambda (cos-82) (lambda (cos-37) (if (tish (cos-number? cos-37)) (cos-82 cos-37) (if (tish ((cos-= (cos-58 cos-37)) 181)) ((lambda (cos-183) ((lambda (cos-182) (if (tish ((cos-> (cos-61 cos-183)) 0)) (cos-translate (((((cos-57 4) 15) (cos-65 cos-182)) (cos-66 cos-182)) ((cos-63 181) cos-183))) (cos-translate cos-182))) (cos-58 (cos-60 cos-37)))) (cos-60 (cos-60 cos-37))) (cos-82 cos-37))))) cos-81)) 1) ok Expression: (2 99 (181 99)) Translation: ((cos-= 99) 99) ok Expression: (2 8 (181 ((43) 8) 11)) Translation: ((cos-= 8) (if (tish cos-43) 8 11)) ok Expression: (2 11 (181 ((44) 8) 11)) Translation: ((cos-= 11) (if (tish cos-44) 8 11)) ok Expression: (2 7 (181 ((44) 3) ((43) 7) 11)) Translation: ((cos-= 7) (if (tish cos-44) 3 (if (tish cos-43) 7 11))) ok Expression: (2 3 (181 ((43) 3) ((43) 7) 11)) Translation: ((cos-= 3) (if (tish cos-43) 3 (if (tish cos-43) 7 11))) ok Expression: (2 11 (181 ((44) 3) ((44) 7) 11)) Translation: ((cos-= 11) (if (tish cos-44) 3 (if (tish cos-44) 7 11))) ok Expression: (13 184 (26 (185 59) (15 (3 (61 (59)) 0) (15 (185 (58 (59))) (184 (185) (60 (59))) (63 (58 (59)) (184 (185) (60 (59))))) (59)))) Translation: (begin (define cos-184 (lambda (cos-185) (lambda (cos-59) (if (tish ((cos-> (cos-61 cos-59)) 0)) (if (tish (cos-185 (cos-58 cos-59))) ((cos-184 cos-185) (cos-60 cos-59)) ((cos-63 (cos-58 cos-59)) ((cos-184 cos-185) (cos-60 cos-59)))) cos-59)))) 1) ok Expression: (13 186 (26 (37) (184 (26 (36) (2 (36) (37)))))) Translation: (begin (define cos-186 (lambda (cos-37) (cos-184 (lambda (cos-36) ((cos-= cos-36) cos-37))))) 1) ok Expression: (64 (16 1 2 3 5) (186 4 (16 1 2 3 4 5))) Translation: ((cos-64 (((((cos-57 4) 1) 2) 3) 5)) ((cos-186 4) ((((((cos-57 5) 1) 2) 3) 4) 5))) ok Expression: (64 (16 1 2 3 5) (186 4 (16 1 4 2 4 3 4 5))) Translation: ((cos-64 (((((cos-57 4) 1) 2) 3) 5)) ((cos-186 4) ((((((((cos-57 7) 1) 4) 2) 4) 3) 4) 5))) ok Expression: (13 187 (26 (177 178) (77 ((188 (175 (178)))) (188 (177))))) Translation: (begin (define cos-187 (lambda (cos-177) (lambda (cos-178) ((lambda (cos-188) (cos-188 cos-177)) (cos-175 cos-178))))) 1) ok Expression: (13 189 (26 ((37 174) (36 174)) (187 174 (10 (37) (36))))) Translation: (begin (define cos-189 (lambda (cos-37) ((lambda (cos-37) (lambda (cos-36) ((lambda (cos-36) ((cos-187 174) ((cos-+ cos-37) cos-36))) ((cos-175 cos-36) 174)))) ((cos-175 cos-37) 174)))) 1) ok Expression: (2 42 (189 (172 10) (172 32))) Translation: ((cos-= 42) ((cos-189 (cos-172 10)) (cos-172 32))) ok Expression: (2 42 (189 10 32)) Translation: ((cos-= 42) ((cos-189 10) 32)) ok Expression: (13 190 (26 (51) ((26 (37) (51 (26 (36) ((37 (37)) (36))))) (26 (37) (51 (26 (36) ((37 (37)) (36)))))))) Translation: (begin (define cos-190 (lambda (cos-51) ((lambda (cos-37) (cos-51 (lambda (cos-36) ((cos-37 cos-37) cos-36)))) (lambda (cos-37) (cos-51 (lambda (cos-36) ((cos-37 cos-37) cos-36))))))) 1) ok ; OBJECT an example object -- a 2D point Expression: (13 191 (26 (37 36) (190 (26 (152 192) (181 ((2 (192) 37) (37)) ((2 (192) 36) (36)) ((2 (192) 191) (152)) ((2 (192) 10) (26 ((86 191)) (191 (10 (37) (86 37)) (10 (36) (86 36))))) ((2 (192) 2) (26 ((86 191)) (5 (2 (37) (86 37)) (2 (36) (86 36))))) 0))))) Translation: (begin (define cos-191 (lambda (cos-37) (lambda (cos-36) (cos-190 (lambda (cos-152) (lambda (cos-192) (if (tish ((cos-= cos-192) 37)) cos-37 (if (tish ((cos-= cos-192) 36)) cos-36 (if (tish ((cos-= cos-192) 191)) cos-152 (if (tish ((cos-= cos-192) 10)) (lambda (cos-86) ((lambda (cos-86) ((cos-191 ((cos-+ cos-37) (cos-86 37))) ((cos-+ cos-36) (cos-86 36)))) ((cos-175 cos-86) 191))) (if (tish ((cos-= cos-192) 2)) (lambda (cos-86) ((lambda (cos-86) ((cos-and ((cos-= cos-37) (cos-86 37))) ((cos-= cos-36) (cos-86 36)))) ((cos-175 cos-86) 191))) 0))))))))))) 1) ok Expression: (13 193 (191 1 11)) Translation: (begin (define cos-193 ((cos-191 1) 11)) 1) ok Expression: (13 194 (191 2 22)) Translation: (begin (define cos-194 ((cos-191 2) 22)) 1) ok Expression: (2 1 (193 37)) Translation: ((cos-= 1) (cos-193 37)) ok Expression: (2 22 (194 36)) Translation: ((cos-= 22) (cos-194 36)) ok Expression: (2 11 ((191 11 12) 37)) Translation: ((cos-= 11) (((cos-191 11) 12) 37)) ok Expression: (2 11 (((191 11 12) 191) 37)) Translation: ((cos-= 11) ((((cos-191 11) 12) 191) 37)) ok Expression: (2 16 (((191 16 17) 191) 37)) Translation: ((cos-= 16) ((((cos-191 16) 17) 191) 37)) ok Expression: (2 33 (193 10 (194) 36)) Translation: ((cos-= 33) (((cos-193 10) cos-194) 36)) ok Expression: (193 10 (194) 2 (191 3 33)) Translation: ((((cos-193 10) cos-194) 2) ((cos-191 3) 33)) ok Expression: (194 10 (193) 2 (191 3 33)) Translation: ((((cos-194 10) cos-193) 2) ((cos-191 3) 33)) ok Expression: ((191 100 200) 10 (191 200 100) 2 (191 300 300)) Translation: ((((((cos-191 100) 200) 10) ((cos-191 200) 100)) 2) ((cos-191 300) 300)) ok Expression: (176 191 (193)) Translation: ((cos-176 191) cos-193) ok Expression: (4 (176 174 (193))) Translation: (cos-not ((cos-176 174) cos-193)) ok Expression: (176 174 5) Translation: ((cos-176 174) 5) ok Expression: (4 (176 191 5)) Translation: (cos-not ((cos-176 191) 5)) ok ; OBJECT an example object -- a container Expression: (13 195 (26 (37) (77 ((196 (27 (16)))) (190 (26 (152 192) (181 ((2 (192) 195) (152)) ((2 (192) 197) (29 (196))) ((2 (192) 100) (26 (37) (15 (4 (112 (37) (29 (196)))) (28 (196) (63 (37) (29 (196)))) (44)))) ((2 (192) 198) (26 (37) (28 (196) (186 (37) (29 (196)))))) ((2 (192) 2) (26 ((109 195)) (114 (152 197) (109 197)))) 0)))))) Translation: (begin (define cos-195 (lambda (cos-37) ((lambda (cos-196) (cos-190 (lambda (cos-152) (lambda (cos-192) (if (tish ((cos-= cos-192) 195)) cos-152 (if (tish ((cos-= cos-192) 197)) (cos-get! cos-196) (if (tish ((cos-= cos-192) 100)) (lambda (cos-37) (if (tish (cos-not ((cos-112 cos-37) (cos-get! cos-196)))) ((cos-set! cos-196) ((cos-63 cos-37) (cos-get! cos-196))) cos-44)) (if (tish ((cos-= cos-192) 198)) (lambda (cos-37) ((cos-set! cos-196) ((cos-186 cos-37) (cos-get! cos-196)))) (if (tish ((cos-= cos-192) 2)) (lambda (cos-109) ((lambda (cos-109) ((cos-114 (cos-152 197)) (cos-109 197))) ((cos-175 cos-109) 195))) 0))))))))) (cos-make-cell (cos-57 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: (13 199 (195 200)) Translation: (begin (define cos-199 (cos-195 200)) 1) ok Expression: (199 100 77) Translation: ((cos-199 100) 77) ok Expression: (199 100 88) Translation: ((cos-199 100) 88) ok Expression: (199 100 99) Translation: ((cos-199 100) 99) ok Expression: (114 (199 197) (16 77 88 99)) Translation: ((cos-114 (cos-199 197)) ((((cos-57 3) 77) 88) 99)) ok Expression: (199 198 88) Translation: ((cos-199 198) 88) ok Expression: (114 (199 197) (16 77 99)) Translation: ((cos-114 (cos-199 197)) (((cos-57 2) 77) 99)) ok Expression: (13 201 (195 200)) Translation: (begin (define cos-201 (cos-195 200)) 1) ok Expression: (201 100 77) Translation: ((cos-201 100) 77) ok Expression: (201 100 99) Translation: ((cos-201 100) 99) ok Expression: (201 2 (199)) Translation: ((cos-201 2) cos-199) ok ; OBJECT expressing inheritance ; counter-container adds one method to container: count Expression: (13 202 (26 (37) (77 ((203 (195 200))) (190 (26 (152 192) (181 ((2 (192) 202) (152)) ((2 (192) 204) (61 (203 197))) (203 (192)))))))) Translation: (begin (define cos-202 (lambda (cos-37) ((lambda (cos-203) (cos-190 (lambda (cos-152) (lambda (cos-192) (if (tish ((cos-= cos-192) 202)) cos-152 (if (tish ((cos-= cos-192) 204)) (cos-61 (cos-203 197)) (cos-203 cos-192))))))) (cos-195 200)))) 1) ok Expression: (13 205 (202 200)) Translation: (begin (define cos-205 (cos-202 200)) 1) ok Expression: (2 0 (205 204)) Translation: ((cos-= 0) (cos-205 204)) ok Expression: (205 100 4) Translation: ((cos-205 100) 4) ok Expression: (2 1 (205 204)) Translation: ((cos-= 1) (cos-205 204)) ok Expression: (205 100 5) Translation: ((cos-205 100) 5) ok Expression: (2 2 (205 204)) Translation: ((cos-= 2) (cos-205 204)) 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: (13 206 (26 (207 208) (15 (3 (61 (207)) 0) (206 (80 (207)) (63 (79 (207)) (208))) (208)))) Translation: (begin (define cos-206 (lambda (cos-207) (lambda (cos-208) (if (tish ((cos-> (cos-61 cos-207)) 0)) ((cos-206 (cos-80 cos-207)) ((cos-63 (cos-79 cos-207)) cos-208)) cos-208)))) 1) ok Expression: (64 (206 (16 1 2 3) (16 4 5 6)) (16 1 2 3 4 5 6)) Translation: ((cos-64 ((cos-206 ((((cos-57 3) 1) 2) 3)) ((((cos-57 3) 4) 5) 6))) (((((((cos-57 6) 1) 2) 3) 4) 5) 6)) ok Expression: (13 209 (12 37 (12 59 (15 (3 (61 (59)) 0) (63 (58 (59)) (209 (37) (60 (59)))) (16 (37)))))) Translation: (begin (define cos-209 (lambda (cos-37) (lambda (cos-59) (if (tish ((cos-> (cos-61 cos-59)) 0)) ((cos-63 (cos-58 cos-59)) ((cos-209 cos-37) (cos-60 cos-59))) ((cos-57 1) cos-37))))) 1) ok Expression: (64 (209 5 (16 1 2)) (16 1 2 5)) Translation: ((cos-64 ((cos-209 5) (((cos-57 2) 1) 2))) ((((cos-57 3) 1) 2) 5)) ok Expression: (13 210 (26 (185 59) (15 (3 (61 (59)) 0) (15 (185 (58 (59))) (63 (58 (59)) (210 (185) (60 (59)))) (210 (185) (60 (59)))) (59)))) Translation: (begin (define cos-210 (lambda (cos-185) (lambda (cos-59) (if (tish ((cos-> (cos-61 cos-59)) 0)) (if (tish (cos-185 (cos-58 cos-59))) ((cos-63 (cos-58 cos-59)) ((cos-210 cos-185) (cos-60 cos-59))) ((cos-210 cos-185) (cos-60 cos-59))) cos-59)))) 1) ok Expression: (13 211 (77 ((212 (27 0))) (26 (37) (77 ((213 (29 (212)))) (128 (28 (212) (10 (213) 1)) (213)))))) Translation: (begin (define cos-211 ((lambda (cos-212) (lambda (cos-37) ((lambda (cos-213) ((lambda (cos-37) (cos-58 cos-37)) (((cos-57 2) cos-213) ((cos-set! cos-212) ((cos-+ cos-213) 1))))) (cos-get! cos-212)))) (cos-make-cell 0))) 1) ok Expression: (2 (211 200) 0) Translation: ((cos-= (cos-211 200)) 0) ok Expression: (2 (211 200) 1) Translation: ((cos-= (cos-211 200)) 1) ok Expression: (2 (211 200) 2) Translation: ((cos-= (cos-211 200)) 2) ok Expressio