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" -- done ; Author: Paul Fitzpatrick, paulfitz@ai.mit.edu ; Copyright (c) 2004 Paul Fitzpatrick ; ; This file is part of CosmicOS. ; ; CosmicOS is free software; you can redistribute it and / or modify ; it under the terms of the GNU General Public License as published by ; the Free Software Foundation; either version 2 of the License, or ; (at your option) any later version. ; ; CosmicOS is distributed in the hope that it will be useful, ; but WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ; GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public License ; along with CosmicOS; if not, write to the Free Software ; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ; ; MATH introduce numbers (in unary notation) ; Here we count up, then count down, then go through primes, etc. ; There is a bunch of syntax around the numbers, but that ; can just be treated as noise at this point - it doesn't matter. ; The key is to set up the structure of ';'-terminated sequences, ; and to introduce one simple representation of numbers. ; Symbols like intro and unary are encoded as binary numbers, ; which again can be treated as noise for now. Convert: (7 -1 8 0) ok Convert: (7 -1 8 1 0) ok Convert: (7 -1 8 1 1 0) ok Convert: (7 -1 8 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 0) ok Convert: (7 -1 8 1 1 0) ok Convert: (7 -1 8 1 0) ok Convert: (7 -1 8 0) ok Convert: (7 -1 8 0) ok Convert: (7 -1 8 1 0) ok Convert: (7 -1 8 1 1 0) ok Convert: (7 -1 8 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 0) ok Convert: (7 -1 8 1 0) ok Convert: (7 -1 8 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 0) ok Convert: (7 -1 8 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 0) ok Convert: (7 -1 8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) 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. Convert: (7 5) ok Convert: (5 (8 1 1 1 0) (8 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok ; MATH now introduce other relational operators ; After this lesson, it should be clear what contexts ; < > and = are appropriate in. Convert: (7 12) ok Convert: (12 (8 1 1 1 1 0) (8 0)) ok Convert: (12 (8 1 1 1 1 0) (8 1 0)) ok Convert: (12 (8 1 1 1 0) (8 0)) ok Convert: (12 (8 1 1 1 1 1 0) (8 1 1 1 0)) ok Convert: (12 (8 1 1 0) (8 0)) ok Convert: (12 (8 1 0) (8 0)) ok Convert: (12 (8 1 1 0) (8 0)) ok Convert: (12 (8 1 1 0) (8 0)) ok Convert: (12 (8 1 1 1 0) (8 0)) ok Convert: (12 (8 1 0) (8 0)) ok Convert: (12 (8 1 1 1 1 1 0) (8 1 1 0)) ok Convert: (7 11) ok Convert: (11 (8 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (11 (8 0) (8 1 1 0)) ok Convert: (11 (8 0) (8 1 1 1 1 1 0)) ok Convert: (11 (8 1 0) (8 1 1 1 0)) ok Convert: (11 (8 0) (8 1 1 1 0)) ok Convert: (11 (8 1 0) (8 1 1 1 0)) ok Convert: (11 (8 1 1 0) (8 1 1 1 1 1 1 0)) ok Convert: (11 (8 0) (8 1 0)) ok Convert: (11 (8 0) (8 1 1 1 1 1 1 0)) ok Convert: (11 (8 0) (8 1 1 1 1 1 1 0)) ok Convert: (11 (8 1 0) (8 1 1 1 1 0)) ok ; drive the lesson home Convert: (5 (8 0) (8 0)) ok Convert: (11 (8 0) (8 1 0)) ok Convert: (11 (8 0) (8 1 1 0)) ok Convert: (12 (8 1 0) (8 0)) ok Convert: (5 (8 1 0) (8 1 0)) ok Convert: (11 (8 1 0) (8 1 1 0)) ok Convert: (12 (8 1 1 0) (8 0)) ok Convert: (12 (8 1 1 0) (8 1 0)) ok Convert: (5 (8 1 1 0) (8 1 1 0)) ok Convert: (11 (8 1 0) (8 1 1 1 1 1 0)) ok Convert: (11 (8 1 0) (8 1 1 1 1 0)) ok Convert: (11 (8 0) (8 1 0)) ok Convert: (12 (8 1 1 1 1 0) (8 0)) ok Convert: (11 (8 1 1 0) (8 1 1 1 0)) ok Convert: (12 (8 1 1 1 1 0) (8 1 0)) ok Convert: (11 (8 0) (8 1 1 1 1 1 0)) ok Convert: (12 (8 1 0) (8 0)) ok Convert: (11 (8 1 0) (8 1 1 1 1 0)) ok Convert: (12 (8 1 1 0) (8 0)) ok Convert: (11 (8 1 0) (8 1 1 0)) ok ; SYNTAX introduce tail notation ; I've recently added the / symbol to reduce the need ; for unnecessary levels of nesting and parentheses. ; This might be a little early to talk about it, since it ; is most valuable for complex expressions. Convert: (5 (8 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 0) -1 8 1 1 0) ok Convert: (11 (8 1 1 0) (8 1 1 1 1 0)) ok Convert: (11 (8 1 1 0) -1 8 1 1 1 1 0) ok Convert: (12 (8 1 1 0) (8 1 0)) ok Convert: (12 (8 1 1 0) -1 8 1 0) ok ; MATH introduce the NOT logical operator Convert: (7 6) ok Convert: (5 (8 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 0) (8 1 0)) ok Convert: (6 -1 11 (8 1 0) (8 1 0)) ok Convert: (6 -1 12 (8 1 0) (8 1 0)) ok Convert: (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (5 (8 0) (8 0)) ok Convert: (6 -1 11 (8 0) (8 0)) ok Convert: (6 -1 12 (8 0) (8 0)) ok Convert: (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 5 (8 0) (8 1 0)) ok Convert: (11 (8 0) (8 1 0)) ok Convert: (6 -1 12 (8 0) (8 1 0)) ok Convert: (6 -1 5 (8 1 0) (8 1 1 1 1 0)) ok Convert: (11 (8 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 5 (8 1 1 0) (8 1 1 1 1 0)) ok Convert: (11 (8 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 5 (8 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (11 (8 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) ok Convert: (11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) ok Convert: (6 -1 12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) ok Convert: (6 -1 5 (8 0) (8 1 1 1 0)) ok Convert: (11 (8 0) (8 1 1 1 0)) ok Convert: (6 -1 12 (8 0) (8 1 1 1 0)) ok Convert: (6 -1 5 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 0)) ok Convert: (6 -1 5 (8 1 0) (8 0)) ok Convert: (12 (8 1 0) (8 0)) ok Convert: (6 -1 11 (8 1 0) (8 0)) ok Convert: (6 -1 5 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 5 (8 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (12 (8 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 5 (8 1 1 1 1 0) (8 1 1 0)) ok Convert: (12 (8 1 1 1 1 0) (8 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 0) (8 1 1 0)) ok Convert: (6 -1 5 (8 1 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (12 (8 1 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (6 -1 11 (8 1 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok ; MATH introduce the AND logical operator Convert: (7 13) ok Convert: (13 (12 (8 1 1 1 0) (8 1 0)) (11 (8 1 0) (8 1 1 1 0))) ok Convert: (13 (5 (8 1 0) (8 1 0)) (5 (8 1 0) (8 1 0))) ok Convert: (13 (12 (8 1 1 1 1 1 0) (8 1 1 0)) (5 (8 1 0) (8 1 0))) ok Convert: (13 (12 (8 1 1 1 1 1 0) (8 1 1 0)) (12 (8 1 1 1 1 0) (8 1 1 1 0))) ok Convert: (13 (12 (8 1 1 1 1 1 0) (8 1 1 1 0)) (12 (8 1 1 1 0) (8 1 0))) ok Convert: (13 (12 (8 1 1 1 0) (8 1 0)) (11 (8 1 1 0) (8 1 1 1 1 0))) ok Convert: (13 (12 (8 1 1 1 1 0) (8 1 0)) (5 (8 1 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (13 (11 (8 1 0) (8 1 1 0)) (5 (8 1 1 0) (8 1 1 0))) ok Convert: (13 (11 (8 1 1 0) (8 1 1 1 1 1 0)) (11 (8 0) (8 1 1 0))) ok Convert: (13 (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 0)) (5 (8 0) (8 0))) ok Convert: (6 -1 13 (11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) (5 (8 1 0) (8 1 1 1 1 1 0))) ok Convert: (6 -1 13 (12 (8 1 1 1 1 0) (8 1 1 0)) (5 (8 1 1 1 0) (8 1 1 0))) ok Convert: (6 -1 13 (5 (8 1 1 1 0) (8 1 1 1 0)) (12 (8 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 13 (11 (8 1 1 0) (8 1 1 1 1 0)) (12 (8 1 1 1 0) (8 1 1 1 0))) ok Convert: (6 -1 13 (5 (8 1 1 1 1 0) (8 1 1 1 1 0)) (5 (8 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (6 -1 13 (5 (8 1 1 1 0) (8 1 1 0)) (11 (8 0) (8 1 1 1 0))) ok Convert: (6 -1 13 (5 (8 1 1 1 1 1 0) (8 1 1 1 1 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 1 0))) ok Convert: (6 -1 13 (11 (8 1 1 1 1 1 0) (8 1 0)) (5 (8 1 0) (8 1 0))) ok Convert: (6 -1 13 (12 (8 0) (8 1 1 0)) (11 (8 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 13 (12 (8 1 1 1 1 0) (8 1 1 1 1 1 0)) (12 (8 1 1 1 1 0) (8 1 1 0))) ok Convert: (6 -1 13 (11 (8 1 1 1 1 0) (8 1 0)) (12 (8 1 0) (8 1 1 0))) ok Convert: (6 -1 13 (11 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0)) (12 (8 0) (8 1 1 0))) ok Convert: (6 -1 13 (5 (8 1 1 1 1 1 0) (8 1 0)) (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (6 -1 13 (5 (8 1 1 1 1 1 0) (8 1 1 1 0)) (11 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 13 (11 (8 1 1 0) (8 0)) (5 (8 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 13 (5 (8 0) (8 1 0)) (11 (8 1 1 1 1 1 1 0) (8 1 1 0))) ok Convert: (13 (11 (8 0) (8 1 1 1 0)) (5 (8 1 1 1 0) (8 1 1 1 0))) ok Convert: (6 -1 13 (12 (8 1 1 1 1 0) (8 1 1 1 1 0)) (11 (8 1 1 0) (8 0))) ok Convert: (6 -1 13 (5 (8 1 1 0) (8 1 1 1 0)) (12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (13 (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (13 (11 (8 1 0) (8 1 1 1 1 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (6 -1 13 (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 1 0)) (12 (8 1 1 1 0) (8 1 0))) ok Convert: (6 -1 13 (11 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0)) (5 (8 1 1 0) (8 1 1 1 0))) ok Convert: (13 (12 (8 1 1 1 1 1 1 0) (8 1 1 1 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (6 -1 13 (5 (8 0) (8 1 1 1 0)) (5 (8 1 1 1 1 1 0) (8 1 0))) ok ; MATH introduce the OR logical operator Convert: (7 14) ok Convert: (14 (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) (5 (8 1 0) (8 1 0))) ok Convert: (14 (11 (8 1 1 0) (8 1 1 1 1 0)) (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0)) (5 (8 1 0) (8 1 0))) ok Convert: (14 (12 (8 1 1 0) (8 1 0)) (12 (8 1 1 1 1 0) (8 1 1 0))) ok Convert: (14 (12 (8 1 1 1 0) (8 0)) (11 (8 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (14 (5 (8 1 1 1 1 0) (8 1 1 1 1 0)) (11 (8 1 0) (8 1 1 1 0))) ok Convert: (14 (11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (14 (11 (8 0) (8 1 0)) (5 (8 1 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (14 (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 1 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (5 (8 1 0) (8 1 0)) (11 (8 0) (8 1 0))) ok Convert: (14 (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (14 (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 0)) (5 (8 1 1 0) (8 0))) ok Convert: (14 (11 (8 1 1 1 0) (8 1 1 1 1 1 1 0)) (12 (8 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (12 (8 1 1 1 1 0) (8 1 1 1 0)) (12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (5 (8 1 0) (8 1 0)) (5 (8 1 1 1 0) (8 1 1 0))) ok Convert: (14 (11 (8 1 0) (8 0)) (5 (8 1 1 0) (8 1 1 0))) ok Convert: (14 (11 (8 1 1 1 0) (8 1 0)) (5 (8 0) (8 0))) ok Convert: (14 (12 (8 1 1 0) (8 1 1 1 1 1 0)) (12 (8 1 1 1 1 0) (8 1 1 0))) ok Convert: (14 (12 (8 1 1 1 0) (8 1 1 1 1 1 0)) (5 (8 1 1 0) (8 1 1 0))) ok Convert: (14 (12 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0)) (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (6 -1 14 (5 (8 1 0) (8 1 1 1 0)) (5 (8 1 0) (8 0))) ok Convert: (6 -1 14 (12 (8 1 0) (8 1 1 0)) (12 (8 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 14 (5 (8 1 1 1 0) (8 1 1 1 1 0)) (12 (8 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 14 (12 (8 0) (8 1 1 1 1 0)) (5 (8 1 0) (8 0))) ok Convert: (6 -1 14 (11 (8 1 1 1 1 0) (8 1 0)) (11 (8 1 1 1 1 1 1 0) (8 1 1 0))) ok Convert: (6 -1 14 (12 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0)) (5 (8 1 0) (8 1 1 1 0))) ok Convert: (14 (12 (8 1 0) (8 0)) (11 (8 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (12 (8 1 0) (8 0)) (5 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (12 (8 0) (8 1 1 0)) (5 (8 1 1 1 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (14 (12 (8 1 1 0) (8 1 1 1 1 0)) (11 (8 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 14 (5 (8 1 0) (8 1 1 0)) (5 (8 1 1 0) (8 1 1 1 1 0))) ok Convert: (14 (5 (8 1 1 1 0) (8 1 1 1 1 0)) (12 (8 1 1 1 1 1 0) (8 1 1 0))) ok Convert: (6 -1 14 (12 (8 1 0) (8 1 1 1 1 1 1 0)) (11 (8 1 1 1 1 1 0) (8 0))) ok Convert: (14 (11 (8 1 0) (8 1 1 1 1 0)) (11 (8 1 1 1 0) (8 0))) ok Convert: (14 (5 (8 1 1 1 0) (8 1 1 1 0)) (12 (8 1 1 0) (8 1 1 1 0))) ok ; MATH use equality for truth values Convert: (5 (5 (8 1 1 1 1 0) (8 1 1 1 1 0)) (11 (8 1 1 0) (8 1 1 1 1 1 0))) ok Convert: (5 (5 (8 1 0) (8 1 0)) (11 (8 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (5 (5 (8 1 0) (8 1 0)) (12 (8 1 1 1 0) (8 1 1 0))) ok Convert: (5 (11 (8 1 1 0) (8 1 1 1 0)) (11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 1 1 0))) ok Convert: (5 (5 (8 1 1 1 1 0) (8 1 1 1 1 0)) (11 (8 1 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (5 (5 (8 1 1 1 0) (8 0)) (12 (8 1 1 1 1 1 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (5 (5 (8 1 1 1 1 0) (8 1 1 1 1 1 0)) (12 (8 0) (8 1 1 1 1 1 0))) ok Convert: (5 (5 (8 1 1 1 0) (8 1 0)) (5 (8 1 1 0) (8 1 1 1 0))) ok Convert: (5 (12 (8 1 1 1 0) (8 1 1 1 1 0)) (12 (8 0) (8 1 1 0))) ok Convert: (5 (5 (8 1 1 1 1 1 0) (8 0)) (12 (8 1 0) (8 1 1 1 1 1 1 0))) ok Convert: (6 -1 5 (12 (8 0) (8 1 1 1 1 1 1 0)) (5 (8 1 0) (8 1 0))) ok Convert: (6 -1 5 (12 (8 1 1 0) (8 1 1 1 0)) (5 (8 0) (8 0))) ok Convert: (6 -1 5 (5 (8 1 1 1 1 0) (8 1 1 1 1 1 0)) (11 (8 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 5 (11 (8 1 1 1 1 1 1 0) (8 1 1 1 0)) (5 (8 0) (8 0))) ok Convert: (6 -1 5 (5 (8 0) (8 1 1 1 1 0)) (5 (8 1 1 0) (8 1 1 0))) ok Convert: (6 -1 5 (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0)) (12 (8 1 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (6 -1 5 (11 (8 1 1 1 1 0) (8 1 1 1 1 1 1 0)) (12 (8 0) (8 1 1 0))) ok Convert: (6 -1 5 (5 (8 1 1 0) (8 1 1 0)) (12 (8 1 1 1 0) (8 1 1 1 0))) ok Convert: (6 -1 5 (5 (8 1 0) (8 1 0)) (11 (8 1 1 0) (8 1 0))) ok Convert: (6 -1 5 (5 (8 1 0) (8 1 0)) (5 (8 1 0) (8 1 1 1 1 0))) ok Convert: (7 16) ok Convert: (7 15) ok Convert: (5 (16) (11 (8 0) (8 1 1 1 0))) ok Convert: (5 (16) (12 (8 1 1 1 1 0) (8 1 0))) ok Convert: (5 (16) (12 (8 1 1 0) (8 1 0))) ok Convert: (5 (16) (11 (8 1 0) (8 1 1 1 1 0))) ok Convert: (5 (16) (11 (8 0) (8 1 1 0))) ok Convert: (5 (5 (8 0) (8 0)) (16)) ok Convert: (5 (11 (8 1 1 1 0) (8 1 1 1 1 0)) (16)) ok Convert: (5 (12 (8 1 1 1 1 0) (8 1 1 1 0)) (16)) ok Convert: (5 (11 (8 0) (8 1 0)) (16)) ok Convert: (5 (12 (8 1 1 1 1 0) (8 1 0)) (16)) ok Convert: (5 (15) (12 (8 0) (8 1 1 1 1 0))) ok Convert: (5 (15) (12 (8 1 1 1 0) (8 1 1 1 1 0))) ok Convert: (5 (15) (11 (8 1 1 1 0) (8 0))) ok Convert: (5 (15) (11 (8 1 1 1 1 1 0) (8 1 1 1 0))) ok Convert: (5 (15) (12 (8 0) (8 1 1 0))) ok Convert: (5 (11 (8 1 1 1 0) (8 0)) (15)) ok Convert: (5 (11 (8 1 1 1 1 1 1 0) (8 1 0)) (15)) ok Convert: (5 (12 (8 0) (8 1 1 1 1 0)) (15)) ok Convert: (5 (5 (8 1 0) (8 1 1 1 0)) (15)) ok Convert: (5 (12 (8 1 0) (8 1 1 0)) (15)) ok Convert: (5 (16) (16)) ok Convert: (5 (15) (15)) ok Convert: (6 -1 5 (16) (15)) ok Convert: (6 -1 5 (15) (16)) ok ; MATH introduce addition Convert: (7 1) ok Convert: (5 (8 1 1 1 0) -1 1 (8 1 1 1 0) (8 0)) ok Convert: (5 (8 1 1 1 1 1 0) -1 1 (8 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 0) -1 1 (8 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 0) -1 1 (8 0) (8 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) -1 1 (8 1 1 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 0) -1 1 (8 1 1 0) (8 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) -1 1 (8 1 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) -1 1 (8 1 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 0) -1 1 (8 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 0) -1 1 (8 1 0) (8 1 1 1 1 0)) ok ; MATH introduce subtraction Convert: (7 3) ok Convert: (5 (8 1 1 1 0) -1 3 (8 1 1 1 1 0) (8 1 0)) ok Convert: (5 (8 1 1 1 0) -1 3 (8 1 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 0) -1 3 (8 1 0) (8 1 0)) ok Convert: (5 (8 1 1 0) -1 3 (8 1 1 1 1 1 0) (8 1 1 1 0)) ok Convert: (5 (8 0) -1 3 (8 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 0) -1 3 (8 1 0) (8 0)) ok Convert: (5 (8 1 1 1 1 0) -1 3 (8 1 1 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 1 1 0) -1 3 (8 1 1 1 1 0) (8 1 0)) ok Convert: (5 (8 1 1 1 1 0) -1 3 (8 1 1 1 1 1 1 1 1 0) (8 1 1 1 1 0)) ok Convert: (5 (8 1 0) -1 3 (8 1 0) (8 0)) ok ; MATH introduce multiplication Convert: (7 2) ok Convert: (5 (8 0) -1 2 (8 0) (8 0)) ok Convert: (5 (8 0) -1 2 (8 0) (8 1 0)) ok Convert: (5 (8 0) -1 2 (8 0) (8 1 1 0)) ok Convert: (5 (8 0) -1 2 (8 0) (8 1 1 1 0)) ok Convert: (5 (8 0) -1 2 (8 1 0) (8 0)) ok Convert: (5 (8 1 0) -1 2 (8 1 0) (8 1 0)) ok Convert: (5 (8 1 1 0) -1 2 (8 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 1 0) -1 2 (8 1 0) (8 1 1 1 0)) ok Convert: (5 (8 0) -1 2 (8 1 1 0) (8 0)) ok Convert: (5 (8 1 1 0) -1 2 (8 1 1 0) (8 1 0)) ok Convert: (5 (8 1 1 1 1 0) -1 2 (8 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) -1 2 (8 1 1 0) (8 1 1 1 0)) ok Convert: (5 (8 0) -1 2 (8 1 1 1 0) (8 0)) ok Convert: (5 (8 1 1 1 0) -1 2 (8 1 1 1 0) (8 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) -1 2 (8 1 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 0) -1 2 (8 1 1 1 0) (8 1 1 1 0)) ok Convert: (5 (8 1 1 1 1 1 1 0) -1 2 (8 1 1 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 0) -1 2 (8 1 0) (8 1 1 0)) ok Convert: (5 (8 1 0) -1 2 (8 1 0) (8 1 0)) ok Convert: (5 (8 1 1 0) -1 2 (8 1 0) (8 1 1 0)) ok Convert: (5 (8 1 1 1 0) -1 2 (8 1 0) (8 1 1 1 0)) ok Convert: (5 (8 1 0) -1 2 (8 1 0) (8 1 0)) ok Convert: (5 (8 1 1 1 0) -1 2 (8 1 0) (8 1 1 1 0)) ok Convert: (5 (8 0) -1 2 (8 0) (8 0)) ok Convert: (5 (8 1 1 0) -1 2 (8 1 0) (8 1 1 0)) ok Convert: (5 (8 0) -1 2 (8 0) (8 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. Convert: (5 (8 0) 0) ok Convert: (5 (8 1 0) 1) ok Convert: (5 (8 1 1 0) 2) ok Convert: (5 (8 1 1 1 0) 3) ok Convert: (5 (8 1 1 1 1 0) 4) ok Convert: (5 (8 1 1 1 1 1 0) 5) ok Convert: (5 (8 1 1 1 1 1 1 0) 6) ok Convert: (5 (8 1 1 1 1 1 1 1 0) 7) ok Convert: (5 (8 1 1 1 1 1 1 1 1 0) 8) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 0) 9) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 1 0) 10) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 1 1 0) 11) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 1 1 1 0) 12) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 1 1 1 1 0) 13) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) 14) ok Convert: (5 (8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0) 15) ok Convert: (5 12 (8 1 1 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 12 (8 1 1 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 15 (8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 5 (8 1 1 1 1 1 0)) ok Convert: (5 0 (8 0)) ok Convert: (5 10 (8 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 7 (8 1 1 1 1 1 1 1 0)) ok Convert: (5 10 (8 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 14 (8 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 5 (8 1 1 1 1 1 0)) ok Convert: (5 11 (8 1 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 9 (8 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 5 (8 1 1 1 1 1 0)) ok Convert: (5 2 (8 1 1 0)) ok Convert: (5 11 (8 1 1 1 1 1 1 1 1 1 1 1 0)) ok Convert: (5 5 (8 1 1 1 1 1 0)) ok Convert: (5 (1 0 12) 12) ok Convert: (5 (1 10 3) 13) ok Convert: (5 (1 0 15) 15) ok Convert: (5 (1 8 4) 12) ok Convert: (5 (1 12 0) 12) ok Convert: (5 (1 9 13) 22) ok Convert: (5 (1 5 6) 11) ok Convert: (5 (1 11 7) 18) ok Convert: (5 (2 9 15) 135) ok Convert: (5 (2 2 8) 16) ok Convert: (5 (2 0 0) 0) ok Convert: (5 (2 2 13) 26) ok Convert: (5 (2 1 7) 7) ok Convert: (5 (2 1 2) 2) ok Convert: (5 (2 3 7) 21) ok Convert: (5 (2 10 4) 40) ok ; MATH demonstrate idea of leaving gaps in an expression ; and then filling them in afterwards ; the examples given leave a lot to be desired! Convert: ((0 34 -1 5 10 -1 1 7 -1 34) 3) ok Convert: ((0 34 -1 5 5 -1 1 2 -1 34) 3) ok Convert: ((0 34 -1 5 20 -1 1 7 -1 34) 13) ok Convert: ((0 34 -1 5 24 -1 1 13 -1 34) 11) ok Convert: ((0 34 -1 5 19 -1 1 10 -1 34) 9) ok Convert: ((0 34 -1 5 8 -1 1 0 -1 34) 8) ok Convert: ((0 34 -1 5 17 -1 1 8 -1 34) 9) ok Convert: ((0 34 -1 5 13 -1 1 7 -1 34) 6) ok Convert: (((0 34 -1 0 35 -1 5 1 -1 2 (34) (35)) 1) 1) ok Convert: (((0 34 -1 0 35 -1 5 11 -1 2 (34) (35)) 11) 1) ok Convert: (((0 34 -1 0 35 -1 5 22 -1 2 (34) (35)) 2) 11) ok Convert: (((0 34 -1 0 35 -1 5 120 -1 2 (34) (35)) 15) 8) ok Convert: (((0 34 -1 0 35 -1 5 50 -1 2 (34) (35)) 5) 10) ok Convert: (((0 34 -1 0 35 -1 5 32 -1 2 (34) (35)) 8) 4) ok Convert: (((0 34 -1 0 35 -1 5 5 -1 2 (34) (35)) 1) 5) ok Convert: (((0 34 -1 0 35 -1 5 27 -1 2 (34) (35)) 3) 9) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 60) 15) 4) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 0) 5) 0) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 165) 15) 11) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 104) 13) 8) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 36) 6) 6) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 2) 2) 1) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 165) 15) 11) ok Convert: ((((0 36 -1 0 34 -1 0 35 -1 5 (36) -1 2 (34) (35)) 70) 10) 7) ok ; MATH show some simple function calls ; and show a way to remember functions across statements Convert: (5 49 -1 (0 37 -1 37 7) (0 34 -1 2 (34) (34))) ok Convert: (5 49 -1 (0 37 -1 37 7) (0 34 -1 2 (34) (34))) ok Convert: (5 81 -1 (0 37 -1 37 9) (0 34 -1 2 (34) (34))) ok Convert: (5 16 -1 (0 37 -1 37 4) (0 34 -1 2 (34) (34))) ok Convert: (5 81 -1 (0 37 -1 37 9) (0 34 -1 2 (34) (34))) ok Convert: (5 9 -1 (0 37 -1 37 3) (0 34 -1 2 (34) (34))) ok Convert: (5 1 -1 (0 37 -1 37 1) (0 34 -1 2 (34) (34))) ok Convert: (5 1 -1 (0 37 -1 37 1) (0 34 -1 2 (34) (34))) ok Convert: (17 37 -1 0 34 -1 2 (34) (34)) ok Convert: (5 (37 9) 81) ok Convert: (5 (37 2) 4) ok Convert: (5 (37 8) 64) ok Convert: (5 (37 1) 1) ok Convert: (17 38 -1 0 34 -1 1 (34) 1) ok Convert: (5 (38 3) 4) ok Convert: (5 (38 6) 7) ok Convert: (5 (38 3) 4) ok Convert: (5 (38 0) 1) ok ; MATH show mechanisms for branching Convert: (7 18) ok Convert: (5 (18 (15) 5 0) 0) ok Convert: (5 (18 (16) 3 0) 3) ok Convert: (5 (18 (15) 6 6) 6) ok Convert: (5 (18 (16) 7 9) 7) ok Convert: (5 (18 (15) 6 6) 6) ok Convert: (5 (18 (16) 2 7) 2) ok Convert: (5 (18 (16) 0 6) 0) ok Convert: (5 (18 (16) 6 9) 6) ok Convert: (5 (18 (16) 0 4) 0) ok Convert: (5 (18 (15) 9 8) 8) ok Convert: (5 (18 (16) 4 6) 4) ok Convert: (5 (18 (15) 1 3) 3) ok Convert: (5 (18 (16) 7 3) 7) ok Convert: (5 (18 (15) 4 9) 9) ok Convert: (5 (18 (15) 2 1) 1) ok Convert: (5 (18 (16) 1 0) 1) 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 Convert: (17 39 -1 0 34 -1 0 35 -1 0 36 -1 34 (35) (36)) ok Convert: (17 40 -1 0 35 -1 0 36 -1 35) ok Convert: (17 41 -1 0 35 -1 0 36 -1 36) ok Convert: (17 42 -1 0 34 -1 0 35 -1 0 36 -1 39 (36) (34) (35)) ok Convert: (17 43 -1 0 34 -1 34 (40)) ok Convert: (17 44 -1 0 34 -1 34 (41)) ok Convert: (17 45 -1 0 46 -1 0 34 -1 34) ok Convert: (17 47 -1 0 46 -1 0 34 -1 46 (34)) ok Convert: (17 48 -1 0 46 -1 0 34 -1 46 (46 (34))) ok Convert: (17 49 -1 0 50 -1 0 46 -1 0 34 -1 46 ((50 (46)) (34))) ok Convert: (17 51 -1 0 52 -1 0 53 -1 (52 (49)) (53)) ok Convert: (17 54 -1 0 52 -1 0 53 -1 (52 (51 -1 53)) (45)) ok Convert: (17 55 -1 0 50 -1 44 -1 (50 (0 56 -1 42 (49 -1 43 -1 56) (43 -1 56))) (42 (45) (45))) ok Convert: (17 57 -1 0 50 -1 (50 (0 58 -1 41) (40))) ok Convert: (17 59 -1 0 46 -1 (0 34 -1 46 (34 (34))) (0 34 -1 46 (34 (34)))) 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 Convert: (17 60 -1 0 61 -1 61 (0 34 -1 1 (34) 1) 0) ok Convert: (5 0 (60 -1 45)) ok Convert: (5 1 (60 -1 47)) ok Convert: (5 2 (60 -1 48)) ok Convert: (17 62 -1 0 34 -1 18 (5 0 (34)) (45) (49 -1 62 -1 3 (34) 1)) ok ; MATH show an example of recursive evaluation ; skipping over a lot of definitions and desugarings Convert: (17 63 -1 0 46 -1 0 34 -1 18 (12 (34) 0) (2 (34) -1 46 (46) (3 (34) 1)) 1) ok Convert: (17 64 -1 0 34 -1 18 (12 (34) 0) (2 (34) -1 64 -1 3 (34) 1) 1) ok Convert: (5 (63 (63) 0) 1) ok Convert: (5 (63 (63) 1) 1) ok Convert: (5 (63 (63) 2) 2) ok Convert: (5 (63 (63) 3) 6) ok Convert: (5 (63 (63) 4) 24) ok Convert: (5 (63 (63) 5) 120) ok Convert: (5 (64 0) 1) ok Convert: (5 (64 1) 1) ok Convert: (5 (64 2) 2) ok Convert: (5 (64 3) 6) ok Convert: (5 (64 4) 24) ok Convert: (5 (64 5) 120) ok ; MATH introduce universal quantifier ; really need to link with sets for true correctness ; and the examples here are REALLY sparse, need much more Convert: (7 19) ok Convert: (11 5 (1 5 1)) ok Convert: (11 4 (1 4 1)) ok Convert: (11 3 (1 3 1)) ok Convert: (11 2 (1 2 1)) ok Convert: (11 1 (1 1 1)) ok Convert: (11 0 (1 0 1)) ok Convert: (19 (0 34 -1 11 (34) (1 (34) 1))) ok Convert: (11 5 (2 5 2)) ok Convert: (11 4 (2 4 2)) ok Convert: (11 3 (2 3 2)) ok Convert: (11 2 (2 2 2)) ok Convert: (11 1 (2 1 2)) ok Convert: (6 -1 11 0 (2 0 2)) ok Convert: (6 -1 19 (0 34 -1 11 (34) (2 (34) 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 Convert: (6 -1 5 5 (2 2 2)) ok Convert: (5 4 (2 2 2)) ok Convert: (6 -1 5 3 (2 2 2)) ok Convert: (6 -1 5 2 (2 2 2)) ok Convert: (6 -1 5 1 (2 2 2)) ok Convert: (6 -1 5 0 (2 2 2)) ok Convert: (7 20) ok Convert: (20 (0 34 -1 5 (34) (2 2 2))) ok Convert: (6 -1 5 5 (1 5 2)) ok Convert: (6 -1 5 4 (1 4 2)) ok Convert: (6 -1 5 3 (1 3 2)) ok Convert: (6 -1 5 2 (1 2 2)) ok Convert: (6 -1 5 1 (1 1 2)) ok Convert: (6 -1 5 0 (1 0 2)) ok Convert: (6 (20 (0 34 -1 5 (34) (1 (34) 2)))) ok ; MATH introduce logical implication Convert: (7 65) ok Convert: (17 65 -1 0 34 -1 0 35 -1 6 -1 13 (34) (6 -1 35)) ok Convert: (65 (16) (16)) ok Convert: (6 -1 65 (16) (15)) ok Convert: (65 (15) (16)) ok Convert: (65 (15) (15)) ok Convert: (19 (0 34 -1 19 (0 35 -1 65 (65 (34) (35)) (65 (6 -1 35) (6 -1 34))))) ok ; MATH illustrate lists and some list operators ; to make list describable as a function, need to preceed lists ; ... with an argument count ; lists will be written as [1 2 1] = (list 3 1 2 1) after this lesson ; it would be nice to include such syntactic sugar in the message but that ; ... is a fight for another day ; finally, lists keep an explicit record of their length ; this is to avoid the need for using a special 'nil' symbol ; ... which cannot itself be placed in the list. ; ; missing - intro to cons, car, cdr ; used to be pure-cons pure-car pure-cdr but changed for better interface to scheme ; also should introduce number? check function ; Convert: (17 66 -1 0 50 -1 0 67 -1 18 (12 (50) 1) (0 34 -1 66 (3 (50) 1) (0 35 -1 0 36 -1 67 (1 1 (35)) (21 (34) (36)))) (0 34 -1 67 1 (34))) ok Convert: (17 68 -1 0 50 -1 18 (5 (50) 0) (21 0 0) (66 (50) (0 35 -1 0 36 -1 21 (35) (36)))) ok Convert: (17 69 -1 0 70 -1 18 (5 (22 -1 70) 0) (32) (18 (5 (22 -1 70) 1) (23 -1 70) (22 -1 23 -1 70))) ok Convert: (17 71 -1 0 70 -1 18 (5 (22 -1 70) 0) (32) (18 (5 (22 -1 70) 1) (21 0 0) (21 (3 (22 -1 70) 1) (23 -1 23 -1 70)))) ok Convert: (17 72 -1 0 70 -1 22 -1 70) ok Convert: (17 73 -1 0 70 -1 0 50 -1 18 (5 (73 -1 70) 0) (32) (18 (5 (50) 0) (69 -1 70) (73 (71 -1 70) (3 (50) 1)))) ok Convert: (17 74 -1 0 34 -1 0 70 -1 18 (5 (72 -1 70) 0) (21 1 (34)) (21 (1 (72 -1 70) 1) (21 (34) (23 -1 70)))) ok Convert: (17 75 -1 0 34 -1 0 35 -1 18 (5 (72 -1 34) (72 -1 35)) (18 (12 (72 -1 34) 0) (13 (5 (69 -1 34) (69 -1 35)) (75 (71 -1 34) (71 -1 35))) (16)) (15)) ok Convert: (5 (72 -1 (68 4) 4 8 5 0) 4) ok Convert: (5 (72 -1 (68 5) 3 1 4 6 5) 5) ok Convert: (5 (72 -1 (68 6) 5 0 3 4 7 8) 6) ok Convert: (5 (72 -1 (68 7) 0 8 7 4 9 1 5) 7) ok Convert: (5 (72 -1 (68 3) 0 3 6) 3) ok Convert: (5 (69 -1 (68 5) 9 9 12 16 0) 9) ok Convert: (75 (71 -1 (68 5) 9 9 12 16 0) ((68 4) 9 12 16 0)) ok Convert: (5 (69 -1 (68 2) 1 16) 1) ok Convert: (75 (71 -1 (68 2) 1 16) ((68 1) 16)) ok Convert: (5 (69 -1 (68 8) 17 11 7 14 0 12 13 11) 17) ok Convert: (75 (71 -1 (68 8) 17 11 7 14 0 12 13 11) ((68 7) 11 7 14 0 12 13 11)) ok Convert: (5 (69 -1 (68 8) 15 17 8 6 10 18 19 14) 15) ok Convert: (75 (71 -1 (68 8) 15 17 8 6 10 18 19 14) ((68 7) 17 8 6 10 18 19 14)) ok Convert: (5 (69 -1 (68 4) 4 7 12 12) 4) ok Convert: (75 (71 -1 (68 4) 4 7 12 12) ((68 3) 7 12 12)) ok Convert: (5 (69 -1 (68 4) 6 10 6 8) 6) ok Convert: (75 (71 -1 (68 4) 6 10 6 8) ((68 3) 10 6 8)) ok Convert: (5 (69 -1 (68 2) 9 4) 9) ok Convert: (75 (71 -1 (68 2) 9 4) ((68 1) 4)) ok Convert: (5 (69 -1 (68 9) 7 4 19 17 14 10 5 7 5) 7) ok Convert: (75 (71 -1 (68 9) 7 4 19 17 14 10 5 7 5) ((68 8) 4 19 17 14 10 5 7 5)) ok Convert: (5 (69 -1 (68 1) 11) 11) ok Convert: (75 (71 -1 (68 1) 11) ((68 0))) ok Convert: (5 (69 -1 (68 1) 1) 1) ok Convert: (75 (71 -1 (68 1) 1) ((68 0))) ok Convert: (5 (73 ((68 3) 16 2 19) 1) 2) ok Convert: (5 (73 ((68 9) 19 15 15 13 17 6 10 17 14) 0) 19) ok Convert: (5 (73 ((68 5) 13 13 10 16 7) 2) 10) ok Convert: (5 (73 ((68 7) 6 17 19 3 0 14 15) 1) 17) ok Convert: (5 (73 ((68 10) 17 3 1 4 15 0 3 10 13 9) 2) 1) ok Convert: (5 (73 ((68 4) 8 0 6 18) 0) 8) ok Convert: (5 (73 ((68 10) 13 19 19 15 13 11 15 11 3 7) 6) 15) ok Convert: (5 (73 ((68 5) 10 13 7 10 5) 1) 13) ok Convert: (5 (73 ((68 2) 5 2) 1) 2) ok Convert: (5 (73 ((68 1) 14) 0) 14) ok Convert: (75 ((68 0)) ((68 0))) ok Convert: (75 ((68 1) 7) ((68 1) 7)) ok Convert: (75 ((68 2) 9 4) ((68 2) 9 4)) ok Convert: (75 ((68 3) 1 2 13) ((68 3) 1 2 13)) ok Convert: (75 ((68 4) 17 17 9 6) ((68 4) 17 17 9 6)) ok ; this next batch of examples are a bit misleading, should streamline Convert: (6 -1 75 ((68 0)) ((68 1) 4)) ok Convert: (6 -1 75 ((68 0)) ((68 1) 3)) ok Convert: (6 -1 75 ((68 1) 7) ((68 2) 4 7)) ok Convert: (6 -1 75 ((68 1) 7) ((68 2) 7 0)) ok Convert: (6 -1 75 ((68 2) 17 10) ((68 3) 1 17 10)) ok Convert: (6 -1 75 ((68 2) 17 10) ((68 3) 17 10 3)) ok Convert: (6 -1 75 ((68 3) 12 11 3) ((68 4) 5 12 11 3)) ok Convert: (6 -1 75 ((68 3) 12 11 3) ((68 4) 12 11 3 1)) ok Convert: (6 -1 75 ((68 4) 8 11 3 17) ((68 5) 1 8 11 3 17)) ok Convert: (6 -1 75 ((68 4) 8 11 3 17) ((68 5) 8 11 3 17 3)) ok ; some helpful functions Convert: (75 (74 12 ((68 0))) ((68 1) 12)) ok Convert: (75 (74 5 ((68 1) 15)) ((68 2) 5 15)) ok Convert: (75 (74 16 ((68 2) 13 17)) ((68 3) 16 13 17)) ok Convert: (75 (74 13 ((68 3) 12 4 11)) ((68 4) 13 12 4 11)) ok Convert: (75 (74 12 ((68 4) 7 16 4 18)) ((68 5) 12 7 16 4 18)) ok Convert: (75 (74 6 ((68 5) 15 19 17 17 6)) ((68 6) 6 15 19 17 17 6)) ok Convert: (75 (74 12 ((68 6) 18 3 18 11 7 9)) ((68 7) 12 18 3 18 11 7 9)) ok Convert: (75 (74 15 ((68 7) 19 14 13 16 8 1 10)) ((68 8) 15 19 14 13 16 8 1 10)) ok Convert: (17 76 -1 0 34 -1 0 35 -1 (68 2) (34) (35)) ok Convert: (17 77 -1 0 70 -1 69 -1 70) ok Convert: (17 78 -1 0 70 -1 69 -1 71 -1 70) ok Convert: (75 (76 3 8) ((68 2) 3 8)) ok Convert: (5 (77 -1 76 3 8) 3) ok Convert: (5 (78 -1 76 3 8) 8) ok Convert: (75 (76 7 4) ((68 2) 7 4)) ok Convert: (5 (77 -1 76 7 4) 7) ok Convert: (5 (78 -1 76 7 4) 4) ok Convert: (75 (76 9 7) ((68 2) 9 7)) ok Convert: (5 (77 -1 76 9 7) 9) ok Convert: (5 (78 -1 76 9 7) 7) ok Convert: (17 79 -1 0 70 -1 0 80 -1 0 81 -1 0 82 -1 18 (5 (72 -1 70) 0) (81 0) (18 (5 (69 -1 70) (80)) (82) (79 (71 -1 70) (80) (81) (1 (82) 1)))) ok Convert: (17 83 -1 0 70 -1 0 80 -1 0 81 -1 79 (70) (80) (81) 0) ok Convert: (17 84 -1 0 34 100) ok Convert: (5 (83 ((68 5) 5 4 2 1 0) 4 (84)) 1) ok Convert: (5 (83 ((68 1) 5) 5 (84)) 0) ok Convert: (5 (83 ((68 5) 5 4 3 17 8) 4 (84)) 1) ok Convert: (5 (83 ((68 4) 10 3 3 2) 10 (84)) 0) ok Convert: (5 (83 ((68 7) 18 8 12 5 13 13 0) 13 (84)) 4) ok Convert: (5 (83 ((68 6) 0 10 14 15 3 17) 15 (84)) 3) ok Convert: (5 (83 ((68 9) 15 10 16 0 16 2 16 8 9) 10 (84)) 1) ok Convert: (5 (83 ((68 3) 10 18 14) 18 (84)) 1) ok Convert: (5 (83 ((68 2) 13 13) 13 (84)) 0) ok Convert: (5 (83 ((68 7) 13 19 13 19 9 19 1) 13 (84)) 0) ok Convert: (5 (83 ((68 4) 1 7 16 15) 6 (84)) 100) ok Convert: (5 (83 ((68 6) 5 10 13 7 12 19) 8 (84)) 100) ok Convert: (5 (83 ((68 8) 19 7 13 1 11 12 8 2) 16 (84)) 100) ok ; HACK describe changes to the implicit interpreter to allow new special forms Convert: (17 85 -1 25) ok Convert: (17 25 -1 0 34 -1 18 (5 (34) 10) 15 (85 -1 34)) ok Convert: (5 10 15) ok Convert: (5 (1 10 15) 30) ok Convert: (17 25 -1 85) ok Convert: (6 -1 5 10 15) ok Convert: (5 (1 10 15) 25) ok ; now can create a special form for lists Convert: (17 25 -1 0 34 -1 18 (24 -1 34) (85 -1 34) (18 (5 (69 -1 34) 86) (25 -1 74 ((68 2) 68 (72 -1 71 -1 34)) (71 -1 34)) (85 -1 34))) ok Convert: (5 (86 1 2 3) ((68 3) 1 2 3)) ok ; now to desugar let expressions Convert: (17 87 -1 25) ok Convert: (17 88 -1 0 34 -1 0 89 -1 18 (5 (72 -1 34) 0) (25 -1 89) (88 (71 -1 34) (86 (86 0 (69 -1 69 -1 34) (89)) (69 -1 71 -1 69 -1 34)))) ok Convert: (17 25 -1 0 34 -1 18 (24 -1 34) (87 -1 34) (18 (5 (69 -1 34) 90) (88 (69 -1 71 -1 34) (69 -1 71 -1 71 -1 34)) (87 -1 34))) ok Convert: (90 ((34 20)) (5 (34) 20)) ok Convert: (90 ((34 50) (35 20)) (5 (3 (34) (35)) 30)) ok ; the is-list function is now on dubious ground ; this stuff will be replaced with typing ASAP Convert: (17 91 -1 0 34 -1 6 -1 24 -1 34) ok Convert: (91 -1 (68 2) 1 3) ok Convert: (91 -1 (68 0)) ok Convert: (6 -1 91 23) ok Convert: (91 -1 (68 3) ((68 2) 2 3) 1 (0 34 -1 1 (34) 10)) ok ; MATH introduce sugar for let ; if would be good to introduce desugarings more rigorously, but for now... ; ... just a very vague sketch Convert: (7 90) ok Convert: (5 (90 ((34 10)) (1 (34) 5)) ((0 34 -1 1 (34) 5) 10)) ok Convert: (5 (90 ((34 10) (35 5)) (1 (34) (35))) (((0 34 -1 0 35 -1 1 (34) (35)) 10) 5)) ok ; MATH build up functions of several variables Convert: (5 ((0 34 -1 0 35 -1 3 (34) (35)) 3 3) 0) ok Convert: (5 ((0 34 -1 0 35 -1 3 (34) (35)) 8 7) 1) ok Convert: (5 ((0 34 -1 0 35 -1 3 (34) (35)) 13 9) 4) ok Convert: (5 ((0 34 -1 0 35 -1 3 (34) (35)) 15 9) 6) ok Convert: (5 ((0 34 -1 0 35 -1 3 (34) (35)) 8 5) 3) ok Convert: (17 92 -1 0 34 -1 73 (34) (3 (72 -1 34) 1)) ok Convert: (17 93 -1 0 34 -1 18 (12 (72 -1 34) 1) (74 (69 -1 34) (93 -1 71 -1 34)) (86)) ok ; test last and except-last Convert: (5 15 (92 -1 86 4 5 15)) ok Convert: (75 (86 4 5) (93 -1 86 4 5 15)) ok Convert: (7 26) ok Convert: (17 94 -1 25) ok Convert: (17 25 -1 90 ((95 (94))) (0 34 -1 18 (24 -1 34) (95 -1 34) (18 (5 (69 -1 34) 26) (90 ((96 (69 -1 71 -1 34)) (89 (69 -1 71 -1 71 -1 34))) (18 (12 (72 -1 96) 0) (25 (86 26 (93 -1 96) (86 0 (92 -1 96) (89)))) (25 (89)))) (95 -1 34)))) ok ; test lambda Convert: (5 (0 34 -1 3 (34) 5) (26 (34) (3 (34) 5))) ok Convert: (5 (0 34 -1 0 35 -1 3 (34) (35)) (26 (34 35) (3 (34) (35)))) ok Convert: (5 ((26 (34 35) (3 (34) (35))) 9 1) 8) ok Convert: (5 ((26 (34 35) (3 (34) (35))) 15 7) 8) ok Convert: (5 ((26 (34 35) (3 (34) (35))) 6 0) 6) ok Convert: (5 ((26 (34 35) (3 (34) (35))) 11 8) 3) ok Convert: (5 ((26 (34 35) (3 (34) (35))) 6 6) 0) ok Convert: (17 97 -1 26 (34 35) (18 (75 (35) (86)) (34) (97 ((34) (69 -1 35)) (71 -1 35)))) ok Convert: (5 (97 (26 (34 35) (3 (34) (35))) (86 8 1)) 7) ok Convert: (5 (97 (26 (34 35) (3 (34) (35))) (86 11 5)) 6) ok Convert: (5 (97 (26 (34 35) (3 (34) (35))) (86 8 4)) 4) ok Convert: (5 (97 (26 (34 35) (3 (34) (35))) (86 13 5)) 8) ok Convert: (5 (97 (26 (34 35) (3 (34) (35))) (86 9 4)) 5) ok ; MATH show map function for applying a function across the elements of a list Convert: (17 98 -1 26 (56 70) (18 (12 (72 -1 70) 0) (74 (56 (69 -1 70)) (98 (56) (71 -1 70))) (86))) ok Convert: (5 (98 (0 34 -1 2 (34) 2) (86 7 8 9)) (86 14 16 18)) ok Convert: (5 (98 (0 34 -1 2 (34) 2) (86 19 7 13 10)) (86 38 14 26 20)) ok Convert: (5 (98 (0 34 -1 2 (34) 2) (86 4 10 7 1 2)) (86 8 20 14 2 4)) ok Convert: (5 (98 (0 34 -1 2 (34) 2) (86 3 18 16 7 9 13)) (86 6 36 32 14 18 26)) ok Convert: (5 (98 (0 34 42) (86 5 16 15)) (86 42 42 42)) ok Convert: (5 (98 (0 34 42) (86 13 9 7 14)) (86 42 42 42 42)) ok Convert: (5 (98 (0 34 42) (86 1 16 3 19 15)) (86 42 42 42 42 42)) ok Convert: (5 (98 (0 34 42) (86 15 5 2 12 16 14)) (86 42 42 42 42 42 42)) ok Convert: (17 99 -1 26 (56 70) (18 (10 (72 -1 70) 2) (56 (69 -1 70) (99 (56) (71 -1 70))) (18 (5 (72 -1 70) 1) (69 -1 70) (32)))) ok Convert: (5 (99 (1) (86 1 8 18)) 27) ok Convert: (5 (99 (1) (86 3 11 0 5)) 19) ok Convert: (5 (99 (1) (86 7 15 6 11 9)) 48) ok Convert: (5 (99 (1) (86 18 14 19 4 5 17)) 77) ok ; MATH introduce mutable objects, and side-effects Convert: (7 27) ok Convert: (7 28) ok Convert: (7 29) ok Convert: (17 100 -1 27 0) ok Convert: (28 (100) 15) ok Convert: (5 (29 -1 100) 15) ok Convert: (28 (100) 5) ok Convert: (28 (100) 7) ok Convert: (5 (29 -1 100) 7) ok Convert: (17 101 -1 27 11) ok Convert: (5 (29 -1 101) 11) ok Convert: (28 (101) 22) ok Convert: (5 (29 -1 101) 22) ok Convert: (5 (29 -1 100) 7) ok Convert: (5 (1 (29 -1 100) (29 -1 101)) 29) ok Convert: (18 (5 (29 -1 100) 7) (28 (100) 88) (28 (100) 99)) ok Convert: (5 (29 -1 100) 88) ok Convert: (18 (5 (29 -1 100) 7) (28 (100) 88) (28 (100) 99)) ok Convert: (5 (29 -1 100) 99) ok ; MATH show how to execute a sequence of instructions Convert: (7 102) ok Convert: (17 94 -1 25) ok Convert: (17 103 -1 0 34 -1 18 (10 (72 -1 34) 1) (74 (92 -1 34) (103 -1 93 -1 34)) (34)) ok ; test reverse Convert: (75 (86 1 2 3) (103 -1 86 3 2 1)) ok Convert: (17 25 -1 90 ((95 (94))) (0 34 -1 18 (24 -1 34) (95 -1 34) (18 (5 (69 -1 34) 102) (25 (86 (86 0 34 (86 69 (86 34))) (74 86 (103 -1 71 -1 34)))) (95 -1 34)))) ok Convert: (5 (102 1 7 2 4) 4) ok Convert: (5 (102 (28 (100) 88) (28 (100) 6) (29 -1 100)) 6) ok Convert: (5 (102 (28 (101) 88) (28 (100) 6) (29 -1 101)) 88) ok Convert: (5 (102 (28 (100) 88) (28 (100) 6) (29 -1 100) 4) 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) Convert: (17 104 -1 26 (105 34 35 36) (18 (5 (36) (34)) (35) (105 (36)))) ok Convert: (17 106 -1 26 (105 34) (105 (34))) ok Convert: (17 107 -1 0 34 -1 32) ok Convert: (17 108 -1 104 (104 (107) 3 2) 4 9) ok Convert: (5 (106 (108) 4) 9) ok Convert: (5 (106 (108) 3) 2) ok Convert: (5 (106 (108) 8) (32)) ok Convert: (5 (106 (108) 15) (32)) ok Convert: (5 (106 (104 (108) 15 33) 15) 33) ok Convert: (5 (106 (108) 15) (32)) ok Convert: (17 109 -1 0 34 -1 18 (75 (34) (86)) (107) (104 (109 (71 -1 34)) (77 -1 69 -1 34) (78 -1 69 -1 34))) ok Convert: (5 (106 (109 -1 86 (76 3 10) (76 2 20) (76 1 30)) 3) 10) ok Convert: (5 (106 (109 -1 86 (76 3 10) (76 2 20) (76 1 30)) 1) 30) ok ; OBJECT introduce simple mutable structures Convert: (17 110 -1 0 70 -1 90 ((111 (98 (0 34 -1 27 0) (70)))) (0 80 -1 73 (111) (83 (70) (80) (0 34 0)))) ok Convert: (17 112 -1 110 -1 86 113 114 115) ok Convert: (28 (112 113) 15) ok Convert: (5 (29 -1 112 113) 15) ok ; OBJECT introduce method handler wrappers Convert: (17 116 -1 26 (117 118 119) (104 (117) (118) (0 58 -1 119 -1 117))) ok Convert: (17 120 -1 0 34 -1 34 0) ok Convert: (17 121 -1 110 -1 86 34 35) ok Convert: (28 (121 34) 10) ok Convert: (28 (121 35) 20) ok Convert: (5 (29 -1 121 34) 10) ok Convert: (5 (29 -1 121 35) 20) ok Convert: (17 122 -1 116 (121) 123 (0 124 -1 1 (29 -1 124 34) (29 -1 124 35))) ok Convert: (5 (29 -1 122 34) 10) ok Convert: (5 (29 -1 122 35) 20) ok Convert: (5 (120 -1 122 123) 30) ok Convert: (28 (122 35) 10) ok Convert: (5 (120 -1 122 123) 20) ok Convert: (28 (121 35) 5) ok Convert: (5 (120 -1 122 123) 15) ok ; TURING introduce turing machine model ; just for fun! Convert: (17 125 -1 0 34 -1 18 (12 (72 -1 34) 0) (18 (12 (72 -1 34) 1) (71 -1 34) (86 -1 15)) (0 86 -1 15)) ok Convert: (17 126 -1 0 34 -1 18 (12 (72 -1 34) 0) (69 -1 34) (15)) ok Convert: (17 127 -1 0 128 -1 90 ((34 (78 -1 128))) (18 (12 (72 -1 34) 0) (69 -1 34) (15))) ok Convert: (17 129 -1 26 (128 130 131) (18 (5 (130) 1) (76 (74 (131) (77 -1 128)) (125 -1 78 -1 128)) (18 (5 (130) 0) (76 (125 -1 77 -1 128) (74 (126 -1 77 -1 128) (74 (131) (125 -1 78 -1 128)))) (76 (77 -1 128) (74 (131) (125 -1 78 -1 128)))))) ok Convert: (17 132 -1 26 (133 134 92 128) (18 (5 (134) (92)) (128) (90 ((135 (133 (134) (127 -1 128)))) (132 (133) (73 (135) 0) (92) (129 (128) (73 (135) 1) (73 (135) 2)))))) ok Convert: (17 136 -1 0 34 -1 76 (86) (34)) ok Convert: (17 137 -1 0 34 -1 0 70 -1 18 (12 (72 -1 70) 0) (18 (5 (92 -1 70) (34)) (137 (34) (93 -1 70)) (70)) (70)) ok Convert: (17 138 -1 0 34 -1 137 (15) (78 -1 34)) ok Convert: (17 139 -1 109 -1 86 (76 140 (109 -1 86 (76 0 (86 140 1 0)) (76 1 (86 140 1 1)) (76 (15) (86 141 0 (15))))) (76 141 (109 -1 86 (76 0 (86 142 0 1)) (76 1 (86 141 0 0)) (76 (15) (86 143 2 1)))) (76 142 (109 -1 86 (76 0 (86 142 0 0)) (76 1 (86 142 0 1)) (76 (15) (86 143 1 (15))))) (76 143 (109 -1 86))) ok Convert: (5 (138 -1 132 (139) 140 143 (136 -1 86 1 0 0 1)) (86 1 0 1 0)) ok Convert: (5 (138 -1 132 (139) 140 143 (136 -1 86 1 1 1)) (86 1 0 0 0)) ok Convert: (5 (138 -1 132 (139) 140 143 (136 -1 86 1 1 1 0 0 0 1 1 1)) (86 1 1 1 0 0 1 0 0 0)) ok ; MATH introduce sets and set membership Convert: (7 144) ok Convert: (17 144 -1 0 34 -1 0 70 -1 6 -1 5 (83 (70) (34) (0 35 -1 15)) (15)) ok Convert: (144 8 (86 8 6 4 1 9)) ok Convert: (144 9 (86 8 6 4 1 9)) ok Convert: (144 1 (86 8 6 4 1 9)) ok Convert: (144 6 (86 8 6 4 1 0 7)) ok Convert: (144 8 (86 8 6 4 1 0 7)) ok Convert: (144 4 (86 8 6 4 1 0 7)) ok Convert: (144 7 (86 8 1 0 7 9)) ok Convert: (144 7 (86 8 1 0 7 9)) ok Convert: (144 0 (86 8 1 0 7 9)) ok Convert: (144 8 (86 8 0 7 9 5)) ok Convert: (144 8 (86 8 0 7 9 5)) ok Convert: (144 9 (86 8 0 7 9 5)) ok Convert: (144 8 (86 8 6 1 3 9)) ok Convert: (144 3 (86 8 6 1 3 9)) ok Convert: (144 1 (86 8 6 1 3 9)) ok Convert: (6 -1 144 6 (86 7 2 5)) ok Convert: (6 -1 144 6 (86 4 7 2 5)) ok Convert: (6 -1 144 6 (86 3 0 5)) ok Convert: (6 -1 144 8 (86 4 0 3 7)) ok Convert: (6 -1 144 1 (86 0 3 9)) ok ; rules for set equality Convert: (17 145 -1 0 34 -1 0 35 -1 18 (12 (72 -1 34) 0) (13 (144 (69 -1 34) (35)) (145 (71 -1 34) (35))) (16)) ok Convert: (17 146 -1 0 34 -1 0 35 -1 13 (145 (34) (35)) (145 (35) (34))) ok Convert: (146 (86 1 5 9) (86 5 1 9)) ok Convert: (146 (86 1 5 9) (86 9 1 5)) ok Convert: (6 -1 146 (86 1 5 9) (86 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 Convert: (144 5 (30 (0 34 -1 5 (1 (34) 10) 15))) ok Convert: (144 3 (30 (0 34 -1 5 (2 (34) 3) (1 (34) 6)))) ok Convert: (17 147 -1 86) ok Convert: (144 0 (31)) ok Convert: (19 (0 34 -1 65 (144 (34) (31)) (144 (1 (34) 1) (31)))) ok Convert: (144 1 (31)) ok Convert: (144 2 (31)) ok Convert: (144 3 (31)) ok Convert: (144 4 (31)) ok Convert: (144 5 (31)) ok Convert: (144 6 (31)) ok Convert: (144 7 (31)) ok Convert: (144 8 (31)) ok Convert: (144 9 (31)) ok Convert: (6 -1 144 (16) (31)) ok Convert: (6 -1 144 (15) (31)) ok Convert: (17 148 -1 86 (16) (15)) ok Convert: (144 (16) (148)) ok Convert: (144 (15) (148)) ok Convert: (6 -1 144 0 (148)) ok Convert: (17 149 -1 30 -1 0 34 -1 20 -1 0 35 -1 13 (144 (35) (31)) (5 (2 2 (35)) (34))) ok Convert: (144 0 (31)) ok Convert: (144 0 (149)) ok Convert: (144 1 (31)) ok Convert: (6 -1 144 1 (149)) ok Convert: (144 2 (31)) ok Convert: (144 2 (149)) ok Convert: (144 3 (31)) ok Convert: (6 -1 144 3 (149)) ok Convert: (144 4 (31)) ok Convert: (144 4 (149)) ok Convert: (144 5 (31)) ok Convert: (6 -1 144 5 (149)) ok Convert: (144 6 (31)) ok Convert: (144 6 (149)) ok ; MATH introduce graph structures Convert: (17 150 -1 26 (151 152) (76 (151) (152))) ok Convert: (17 153 -1 150 (86 1 2 3 4) (86 (86 1 2) (86 2 3) (86 1 4))) ok Convert: (17 154 -1 26 (155 156 157) (20 -1 0 82 -1 18 (13 (10 (82) 0) (11 (82) (72 -1 73 (155) 1))) (75 (73 (73 (155) 1) (82)) (86 (156) (157))) (15))) ok Convert: (5 (154 (153) 1 2) (16)) ok Convert: (5 (154 (153) 1 3) (15)) ok Convert: (5 (154 (153) 2 4) (15)) 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'. Convert: (17 158 -1 26 (155 156 157) (18 (5 (156) (157)) (16) (18 (154 (155) (156) (157)) (16) (20 (0 159 -1 18 (154 (155) (156) (159)) (158 (155) (159) (157)) (15)))))) ok Convert: (5 (158 (153) 1 2) (16)) ok Convert: (5 (158 (153) 1 3) (16)) ok Convert: (5 (158 (153) 2 4) (15)) 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. Convert: (17 160 (26 (161) (26 (34) (18 (5 (34) 162) (161) 0)))) ok Convert: (17 163 (0 34 (18 (24 (34)) (160 (34)) (34)))) ok Convert: (17 164 (26 (165 166) (18 (24 (166)) (5 (165) 162) (6 (24 ((163 (166)) (165))))))) ok ; add version of lambda that allows types to be declared Convert: (17 94 (25)) ok Convert: (17 25 (90 ((95 (94))) (0 34 (18 (24 (34)) (95 (34)) (18 (5 (69 (34)) 26) (90 ((96 (69 (71 (34)))) (89 (69 (71 (71 (34)))))) (18 (12 (72 (96)) 0) (18 (24 (92 (96))) (25 (86 26 (93 (96)) (86 0 (92 (96)) (89)))) (90 ((167 (77 (92 (96)))) (168 (78 (92 (96))))) (25 (86 26 (93 (96)) (86 0 (167) (86 90 (86 (86 (167) (86 (86 163 (86 (167))) (168)))) (89))))))) (25 (89)))) (95 (34))))))) ok ; add conditional form Convert: (17 94 (25)) ok Convert: (17 25 (90 ((95 (94))) (0 34 (18 (24 (34)) (95 (34)) (18 (5 (69 (34)) 169) (90 ((170 (69 (71 (34)))) (171 (71 (71 (34))))) (18 (12 (72 (171)) 0) (25 (86 18 (77 (170)) (78 (170)) (74 169 (171)))) (25 (170)))) (95 (34))))))) ok Convert: (5 99 (169 99)) ok Convert: (5 8 (169 ((16) 8) 11)) ok Convert: (5 11 (169 ((15) 8) 11)) ok Convert: (5 7 (169 ((15) 3) ((16) 7) 11)) ok Convert: (5 3 (169 ((16) 3) ((16) 7) 11)) ok Convert: (5 11 (169 ((15) 3) ((15) 7) 11)) ok Convert: (17 172 (26 (173 70) (18 (12 (72 (70)) 0) (18 (173 (69 (70))) (172 (173) (71 (70))) (74 (69 (70)) (172 (173) (71 (70))))) (70)))) ok Convert: (17 174 (26 (34) (172 (26 (35) (5 (35) (34)))))) ok Convert: (75 (86 1 2 3 5) (174 4 (86 1 2 3 4 5))) ok Convert: (75 (86 1 2 3 5) (174 4 (86 1 4 2 4 3 4 5))) ok Convert: (17 175 (26 (165 166) (90 ((176 (163 (166)))) (176 (165))))) ok Convert: (17 177 (26 ((34 162) (35 162)) (175 162 (1 (34) (35))))) ok Convert: (5 42 (177 (160 10) (160 32))) ok Convert: (5 42 (177 10 32)) ok Convert: (17 178 (26 (46) ((26 (34) (46 (26 (35) ((34 (34)) (35))))) (26 (34) (46 (26 (35) ((34 (34)) (35)))))))) ok ; OBJECT an example object -- a 2D point Convert: (17 179 (26 (34 35) (178 (26 (124 180) (169 ((5 (180) 34) (34)) ((5 (180) 35) (35)) ((5 (180) 179) (124)) ((5 (180) 1) (26 ((56 179)) (179 (1 (34) (56 34)) (1 (35) (56 35))))) ((5 (180) 5) (26 ((56 179)) (13 (5 (34) (56 34)) (5 (35) (56 35))))) 0))))) ok Convert: (17 181 (179 1 11)) ok Convert: (17 182 (179 2 22)) ok Convert: (5 1 (181 34)) ok Convert: (5 22 (182 35)) ok Convert: (5 11 ((179 11 12) 34)) ok Convert: (5 11 (((179 11 12) 179) 34)) ok Convert: (5 16 (((179 16 17) 179) 34)) ok Convert: (5 33 (181 1 (182) 35)) ok Convert: (181 1 (182) 5 (179 3 33)) ok Convert: (182 1 (181) 5 (179 3 33)) ok Convert: ((179 100 200) 1 (179 200 100) 5 (179 300 300)) ok Convert: (164 179 (181)) ok Convert: (6 (164 162 (181))) ok Convert: (164 162 5) ok Convert: (6 (164 179 5)) ok ; OBJECT an example object -- a container Convert: (17 183 (26 (34) (90 ((184 (27 (86)))) (178 (26 (124 180) (169 ((5 (180) 183) (124)) ((5 (180) 185) (29 (184))) ((5 (180) 51) (26 (34) (18 (6 (144 (34) (29 (184)))) (28 (184) (74 (34) (29 (184)))) (15)))) ((5 (180) 186) (26 (34) (28 (184) (174 (34) (29 (184)))))) ((5 (180) 5) (26 ((61 183)) (146 (124 185) (61 185)))) 0)))))) 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 Convert: (17 187 (183 188)) ok Convert: (187 51 77) ok Convert: (187 51 88) ok Convert: (187 51 99) ok Convert: (146 (187 185) (86 77 88 99)) ok Convert: (187 186 88) ok Convert: (146 (187 185) (86 77 99)) ok Convert: (17 189 (183 188)) ok Convert: (189 51 77) ok Convert: (189 51 99) ok Convert: (189 5 (187)) ok ; OBJECT expressing inheritance ; counter-container adds one method to container: count Convert: (17 190 (26 (34) (90 ((191 (183 188))) (178 (26 (124 180) (169 ((5 (180) 190) (124)) ((5 (180) 192) (72 (191 185))) (191 (180)))))))) ok Convert: (17 193 (190 188)) ok Convert: (5 0 (193 192)) ok Convert: (193 51 4) ok Convert: (5 1 (193 192)) ok Convert: (193 51 5) ok Convert: (5 2 (193 192)) 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 Convert: (17 194 (26 (195 196) (18 (12 (72 (195)) 0) (194 (93 (195)) (74 (92 (195)) (196))) (196)))) ok Convert: (5 (194 (86 1 2 3) (86 4 5 6)) (86 1 2 3 4 5 6)) ok Convert: (17 197 (0 34 (0 70 (18 (12 (72 (70)) 0) (74 (69 (70)) (197 (34) (71 (70)))) (86 (34)))))) ok Convert: (5 (197 5 (86 1 2)) (86 1 2 5)) ok Convert: (17 198 (26 (173 70) (18 (12 (72 (70)) 0) (18 (173 (69 (70))) (74 (69 (70)) (198 (173) (71 (70)))) (198 (173) (71 (70)))) (70)))) ok Convert: (17 199 (90 ((200 (27 0))) (26 (34) (90 ((201 (29 (200)))) (102 (28 (200) (1 (201) 1)) (201)))))) ok Convert: (5 (199 188) 0) ok Convert: (5 (199 188) 1) ok Convert: (5 (199 188) 2) ok Convert: (6 (5 (199 188) (199 188))) ok ; okay, here it comes. don't panic! ; I need to split this up into helpers, and simplify. ; It basically just writes code for classes like we saw in ; a previous section. Convert: (17 94 (25)) ok Convert: (17 25 (90 ((95 (94))) (0 34 (18 (24 (34)) (95 (34)) (18 (5 (69 (34)) 202) (90 ((118 (73 (34) 1)) (203 (73 (34) 2)) (204 (71 (71 (71 (34)))))) (25 (86 17 (118) (86 26 (74 119 (203)) (86 90 (197 (86 205 (86 199 188)) (98 (71) (198 (0 34 (5 (77 (34)) 206)) (204)))) (86 90 (86 (86 124 (86 178 (86 26 (86 124 119) (194 (74 169 (194 (98 (0 34 (86 (86 5 (86 119) (77 (34))) (78 (34)))) (98 (71) (198 (0 34 (5 (77 (34)) 119)) (204)))) (98 (0 34 (86 (86 5 (86 119) (34)) (86 (34)))) (98 (78) (198 (0 34 (5 (77 (34)) 206)) (204)))))) (86 (86 (86 5 (86 119) 124) (86 124)) (86 (86 5 (86 119) (118)) (86 124 124)) (86 (86 5 (86 119) 207) (86 26 (86 34) 0)) (86 (86 5 (86 119) 188) 0) (86 (86 5 (86 119) 205) (86 205)) (86 (86 5 (86 119) 208) (86 26 (86 34) (86 5 (86 205) (86 34 205)))) (86 124 207 (86 119)))))))) (86 102 (86 124 (86 119)) (86 124)))))))) (95 (34))))))) ok ; revisit the point class example Convert: (202 179 (34 35) (119 34 (34)) (119 35 (35)) (119 1 (26 ((56 179)) (179 188 (1 (34) (56 34)) (1 (35) (56 35))))) (119 5 (26 ((56 179)) (13 (5 (34) (56 34)) (5 (35) (56 35)))))) ok ; note the appearance of new in the next line -- ; this is the only difference to previous version Convert: (17 181 (179 188 1 11)) ok Convert: (17 182 (179 188 2 22)) ok Convert: (5 1 (181 34)) ok Convert: (5 22 (182 35)) ok Convert: (5 11 ((179 188 11 12) 34)) ok Convert: (5 11 (((179 188 11 12) 179) 34)) ok Convert: (5 16 (((179 188 16 17) 179) 34)) ok Convert: (5 33 (181 1 (182) 35)) ok Convert: (181 1 (182) 5 (179 188 3 33)) ok Convert: (182 1 (181) 5 (179 188 3 33)) ok Convert: ((179 188 100 200) 1 (179 188 200 100) 5 (179 188 300 300)) ok Convert: (164 179 (181)) ok Convert: (6 (164 162 (181))) ok ; OBJECT wrapper class for cells Convert: (202 209 (210) (206 211 (27 (210))) (119 212 (29 (211))) (119 213 (26 (214) (28 (211) (214)))) (119 215 (124 213 (210))) (119 207 (26 (34) ((163 (124 212)) (34))))) ok Convert: (17 216 (209 188 15)) ok Convert: (5 15 (216 212)) ok Convert: (216 213 82) ok Convert: (5 82 (216 212)) ok Convert: (17 217 (209 188 (179 188 120 150))) ok Convert: (17 218 (209 188 (179 188 300 300))) ok Convert: (217 1 (218) 5 (179 188 420 450)) ok Convert: (6 (217 5 (218))) ok Convert: (218 213 (217)) ok Convert: (217 5 (218)) ok ; MUD playing around with doors and rooms Convert: (202 219 ((220 221) (222 221)) (119 188 (102 (220 51 (124)) (222 51 (124)))) (119 223 (26 ((134 221)) (169 ((134 208 (220)) (222)) ((134 208 (222)) (220)) 0))) (119 224 (26 ((134 221)) (169 ((134 208 (220)) (16)) ((134 208 (222)) (16)) (15))))) ok Convert: (202 221 () (206 211 (183 188)) (119 207 (26 (34) (211 (34))))) ok ; need to fix up containers to use object equality Convert: (17 225 (26 (50 70) (12 (72 (198 (26 (34) (34 208 (50))) (70))) 0))) ok Convert: (202 183 () (206 184 (209 188 (86))) (119 185 (184 212)) (119 51 (26 (34) (18 (6 (225 (34) (184 212))) (184 213 (74 (34) (184 212))) (15))))) ok Convert: (17 226 (221 188)) ok Convert: (17 227 (221 188)) ok Convert: (17 228 (219 188 (226) (227))) ok Convert: ((77 (226 185)) 208 (228)) ok Convert: ((77 (227 185)) 208 (228)) ok Convert: (228 223 (226) 208 (227)) ok Convert: (6 (228 223 (226) 208 (226))) ok Convert: (228 223 (227) 208 (226)) ok Convert: (17 229 (221 188)) ok Convert: (17 230 (221 188)) ok Convert: (17 231 (221 188)) ok Convert: (17 232 (221 188)) ok Convert: (17 233 (219 188 (226) (229))) ok Convert: (17 234 (219 188 (226) (230))) ok Convert: (17 235 (219 188 (230) (231))) ok Convert: (202 236 () (206 237 (209 188 (232))) (119 238 (26 ((239 221)) (237 213 (239)))) (119 240 (237 212)) (119 241 0)) ok Convert: (17 242 (26 (173 243 82 50 70) (18 (12 (72 (70)) 0) (18 (12 (173 (69 (70))) (243)) (242 (173) (173 (69 (70))) (50) (1 (50) 1) (71 (70))) (242 (173) (243) (82) (1 (50) 1) (71 (70)))) (82)))) ok Convert: (17 244 (26 (173 70) (242 (173) (173 (69 (70))) 0 0 (70)))) ok Convert: (17 245 (26 (173 243 82 50 70) (18 (12 (72 (70)) 0) (18 (11 (173 (69 (70))) (243)) (245 (173) (173 (69 (70))) (50) (1 (50) 1) (71 (70))) (245 (173) (243) (82) (1 (50) 1) (71 (70)))) (82)))) ok Convert: (17 246 (26 (173 70) (245 (173) (173 (69 (70))) 0 0 (70)))) ok Convert: (5 2 (244 (26 (34) (34)) (86 3 4 5 0))) ok Convert: (5 1 (244 (26 (34) (34)) (86 3 5 4 0))) ok Convert: (5 0 (244 (26 (34) (34)) (86 5 3 4 0))) ok ; the robo class makes a character that patrols from room to room Convert: (202 247 () (206 191 (236 188)) (206 248 (209 188 0)) (206 249 (209 188 (26 (34) 0))) (119 207 (26 (34) (191 (34)))) (119 241 (90 ((250 (198 (26 (34) (164 219 (34))) (124 237 185)))) (90 ((251 (98 (26 (34) (249 212 (34))) (250)))) (90 ((252 (73 (250) (246 (26 (34) (34)) (251)))) (253 (249 212)) (254 (248 212))) (102 (124 237 213 (252 223 (124 237 212))) (249 213 (26 ((255 219)) (18 (255 208 (252)) (254) (253 (255))))) (248 213 (1 (248 212) 1)))))))) ok Convert: (17 256 (247 188)) ok Convert: (256 238 (230)) ok Convert: (17 257 (26 ((258 247)) (244 (26 ((239 221)) (18 (239 208 (258 240)) 1 0)) (86 (226) (227) (230) (229) (231))))) ok Convert: (17 259 (26 (50 134 70) (18 (11 (134) (50)) (102 (256 241) (259 (50) (1 (134) 1) (197 (257 (256)) (70)))) (70)))) ok ; here is a list of the first 30 rooms the robot character visits ; 0=hall, 1=kitchen, 2=stairs, 3=lawn, 4=bedroom Convert: (75 (259 30 0 (86)) (86 4 2 0 3 0 1 0 2 4 2 0 3 0 1 0 2 4 2 0 3 0 1 0 2 4 2 0 3 0 1)) ok ; Now should start to introduce a language to talk about what is ; going on in the simulated world, and start to move away from ; detailed mechanism ; JAVA some preparatory work for integrating with Java code Convert: (202 260 () (119 261 (26 (34) (1 (34) 1))) (119 262 (16))) ok Convert: (202 263 () (206 191 (260 188)) (119 207 (26 (34) (191 (34))))) ok ; will need to install class hierarchy, just hardcode a few things for now Convert: (17 264 (0 34 -1 0 35 -1 (169 ((5 (35) 265) (263)) ((5 (35) 266) (260)) (260)))) ok Convert: ((264 267 265) 188 262) ok Convert: (5 ((264 267 265) 188 261 15) 16) ok Convert: (202 268 () (206 191 (260 188)) (119 207 (26 (34) (191 (34)))) (206 269 (209 188 0)) (119 212 (269 212)) (119 270 (26 (161) (102 (124 213 (161)) (124)))) (119 213 (26 (161) (269 213 (161))))) ok Convert: (17 271 (268)) ok Convert: (17 272 (268)) ok Convert: (17 273 (268)) ok Convert: (17 274 (268)) ok Convert: (17 162 (268)) ok Convert: (17 275 (268)) ok Convert: (17 276 (268)) ok Convert: (17 277 (268)) ok Convert: (17 278 (268)) ok Convert: (17 279 (162 188)) ok Convert: (279 213 15) ok Convert: (5 15 (279 212)) ok Convert: (17 280 (162 188 270 17)) ok Convert: (5 17 (280 212)) ok Convert: (17 281 (0 34 (169 ((5 (34) 1) 20) ((5 (34) 2) 40) ((5 (34) 3) 60) 0))) ok Convert: (5 (281 3) 60) ok ; really ought to go back and be clear about eager/laziness issues Convert: (17 282 (0 34 (169 ((5 (34) 1) (279 213 20)) ((5 (34) 2) (279 213 40)) ((5 (34) 3) (279 213 60)) 0))) ok Convert: (282 2) ok Convert: (5 (279 212) 40) ok Convert: (17 283 (26 (284 285 286 67) (0 287 (102 (286 213 (1 (286 212) 1)) -1 169 ((5 (287) 188) (26 (288) (289 (285) ((288) 188)))) ((5 (287) 290) (289 (285) (291 (285)))) ((14 (5 (287) 292) (5 (287) 293)) (26 (294) (284 213 (104 (284 212) (294) (295 (285)))))) ((14 (5 (287) 296) (5 (287) 297)) (26 (294) (289 (285) (106 (284 212) (294))))) ((5 (287) 298) (26 (299) (289 (285) (299)))) ((5 (287) 300) (26 (80 301) (289 (285) ((295 (285)) (80) 212)))) ((5 (287) 302) (26 (80 301) (90 ((299 (295 (285)))) ((295 (285)) (80) 213 (299))))) ((5 (287) 303) (90 ((304 (295 (285)))) (90 ((305 (295 (285)))) (289 (285) (2 (305) (304)))))) ((5 (287) 306) (90 ((304 (295 (285)))) (90 ((305 (295 (285)))) (289 (285) (1 (305) (304)))))) ((5 (287) 307) (90 ((304 (295 (285)))) (90 ((305 (295 (285)))) (289 (285) (3 (305) (304)))))) ((5 (287) 308) (26 (34) (286 213 (34)))) ((5 (287) 309) (26 (34) (18 (11 (295 (285)) 0) (286 213 (34)) 0))) ((5 (287) 310) (26 (34) (18 (11 (295 (285)) 1) (286 213 (34)) 0))) ((5 (287) 311) (26 (34) (18 (12 (295 (285)) 0) (286 213 (34)) 0))) ((5 (287) 312) (26 (34) (18 (10 (295 (285)) 0) (286 213 (34)) 0))) ((5 (287) 313) (26 (34) (18 (6 (5 (295 (285)) 0)) (286 213 (34)) 0))) ((5 (287) 175) (286 213 314)) ((5 (287) 315) (102 (67 213 (295 (285))) (286 213 314))) ((5 (287) 316) (102 (67 213 (295 (285))) (286 213 314))) ((5 (287) 308) (26 (317) (286 213 (317)))) ((5 (287) 318) (26 (317 319 50) (90 ((320 (321 (285) (317) (319)))) (18 (5 (50) 1) (289 (285) (320)) 0)))) 0)))) ok Convert: (17 321 (26 (285 317 322) (18 (5 (322) 0) ((295 (285)) (317)) (90 ((323 (295 (285)))) ((321 (285) (317) (3 (322) 1)) (323)))))) ok Convert: (17 289 (26 (285 34) (285 213 (74 (34) (285 212))))) ok Convert: (17 295 (26 (285) (90 ((161 (69 (285 212)))) (102 (285 213 (71 (285 212))) (161))))) ok Convert: (17 291 (26 (285) (69 (285 212)))) ok Convert: (17 324 (209 188 (86 5 3 1))) ok Convert: (5 (295 (324)) 5) ok Convert: (5 (291 (324)) 3) ok Convert: (5 (295 (324)) 3) ok Convert: (289 (324) 7) ok Convert: (5 (295 (324)) 7) ok Convert: (17 325 (209 188 (107))) ok Convert: (17 326 (209 188 0)) ok Convert: (17 327 (209 188 0)) ok Convert: (17 328 (283 (325) (324) (326) (327))) ok Convert: (289 (324) 4) ok Convert: (328 290) ok Convert: (5 (295 (324)) 4) ok Convert: (5 (295 (324)) 4) ok Convert: (289 (324) 66) ok Convert: (289 (324) 77) ok Convert: (328 292 3) ok Convert: (5 (295 (324)) 66) ok Convert: (328 296 3) ok Convert: (5 (295 (324)) 77) ok Convert: (202 329 () (206 34 ((162) 188)) (206 35 ((162) 188))) ok Convert: (17 330 (329 188)) ok Convert: (330 34 213 5) ok Convert: (5 (330 34 212) 5) ok Convert: (289 (324) (330)) ok Convert: (5 ((295 (324)) 34 212) 5) ok Convert: (289 (324) (330)) ok Convert: (328 292 0) ok Convert: (328 296 0) ok Convert: (328 300 34 (162)) ok Convert: (5 (295 (324)) 5) ok Convert: (328 296 0) ok Convert: (328 298 15) ok Convert: (328 302 35 (162)) ok Convert: (5 (330 35 212) 15) ok Convert: (289 (324) 7) ok Convert: (289 (324) 10) ok Convert: (328 303) ok Convert: (328 315) ok Convert: (5 (327 212) 70) ok Convert: (17 331 -1 0 332 -1 26 (284 285 133) -1 90 ((286 (209 188 (332))) (67 (209 188 (16)))) -1 90 ((333 (283 (284) (285) (286) (67)))) -1 (102 (133 (333) (286 212)) (18 (5 (286 212) 314) (67 212) (331 (286 212) (284) (285) (133))))) ok Convert: (17 334 (331 0)) ok Convert: (289 (324) 10) ok Convert: (289 (324) 33) ok Convert: (5 (334 (325) (324) -1 0 333 -1 0 34 -1 (169 ((5 (34) 0) (333 293 4)) ((5 (34) 1) (333 297 4)) (333 315))) 33) ok Convert: (289 (324) 10) ok Convert: (17 335 (26 (336 337) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 0) (76 1 (336)) (76 2 (337))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 297 1)) ((5 (34) 1) (333 297 2)) ((5 (34) 2) (333 303)) ((5 (34) 3) (333 315)) (333 175))) ok Convert: (5 (335 5 9) 45) ok ; JAVA class translation 'COS_JavaTest' ; Sat Dec 11 02:05:01 EST 2004 ; Produced by Fritzifier, based on JasminVisitor ; Using BCEL library to read Java bytecode ; Here is the original code: ; public class COS_JavaTest { ; private int q = 0; ; public int add(int x, int y) { ; return x+y; ; } ; public int sub(int x, int y) { ; return x-y; ; } ; public int mult(int x, int y) { ; return x*y; ; } ; public int addmult(int x, int y, int z) { ; return add(x,mult(y,z)); ; } ; public void set(int x) { ; q = x; ; } ; public int get() { ; return q; ; } ; public int fact(int x) { ; return (x>0)?(x*fact(sub(x,1))):1; ; } ; } ; Convert: (202 338 () (206 191 ((264 339 266) 188)) (119 207 (26 (34) (191 (34)))) (206 340 ((162) 188)) (119 341 (26 () -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 296 0)) ((5 (34) 1) (333 342 341 0 0)) ((5 (34) 2) (333 296 0)) ((5 (34) 3) (333 298 0)) ((5 (34) 4) (333 302 340 (162))) ((5 (34) 5) (333 175)) (333 175))) (119 51 (26 (336 337) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124)) (76 1 (336)) (76 2 (337))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 297 1)) ((5 (34) 1) (333 297 2)) ((5 (34) 2) (333 306)) ((5 (34) 3) (333 315)) (333 175))) (119 343 (26 (336 337) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124)) (76 1 (336)) (76 2 (337))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 297 1)) ((5 (34) 1) (333 297 2)) ((5 (34) 2) (333 307)) ((5 (34) 3) (333 315)) (333 175))) (119 54 (26 (336 337) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124)) (76 1 (336)) (76 2 (337))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 297 1)) ((5 (34) 1) (333 297 2)) ((5 (34) 2) (333 303)) ((5 (34) 3) (333 315)) (333 175))) (119 344 (26 (336 337 345) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124)) (76 1 (336)) (76 2 (337)) (76 3 (345))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 296 0)) ((5 (34) 1) (333 297 1)) ((5 (34) 2) (333 296 0)) ((5 (34) 3) (333 297 2)) ((5 (34) 4) (333 297 3)) ((5 (34) 5) (333 318 54 2 1)) ((5 (34) 6) (333 318 51 2 1)) ((5 (34) 7) (333 315)) (333 175))) (119 213 (26 (336) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124)) (76 1 (336))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 296 0)) ((5 (34) 1) (333 297 1)) ((5 (34) 2) (333 302 340 (162))) ((5 (34) 3) (333 175)) (333 175))) (119 212 (26 () -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 296 0)) ((5 (34) 1) (333 300 340 (162))) ((5 (34) 2) (333 315)) (333 175))) (119 346 (26 (336) -1 90 ((284 -1 209 188 -1 109 -1 86 (76 0 (124)) (76 1 (336))) (285 -1 209 188 -1 86)) -1 334 (284) (285) -1 0 333 -1 0 34 -1 169 ((5 (34) 0) (333 297 1)) ((5 (34) 1) (333 310 11)) ((5 (34) 2) (333 297 1)) ((5 (34) 3) (333 296 0)) ((5 (34) 4) (333 296 0)) ((5 (34) 5) (333 297 1)) ((5 (34) 6) (333 298 1)) ((5 (34) 7) (333 318 343 2 1)) ((5 (34) 8) (333 318 346 1 1)) ((5 (34) 9) (333 303)) ((5 (34) 10) (333 308 12)) ((5 (34) 11) (333 298 1)) ((5 (34) 12) (333 315)) (333 175)))) ok ; JAVA check that automatic conversion is workable Convert: (17 347 (338 188)) ok Convert: (5 (347 54 15 10) 150) ok Convert: (5 (347 344 4 15 10) 154) ok Convert: (102 (347 213 87) (5 (347 212) 87)) ok Convert: (5 (347 346 0) 1) ok Convert: (5 (347 346 1) 1) ok Convert: (5 (347 346 5) 120) ok ; Yay! testing says this works. ; So structure for bytecode interpretation is in place. ; Very few opcodes actually implemented yet though. -- done ;Unspecified return value 1 ]=> End of input stream reached Happy Happy Joy Joy.