# 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. 00 010; 00 0110; 00 01110; 00 011110; 00 0111110; 00 01111110; 00 011111110; 00 0111111110; 00 01111111110; 00 011111111110; 00 0111111111110; 00 01111111111110; 00 011111111111110; 00 0111111111111110; 00 01111111111111110; 00 011111111111111110; 00 0110; 00 01110; 00 0111110; 00 011111110; 00 0111111111110; 00 011111111111110; 00 010; 00 011110; 00 01111111110; 00 011111111111111110; # 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. 0110 010 010; 0110 0110 0110; 0110 01110 01110; 0110 011110 011110; 0110 0111110 0111110; 0110 01111110 01111110; 0110 011111110 011111110; 0110 0111111110 0111111110; 0110 010 010; 0110 01111110 01111110; 0110 0110 0110; # MATH now introduce other relational operators # After this lesson, it should be clear what contexts # < > and = are appropriate in. # drive the lesson home 0110 010 010; 01110 0110 010; 01110 01110 010; 01110 011110 010; 010 010 0110; 0110 0110 0110; 01110 01110 0110; 01110 011110 0110; 010 010 01110; 010 0110 01110; 0110 01110 01110; 01110 011110 01110; 010 010 011110; 010 0110 011110; 010 01110 011110; 0110 011110 011110; 01110 010 00; 01110 01111111110 0110; 01110 01111110 00; 01110 0110 00; 01110 0111111110 0110; 01110 011110 010; 01110 0110 00; 01110 011111111110 010; 01110 01111110 010; 01110 01111111110 010; 01110 011111110 010; 010 00 010; 010 01110 011111111110; 010 011110 01111111110; 010 0110 011110; 010 010 011111110; 010 00 011111111110; 010 00 0110; 010 00 0110; 010 010 01110; 010 0110 0111110; 010 010 011110; # switch to binary labelling for commands 2 010 010; 3 0110 010; 3 01110 010; 3 011110 010; 1 010 0110; 2 0110 0110; 3 01110 0110; 3 011110 0110; 1 010 01110; 1 0110 01110; 2 01110 01110; 3 011110 01110; 1 010 011110; 1 0110 011110; 1 01110 011110; 2 011110 011110; # a few more random examples 1 01110 011110; 2 011110 011110; 1 010 0111110; 3 011110 00; 3 0111110 011110; 1 0110 01110; 3 0110 010; 3 0111110 010; 2 01110 01110; 2 01110 01110; 3 010 00; # MATH introduce the NOT logical operator 0 4; 2 00 00; 4 -1 1 00 00; 4 -1 3 00 00; 2 011110 011110; 4 -1 1 011110 011110; 4 -1 3 011110 011110; 2 01111110 01111110; 4 -1 1 01111110 01111110; 4 -1 3 01111110 01111110; 2 0110 0110; 4 -1 1 0110 0110; 4 -1 3 0110 0110; 2 01110 01110; 4 -1 1 01110 01110; 4 -1 3 01110 01110; 4 -1 2 01110 011111111110; 1 01110 011111111110; 4 -1 3 01110 011111111110; 4 -1 2 0111110 011111110; 1 0111110 011111110; 4 -1 3 0111110 011111110; 4 -1 2 010 0110; 1 010 0110; 4 -1 3 010 0110; 4 -1 2 00 0111110; 1 00 0111110; 4 -1 3 00 0111110; 4 -1 2 0111111110 0111111111111110; 1 0111111110 0111111111111110; 4 -1 3 0111111110 0111111111111110; 4 -1 2 0111111111110 01111110; 3 0111111111110 01111110; 4 -1 1 0111111111110 01111110; 4 -1 2 01111111111110 0110; 3 01111111111110 0110; 4 -1 1 01111111111110 0110; 4 -1 2 011111111110 011111110; 3 011111111110 011111110; 4 -1 1 011111111110 011111110; 4 -1 2 011110 00; 3 011110 00; 4 -1 1 011110 00; 4 -1 2 011111111111111110 01111111110; 3 011111111111111110 01111111110; 4 -1 1 011111111111111110 01111111110; # MATH introduce addition 0 10; 2 0110 -1 10 00 0110; 2 0111110 -1 10 011110 010; 2 0110 -1 10 0110 00; 2 011110 -1 10 00 011110; 2 011110 -1 10 01110 010; 2 01110 -1 10 010 0110; 2 00 -1 10 00 00; 2 011110 -1 10 011110 00; 2 01110 -1 10 0110 010; 2 011110 -1 10 011110 00; # MATH introduce subtraction 0 11; 2 00 -1 11 0110 0110; 2 011110 -1 11 0111110 010; 2 0110 -1 11 0110 00; 2 00 -1 11 011110 011110; 2 01110 -1 11 011110 010; 2 010 -1 11 01110 0110; 2 00 -1 11 00 00; 2 011110 -1 11 011110 00; 2 0110 -1 11 01110 010; 2 011110 -1 11 011110 00; # MATH introduce multiplication 0 9; 2 00 -1 9 00 00; 2 00 -1 9 00 010; 2 00 -1 9 00 0110; 2 00 -1 9 00 01110; 2 00 -1 9 010 00; 2 010 -1 9 010 010; 2 0110 -1 9 010 0110; 2 01110 -1 9 010 01110; 2 00 -1 9 0110 00; 2 0110 -1 9 0110 010; 2 011110 -1 9 0110 0110; 2 01111110 -1 9 0110 01110; 2 00 -1 9 01110 00; 2 01110 -1 9 01110 010; 2 01111110 -1 9 01110 0110; 2 01111111110 -1 9 01110 01110; 2 00 -1 9 00 010; 2 01110 -1 9 01110 010; 2 00 -1 9 0110 00; 2 00 -1 9 00 01110; 2 01110 -1 9 01110 010; 2 0110 -1 9 010 0110; 2 00 -1 9 00 00; 2 00 -1 9 01110 00; 2 00 -1 9 0110 00; 2 00 -1 9 01110 00; # 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? 2 (:) 010; 2 (:.) 0110; 2 (:..) 011110; 2 (:...) 0111111110; 2 (:....) 011111111111111110; 2 (.) 00; 2 (:) 010; 2 (:.) 0110; 2 (::) 01110; 2 (:..) 011110; 2 (:.:) 0111110; 2 (::.) 01111110; 2 (:::) 011111110; 2 (:...) 0111111110; 2 (:..:) 01111111110; 2 (:.:.) 011111111110; 2 (:.::) 0111111111110; 2 (::..) 01111111111110; 2 (::.:) 011111111111110; 2 (:::.) 0111111111111110; 2 (::::) 01111111111111110; 2 (.) 00; 2 (:::) 011111110; 2 (::.:) 011111111111110; 2 (:.:) 0111110; 2 (:..:) 01111111110; 2 (.) 00; 2 (::) 01110; 2 (::::) 01111111111111110; 2 (::..) 01111111111110; 2 (:.:) 0111110; 2 (:.:) 0111110; 2 (:..:) 01111111110; 2 (:.) 0110; 2 (:) 010; 2 (::::) 01111111111111110; 2 (:.) 0110; 2 0111110 -1 10 011110 010; 2 (:.:) -1 10 (:..) (:); 2 011111110 -1 10 01111110 010; 2 (:::) -1 10 (::.) (:); 2 0111110 -1 10 011110 010; 2 (:.:) -1 10 (:..) (:); 2 011110 -1 10 00 011110; 2 (:..) -1 10 (.) (:..); 2 01111111110 -1 10 011111110 0110; 2 (:..:) -1 10 (:::) (:.); 2 0111111111110 -1 10 011111110 011110; 2 (:.::) -1 10 (:::) (:..); 2 011111111110 -1 10 01110 011111110; 2 (:.:.) -1 10 (::) (:::); 2 01111110 -1 10 0111110 010; 2 (::.) -1 10 (:.:) (:); 2 011110 -1 9 011110 010; 2 (:..) -1 9 (:..) (:); 2 011110 -1 9 010 011110; 2 (:..) -1 9 (:) (:..); 2 011110 -1 9 010 011110; 2 (:..) -1 9 (:) (:..); 2 01111110 -1 9 0110 01110; 2 (::.) -1 9 (:.) (::); 2 01111110 -1 9 0110 01110; 2 (::.) -1 9 (:.) (::); 2 011110 -1 9 0110 0110; 2 (:..) -1 9 (:.) (:.); 2 01111111110 -1 9 01110 01110; 2 (:..:) -1 9 (::) (::); 2 011111111111111110 -1 9 011110 011110; 2 (:....) -1 9 (:..) (:..); # MATH show local assignment 14 20 0 -1 2 (20) 0; 14 20 1 -1 2 (20) 1; 14 20 2 -1 2 (20) 2; 14 21 0 -1 2 (21) 0; 14 21 1 -1 2 (21) 1; 14 21 2 -1 2 (21) 2; 14 22 0 -1 2 (22) 0; 14 22 1 -1 2 (22) 1; 14 22 2 -1 2 (22) 2; 2 0 (14 20 0 (20)); 2 0 (14 20 0 -1 20); 2 0 -1 14 20 0 -1 20; 2 20 -1 14 20 0 20; 2 5 -1 14 20 0 5; 2 5 -1 14 20 0 -1 14 23 5 -1 23; 2 23 -1 14 20 0 -1 14 23 5 23; 2 1 (14 20 1 (20)); 2 1 (14 20 1 -1 20); 2 1 -1 14 20 1 -1 20; 2 20 -1 14 20 1 20; 2 5 -1 14 20 1 5; 2 5 -1 14 20 1 -1 14 23 5 -1 23; 2 23 -1 14 20 1 -1 14 23 5 23; 2 2 (14 20 2 (20)); 2 2 (14 20 2 -1 20); 2 2 -1 14 20 2 -1 20; 2 20 -1 14 20 2 20; 2 5 -1 14 20 2 5; 2 5 -1 14 20 2 -1 14 23 5 -1 23; 2 23 -1 14 20 2 -1 14 23 5 23; 2 0 (14 21 0 (21)); 2 0 (14 21 0 -1 21); 2 0 -1 14 21 0 -1 21; 2 21 -1 14 21 0 21; 2 5 -1 14 21 0 5; 2 5 -1 14 21 0 -1 14 23 5 -1 23; 2 23 -1 14 21 0 -1 14 23 5 23; 2 1 (14 21 1 (21)); 2 1 (14 21 1 -1 21); 2 1 -1 14 21 1 -1 21; 2 21 -1 14 21 1 21; 2 5 -1 14 21 1 5; 2 5 -1 14 21 1 -1 14 23 5 -1 23; 2 23 -1 14 21 1 -1 14 23 5 23; 2 2 (14 21 2 (21)); 2 2 (14 21 2 -1 21); 2 2 -1 14 21 2 -1 21; 2 21 -1 14 21 2 21; 2 5 -1 14 21 2 5; 2 5 -1 14 21 2 -1 14 23 5 -1 23; 2 23 -1 14 21 2 -1 14 23 5 23; 2 0 (14 22 0 (22)); 2 0 (14 22 0 -1 22); 2 0 -1 14 22 0 -1 22; 2 22 -1 14 22 0 22; 2 5 -1 14 22 0 5; 2 5 -1 14 22 0 -1 14 23 5 -1 23; 2 23 -1 14 22 0 -1 14 23 5 23; 2 1 (14 22 1 (22)); 2 1 (14 22 1 -1 22); 2 1 -1 14 22 1 -1 22; 2 22 -1 14 22 1 22; 2 5 -1 14 22 1 5; 2 5 -1 14 22 1 -1 14 23 5 -1 23; 2 23 -1 14 22 1 -1 14 23 5 23; 2 2 (14 22 2 (22)); 2 2 (14 22 2 -1 22); 2 2 -1 14 22 2 -1 22; 2 22 -1 14 22 2 22; 2 5 -1 14 22 2 5; 2 5 -1 14 22 2 -1 14 23 5 -1 23; 2 23 -1 14 22 2 -1 14 23 5 23; # Now for functions. 14 20 (12 28 5) -1 2 5 (20 2); 14 32 (12 24 5) -1 2 5 (32 3); 14 28 (12 29 6) -1 2 6 (28 2); 14 30 (12 32 6) -1 2 6 (30 3); 14 25 (12 38 (38)) -1 2 2 (25 2); 14 23 (12 30 (30)) -1 2 3 (23 3); 14 25 (12 33 (33)) -1 2 2 (25 2); 14 29 (12 21 (21)) -1 2 3 (29 3); 14 25 (12 32 -1 10 (32) 1) -1 2 3 (25 2); 14 31 (12 38 -1 10 (38) 1) -1 2 4 (31 3); 14 35 (12 33 -1 10 (33) 1) -1 2 3 (35 2); 14 32 (12 26 -1 10 (26) 1) -1 2 4 (32 3); 14 36 (12 37 -1 10 (37) 6) -1 2 (36 6) 12; 2 ((12 37 -1 10 (37) 6) 6) 12; 14 36 (12 37 -1 10 (37) 4) -1 2 (36 0) 4; 2 ((12 37 -1 10 (37) 4) 0) 4; 14 36 (12 37 -1 10 (37) 12) -1 2 (36 0) 12; 2 ((12 37 -1 10 (37) 12) 0) 12; 14 36 (12 37 -1 10 (37) 15) -1 2 (36 2) 17; 2 ((12 37 -1 10 (37) 15) 2) 17; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 13 4) 53; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 13) 4) 53; 2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 13 4) 53; 2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 13) 4) 53; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 5 6) 31; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 5) 6) 31; 2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 5 6) 31; 2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 5) 6) 31; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 7 8) 57; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 7) 8) 57; 2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 7 8) 57; 2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 7) 8) 57; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 (38 8 2) 17; 14 38 (12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) -1 2 ((38 8) 2) 17; 2 ((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 8 2) 17; 2 (((12 37 -1 12 36 -1 10 1 -1 9 (37) (36)) 8) 2) 17; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 15 14 29; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 5 8 13; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 12 15 27; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 14 14 28; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 8 0 8; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 15 9 24; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 11 15 26; 14 39 (12 37 -1 12 36 -1 12 38 -1 2 (38) -1 10 (37) (36)) -1 39 5 7 12; # MATH demonstrate existence of memory 13 40 42; 2 42 (40); # now introduce a function 14 41 (12 37 -1 9 (37) (37)) -1 2 0 (41 0); 14 41 (12 37 -1 9 (37) (37)) -1 2 16 (41 4); 14 41 (12 37 -1 9 (37) (37)) -1 2 64 (41 8); 14 41 (12 37 -1 9 (37) (37)) -1 2 9 (41 3); # show that functions can be remembered across statements 13 41 -1 12 37 -1 9 (37) (37); 2 (41 5) 25; 2 (41 0) 0; 2 (41 1) 1; 2 (41 9) 81; 13 42 -1 12 37 -1 10 (37) 1; 2 (42 7) 8; 2 (42 3) 4; 2 (42 3) 4; 2 (42 5) 6; # This could all be simplified or removed # once the handling of true / false stabilizes # MATH use equality for truth values 2 (2 0110 0110) (3 011110 0110); 2 (2 010 010) (3 01111110 011110); 2 (1 01110 011110) (2 0111110 0111110); 2 (2 01110 01110) (2 011110 011110); 2 (2 01110 01110) (2 00 00); 2 (1 01111110 0110) (1 011110 0110); 2 (1 011110 010) (3 00 00); 2 (3 00 0111110) (2 01110 0110); 2 (3 0110 01110) (3 011110 0111110); 2 (3 0110 01111110) (3 010 01111110); 4 -1 2 (3 0110 01110) (1 010 011110); 4 -1 2 (2 011110 01110) (1 010 0110); 4 -1 2 (2 0111110 011110) (1 0110 011110); 4 -1 2 (3 011110 01111110) (2 01110 01110); 4 -1 2 (2 01110 010) (3 011110 010); 4 -1 2 (1 01110 01111110) (1 01111110 0110); 4 -1 2 (2 0110 0110) (3 0110 0111110); 4 -1 2 (2 0111110 0111110) (1 01111110 0110); 4 -1 2 (2 01110 01110) (1 011110 01110); 4 -1 2 (3 0111110 0110) (1 0111110 011110); 13 43 1; 13 44 0; 2 (43) (2 010 010); 2 (43) (2 00 00); 2 (43) (3 011111110 0111110); 2 (43) (2 0111110 0111110); 2 (43) (2 011110 011110); 2 (1 0111110 01111110) (43); 2 (2 0111110 0111110) (43); 2 (3 011111110 0111110) (43); 2 (2 0110 0110) (43); 2 (1 01110 01111110) (43); 2 (44) (1 0111110 00); 2 (44) (2 0110 01110); 2 (44) (1 01111110 0110); 2 (44) (3 010 0110); 2 (44) (3 0110 0111110); 2 (2 011110 01110) (44); 2 (2 00 010) (44); 2 (1 01111110 01110) (44); 2 (2 01110 00) (44); 2 (2 011110 01110) (44); 2 (43) (43); 2 (44) (44); 4 -1 2 (43) (44); 4 -1 2 (44) (43); # MATH show mechanisms for branching 0 15; 2 28 -1 15 (1 3 0) 24 28; 2 27 -1 15 (3 2 4) 29 27; 2 29 -1 15 (2 3 1) 20 29; 2 21 -1 15 (2 0 0) 21 26; 2 29 -1 15 (3 5 3) 29 23; 2 26 -1 15 (3 1 0) 26 22; 2 21 -1 15 (2 3 3) 21 27; 2 23 -1 15 (3 4 4) 25 23; 13 45 -1 12 37 -1 12 36 -1 15 (3 (37) (36)) (37) (36); 13 46 -1 12 37 -1 12 36 -1 15 (1 (37) (36)) (37) (36); 2 0 -1 45 0 0; 2 0 -1 46 0 0; 2 1 -1 45 0 1; 2 0 -1 46 0 1; 2 2 -1 45 0 2; 2 0 -1 46 0 2; 2 1 -1 45 1 0; 2 0 -1 46 1 0; 2 1 -1 45 1 1; 2 1 -1 46 1 1; 2 2 -1 45 1 2; 2 1 -1 46 1 2; 2 2 -1 45 2 0; 2 0 -1 46 2 0; 2 2 -1 45 2 1; 2 1 -1 46 2 1; 2 2 -1 45 2 2; 2 2 -1 46 2 2; # need to be careful about whether 'if' is eager or lazy # here we suggest that it is lazy 13 47 -1 12 48 -1 15 (1 (48) 1) 1 -1 9 (48) -1 47 -1 11 (48) 1; 2 1 -1 47 1; 2 2 -1 47 2; 2 6 -1 47 3; 2 24 -1 47 4; 2 120 -1 47 5; # MATH introduce the AND logical operator 0 5; 13 5 (12 37 -1 12 36 -1 15 (37) (15 (36) (43) (44)) (44)); 5 (2 0110 0110) (3 011110 0110); 5 (2 010 010) (3 01111110 011110); 5 (1 01110 011110) (2 0111110 0111110); 5 (2 01110 01110) (2 011110 011110); 5 (2 01110 01110) (2 00 00); 5 (1 0111110 011111110) (3 0111110 01110); 5 (3 0111110 011110) (3 010 00); 5 (3 01110 00) (2 01110 01110); 5 (1 01110 011110) (1 01110 01111110); 5 (3 0111110 011110) (3 0111110 011110); 4 -1 5 (3 01111110 011110) (1 01110 010); 4 -1 5 (3 01110 010) (3 01110 01110); 4 -1 5 (2 00 00) (2 0111110 011110); 4 -1 5 (1 0110 011110) (3 011110 01111110); 4 -1 5 (2 01110 01110) (2 01110 010); 4 -1 5 (3 010 0111110) (1 01110 01111110); 4 -1 5 (1 01111110 0110) (2 0110 0110); 4 -1 5 (3 0110 0111110) (2 0111110 0111110); 4 -1 5 (1 01111110 0110) (2 01110 01110); 4 -1 5 (1 011110 01110) (3 0111110 0110); 4 -1 5 (1 0111110 011110) (2 010 0110); 4 -1 5 (1 01111110 011110) (2 0111110 010); 4 -1 5 (3 0110 01111110) (2 010 0111110); 4 -1 5 (1 01111110 01110) (2 0110 01110); 4 -1 5 (1 01111110 011110) (3 00 010); 4 -1 5 (2 01110 0111110) (1 011110 010); 4 -1 5 (2 011110 010) (1 011110 0110); 4 -1 5 (1 01111110 01110) (2 01110 00); 4 -1 5 (1 011110 0110) (1 011110 01111110); 4 -1 5 (3 011110 010) (1 0111110 0110); 4 -1 5 (3 00 010) (3 011111110 0111110); 4 -1 5 (1 01110 011110) (3 01110 01111110); 4 -1 5 (3 010 0110) (3 01111110 011110); 4 -1 5 (1 00 010) (2 011110 0111110); 5 (1 011110 01111110) (1 0111110 011111110); # MATH introduce the OR logical operator 13 6 (12 37 -1 12 36 -1 15 (37) (43) (15 (36) (43) (44))); 0 6; 6 (2 0110 0110) (3 011110 0110); 6 (2 010 010) (3 01111110 011110); 6 (1 01110 011110) (2 0111110 0111110); 6 (2 01110 01110) (2 011110 011110); 6 (2 01110 01110) (2 00 00); 6 (1 0111110 011111110) (3 0111110 01110); 6 (3 0111110 011110) (3 010 00); 6 (3 01110 00) (2 01110 01110); 6 (1 01110 011110) (1 01110 01111110); 6 (3 0111110 011110) (3 0111110 011110); 6 (3 01111110 011110) (1 01110 010); 6 (3 01110 010) (3 01110 01110); 6 (2 00 00) (2 0111110 011110); 6 (1 0110 011110) (3 011110 01111110); 6 (2 01110 01110) (2 01110 010); 6 (3 010 0111110) (1 01110 01111110); 6 (1 01111110 0110) (2 0110 0110); 6 (3 0110 0111110) (2 0111110 0111110); 6 (1 01111110 0110) (2 01110 01110); 6 (1 011110 01110) (3 0111110 0110); 4 -1 6 (1 0111110 011110) (2 010 0110); 4 -1 6 (1 01111110 011110) (2 0111110 010); 4 -1 6 (3 0110 01111110) (2 010 0111110); 4 -1 6 (1 01111110 01110) (2 0110 01110); 4 -1 6 (1 01111110 011110) (3 00 010); 4 -1 6 (2 01110 0111110) (1 011110 010); 4 -1 6 (2 011110 010) (1 011110 0110); 4 -1 6 (1 01111110 01110) (2 01110 00); 6 (1 011110 0110) (1 011110 01111110); 6 (3 011110 010) (1 0111110 0110); 6 (3 00 010) (3 011111110 0111110); 6 (1 01110 011110) (3 01110 01111110); 6 (3 010 0110) (3 01111110 011110); 6 (1 00 010) (2 011110 0111110); 6 (1 011110 01111110) (1 0111110 011111110); 13 49 (12 37 -1 12 36 -1 6 (3 (37) (36)) (2 (37) (36))); 13 50 (12 37 -1 12 36 -1 6 (1 (37) (36)) (2 (37) (36))); 49 0 0; 50 0 0; 4 -1 49 0 1; 50 0 1; 4 -1 49 0 2; 50 0 2; 49 1 0; 4 -1 50 1 0; 49 1 1; 50 1 1; 4 -1 49 1 2; 50 1 2; 49 2 0; 4 -1 50 2 0; 49 2 1; 4 -1 50 2 1; 49 2 2; 50 2 2; # MATH illustrate pairs 13 21 (12 37 -1 12 36 -1 12 51 -1 51 (37) (36)); 13 22 (12 52 -1 52 (12 37 -1 12 36 -1 37)); 13 23 (12 52 -1 52 (12 37 -1 12 36 -1 36)); 14 37 (21 0 4) -1 2 (22 -1 37) 0; 14 37 (21 0 4) -1 2 (23 -1 37) 4; 14 37 (21 6 2) -1 2 (22 -1 37) 6; 14 37 (21 6 2) -1 2 (23 -1 37) 2; 14 37 (21 3 9) -1 2 (22 -1 37) 3; 14 37 (21 3 9) -1 2 (23 -1 37) 9; 14 37 (21 7 -1 21 10 2) -1 2 (22 -1 37) 7; 14 37 (21 7 -1 21 10 2) -1 2 (22 -1 23 -1 37) 10; 14 37 (21 7 -1 21 10 2) -1 2 (23 -1 23 -1 37) 2; 14 37 (21 1 -1 21 15 17) -1 2 (22 -1 37) 1; 14 37 (21 1 -1 21 15 17) -1 2 (22 -1 23 -1 37) 15; 14 37 (21 1 -1 21 15 17) -1 2 (23 -1 23 -1 37) 17; 14 37 (21 8 -1 21 14 9) -1 2 (22 -1 37) 8; 14 37 (21 8 -1 21 14 9) -1 2 (22 -1 23 -1 37) 14; 14 37 (21 8 -1 21 14 9) -1 2 (23 -1 23 -1 37) 9; 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); # MATH introduce mutable objects, and side-effects 0 27; 0 28; 0 29; 13 53 -1 27 0; 28 (53) 15; 2 (29 -1 53) 15; 28 (53) 5; 28 (53) 7; 2 (29 -1 53) 7; 13 54 -1 27 11; 2 (29 -1 54) 11; 28 (54) 22; 2 (29 -1 54) 22; 2 (29 -1 53) 7; 2 (10 (29 -1 53) (29 -1 54)) 29; 15 (2 (29 -1 53) 7) (28 (53) 88) (28 (53) 99); 2 (29 -1 53) 88; 15 (2 (29 -1 53) 7) (28 (53) 88) (28 (53) 99); 2 (29 -1 53) 99; # 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 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)); 13 57 -1 12 48 -1 15 (2 (48) 0) (21 0 0) (55 (48) (12 36 -1 12 38 -1 21 (36) (38))); 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)); 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))); 13 61 -1 12 59 -1 22 -1 59; 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))); 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))); 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); 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); 2 (61 -1 (57 0)) 0; 2 (61 -1 (57 4) 6 1 0 4) 4; 2 (61 -1 (57 6) 6 2 7 0 9 4) 6; 2 (61 -1 (57 2) 4 9) 2; 2 (61 -1 (57 3) 6 1 7) 3; 2 (58 -1 (57 6) 12 11 10 4 1 5) 12; 64 (60 -1 (57 6) 12 11 10 4 1 5) ((57 5) 11 10 4 1 5); 2 (58 -1 (57 8) 15 13 12 7 10 11 13 18) 15; 64 (60 -1 (57 8) 15 13 12 7 10 11 13 18) ((57 7) 13 12 7 10 11 13 18); 2 (58 -1 (57 2) 11 1) 11; 64 (60 -1 (57 2) 11 1) ((57 1) 1); 2 (58 -1 (57 6) 5 19 4 16 6 11) 5; 64 (60 -1 (57 6) 5 19 4 16 6 11) ((57 5) 19 4 16 6 11); 2 (58 -1 (57 10) 12 18 7 4 9 18 6 16 6 18) 12; 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); 2 (58 -1 (57 6) 19 7 3 10 19 13) 19; 64 (60 -1 (57 6) 19 7 3 10 19 13) ((57 5) 7 3 10 19 13); 2 (58 -1 (57 6) 19 7 19 12 16 13) 19; 64 (60 -1 (57 6) 19 7 19 12 16 13) ((57 5) 7 19 12 16 13); 2 (58 -1 (57 1) 3) 3; 64 (60 -1 (57 1) 3) ((57 0)); 2 (58 -1 (57 3) 2 19 17) 2; 64 (60 -1 (57 3) 2 19 17) ((57 2) 19 17); 2 (58 -1 (57 7) 1 16 5 14 6 19 2) 1; 64 (60 -1 (57 7) 1 16 5 14 6 19 2) ((57 6) 16 5 14 6 19 2); 2 (62 ((57 3) 18 14 17) 1) 14; 2 (62 ((57 3) 8 11 10) 2) 10; 2 (62 ((57 8) 15 0 4 9 9 2 10 17) 3) 9; 2 (62 ((57 7) 4 8 8 5 14 5 13) 4) 14; 2 (62 ((57 4) 1 4 7 18) 2) 7; 2 (62 ((57 3) 12 2 3) 1) 2; 2 (62 ((57 6) 12 5 7 15 7 16) 2) 7; 2 (62 ((57 8) 5 15 7 14 7 1 11 19) 0) 5; 2 (62 ((57 3) 19 17 8) 2) 8; 2 (62 ((57 4) 10 10 4 11) 1) 10; 64 ((57 0)) ((57 0)); 64 ((57 1) 4) ((57 1) 4); 64 ((57 2) 7 5) ((57 2) 7 5); 64 ((57 3) 15 13 11) ((57 3) 15 13 11); 64 ((57 4) 2 8 0 6) ((57 4) 2 8 0 6); # this next batch of examples are a bit misleading, should streamline 4 -1 64 ((57 0)) ((57 1) 9); 4 -1 64 ((57 0)) ((57 1) 5); 4 -1 64 ((57 1) 18) ((57 2) 8 18); 4 -1 64 ((57 1) 18) ((57 2) 18 5); 4 -1 64 ((57 2) 11 18) ((57 3) 7 11 18); 4 -1 64 ((57 2) 11 18) ((57 3) 11 18 6); 4 -1 64 ((57 3) 7 19 17) ((57 4) 6 7 19 17); 4 -1 64 ((57 3) 7 19 17) ((57 4) 7 19 17 0); 4 -1 64 ((57 4) 10 0 11 1) ((57 5) 0 10 0 11 1); 4 -1 64 ((57 4) 10 0 11 1) ((57 5) 10 0 11 1 8); # some helpful functions 64 (63 8 ((57 0))) ((57 1) 8); 64 (63 11 ((57 1) 8)) ((57 2) 11 8); 64 (63 13 ((57 2) 1 12)) ((57 3) 13 1 12); 64 (63 0 ((57 3) 7 7 5)) ((57 4) 0 7 7 5); 64 (63 16 ((57 4) 16 0 19 3)) ((57 5) 16 16 0 19 3); 64 (63 10 ((57 5) 5 6 7 9 10)) ((57 6) 10 5 6 7 9 10); 64 (63 19 ((57 6) 3 19 18 6 10 16)) ((57 7) 19 3 19 18 6 10 16); 64 (63 19 ((57 7) 17 17 10 1 18 12 14)) ((57 8) 19 17 17 10 1 18 12 14); 13 52 -1 12 37 -1 12 36 -1 (57 2) (37) (36); 13 65 -1 12 59 -1 58 -1 59; 13 66 -1 12 59 -1 58 -1 60 -1 59; 64 (52 3 6) ((57 2) 3 6); 2 (65 -1 52 3 6) 3; 2 (66 -1 52 3 6) 6; 64 (52 4 9) ((57 2) 4 9); 2 (65 -1 52 4 9) 4; 2 (66 -1 52 4 9) 9; 64 (52 8 3) ((57 2) 8 3); 2 (65 -1 52 8 3) 8; 2 (66 -1 52 8 3) 3; 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))); 13 71 -1 12 59 -1 12 68 -1 12 69 -1 67 (59) (68) (69) 0; 13 72 -1 12 37 100; 2 (71 ((57 1) 13) 13 (72)) 0; 2 (71 ((57 10) 0 9 8 16 15 14 17 5 9 2) 15 (72)) 4; 2 (71 ((57 3) 7 4 10) 7 (72)) 0; 2 (71 ((57 6) 0 17 10 13 11 5) 17 (72)) 1; 2 (71 ((57 3) 12 9 6) 12 (72)) 0; 2 (71 ((57 7) 17 1 4 17 14 13 13) 14 (72)) 4; 2 (71 ((57 3) 2 15 2) 15 (72)) 1; 2 (71 ((57 9) 6 13 10 8 10 9 6 15 18) 13 (72)) 1; 2 (71 ((57 3) 12 16 0) 12 (72)) 0; 2 (71 ((57 1) 15) 15 (72)) 0; 2 (71 ((57 4) 2 17 11 5) 14 (72)) 100; 2 (71 ((57 6) 12 1 19 6 17 9) 2 (72)) 100; 2 (71 ((57 8) 11 6 17 8 13 10 9 16) 19 (72)) 100; # HACK describe changes to the implicit interpreter to allow new special forms 13 73 -1 25; 13 25 -1 12 37 -1 15 (2 (37) 32) 64 (73 -1 37); 2 32 64; 2 (10 32 64) 128; 13 25 -1 73; 4 -1 2 32 64; 2 (10 32 64) 96; # now can create a special form for lists 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)); 64 (16 1 2 3) ((57 3) 1 2 3); # now to desugar let expressions 13 74 -1 25; 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))); 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)); 77 ((37 20)) (2 (37) 20); 77 ((37 50) (36 20)) (2 (11 (37) (36)) 30); # the is-list function is now on dubious ground # this stuff will be replaced with typing ASAP 13 78 -1 12 37 -1 4 -1 24 -1 37; 78 -1 (57 2) 1 3; 78 -1 (57 0); 4 -1 78 23; 78 -1 (57 3) ((57 2) 2 3) 1 (12 37 -1 10 (37) 10); # MATH introduce sugar for let # if would be good to introduce desugarings more rigorously, but for now... # ... just a very vague sketch 0 77; 2 (77 ((37 10)) (10 (37) 5)) ((12 37 -1 10 (37) 5) 10); 2 (77 ((37 10) (36 5)) (10 (37) (36))) (((12 37 -1 12 36 -1 10 (37) (36)) 10) 5); # MATH build up functions of several variables 2 ((12 37 -1 12 36 -1 11 (37) (36)) 4 0) 4; 2 ((12 37 -1 12 36 -1 11 (37) (36)) 11 8) 3; 2 ((12 37 -1 12 36 -1 11 (37) (36)) 5 5) 0; 2 ((12 37 -1 12 36 -1 11 (37) (36)) 10 1) 9; 2 ((12 37 -1 12 36 -1 11 (37) (36)) 10 7) 3; 13 79 -1 12 37 -1 62 (37) (11 (61 -1 37) 1); 13 80 -1 12 37 -1 15 (3 (61 -1 37) 1) (63 (58 -1 37) (80 -1 60 -1 37)) (16); # test last and except-last 2 15 (79 -1 16 4 5 15); 64 (16 4 5) (80 -1 16 4 5 15); 0 26; 13 81 -1 25; 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))); # test lambda 2 ((26 (37 36) (11 (37) (36))) 8 3) 5; 2 ((26 (37 36) (11 (37) (36))) 1 1) 0; 2 ((26 (37 36) (11 (37) (36))) 10 9) 1; 2 ((26 (37 36) (11 (37) (36))) 7 5) 2; 2 ((26 (37 36) (11 (37) (36))) 9 8) 1; 13 84 -1 26 (37 36) (15 (64 (36) (16)) (37) (84 ((37) (58 -1 36)) (60 -1 36))); 2 (84 (26 (37 36) (11 (37) (36))) (16 8 6)) 2; 2 (84 (26 (37 36) (11 (37) (36))) (16 5 0)) 5; 2 (84 (26 (37 36) (11 (37) (36))) (16 12 9)) 3; 2 (84 (26 (37 36) (11 (37) (36))) (16 13 8)) 5; 2 (84 (26 (37 36) (11 (37) (36))) (16 11 3)) 8; # MATH show map function for applying a function across the elements of a list 13 85 -1 26 (86 59) (15 (3 (61 -1 59) 0) (63 (86 (58 -1 59)) (85 (86) (60 -1 59))) (16)); 64 (85 (12 37 -1 9 (37) 2) (16 0 8 15)) (16 0 16 30); 64 (85 (12 37 -1 9 (37) 2) (16 12 4 0 9)) (16 24 8 0 18); 64 (85 (12 37 -1 9 (37) 2) (16 8 9 5 7 10)) (16 16 18 10 14 20); 64 (85 (12 37 -1 9 (37) 2) (16 10 12 19 8 3 1)) (16 20 24 38 16 6 2); 64 (85 (12 37 42) (16 5 18 4)) (16 42 42 42); 64 (85 (12 37 42) (16 3 10 17 11)) (16 42 42 42 42); 64 (85 (12 37 42) (16 5 13 6 16 2)) (16 42 42 42 42 42); 64 (85 (12 37 42) (16 9 1 19 14 6 10)) (16 42 42 42 42 42 42); 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))); 2 (87 (10) (16 5 12 2)) 19; 2 (87 (10) (16 11 18 1 4)) 34; 2 (87 (10) (16 15 13 10 12 2)) 52; 2 (87 (10) (16 12 6 17 15 4 10)) 64; # 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 0 88; # MATH show an example of recursive evaluation # skipping over a lot of definitions and desugarings 13 89 -1 12 51 -1 12 37 -1 15 (3 (37) 0) (9 (37) -1 51 (51) (11 (37) 1)) 1; 13 47 -1 12 37 -1 15 (3 (37) 0) (9 (37) -1 47 -1 11 (37) 1) 1; 2 (89 (89) 0) 1; 2 (89 (89) 1) 1; 2 (89 (89) 2) 2; 2 (89 (89) 3) 6; 2 (89 (89) 4) 24; 2 (89 (89) 5) 120; 2 (47 0) 1; 2 (47 1) 1; 2 (47 2) 2; 2 (47 3) 6; 2 (47 4) 24; 2 (47 5) 120; # 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 13 90 -1 12 37 -1 12 36 -1 12 38 -1 37 (36) (38); 13 91 -1 12 36 -1 12 38 -1 36; 13 92 -1 12 36 -1 12 38 -1 38; 13 93 -1 12 37 -1 12 36 -1 12 38 -1 90 (38) (37) (36); 13 94 -1 12 37 -1 37 (91); 13 95 -1 12 37 -1 37 (92); 13 96 -1 12 51 -1 12 37 -1 37; 13 97 -1 12 51 -1 12 37 -1 51 (37); 13 98 -1 12 51 -1 12 37 -1 51 (51 (37)); 13 99 -1 12 48 -1 12 51 -1 12 37 -1 51 ((48 (51)) (37)); 13 100 -1 12 101 -1 12 102 -1 (101 (99)) (102); 13 103 -1 12 101 -1 12 102 -1 (101 (100 -1 102)) (96); 13 104 -1 12 48 -1 95 -1 (48 (12 86 -1 93 (99 -1 94 -1 86) (94 -1 86))) (93 (96) (96)); 13 105 -1 12 48 -1 (48 (12 106 -1 92) (91)); 13 107 -1 12 51 -1 (12 37 -1 51 (37 (37))) (12 37 -1 51 (37 (37))); # .. but for rest of message will assume that define does fixed-point for us # now build a link between numbers and church number functions 13 108 -1 12 109 -1 109 (12 37 -1 10 (37) 1) 0; 2 0 (108 -1 96); 2 1 (108 -1 97); 2 2 (108 -1 98); 13 110 -1 12 37 -1 15 (2 0 (37)) (96) (99 -1 110 -1 11 (37) 1); # MATH introduce universal quantifier # really need to link with sets for true correctness # and the examples here are REALLY sparse, need much more 0 19; 1 5 (10 5 1); 1 4 (10 4 1); 1 3 (10 3 1); 1 2 (10 2 1); 1 1 (10 1 1); 1 0 (10 0 1); 19 (12 37 -1 1 (37) (10 (37) 1)); 1 5 (9 5 2); 1 4 (9 4 2); 1 3 (9 3 2); 1 2 (9 2 2); 1 1 (9 1 2); 4 -1 1 0 (9 0 2); 4 -1 19 (12 37 -1 1 (37) (9 (37) 2)); # MATH introduce existential quantifier # really need to link with sets for true correctness # and the examples here are REALLY sparse, need much more 4 -1 2 5 (9 2 2); 2 4 (9 2 2); 4 -1 2 3 (9 2 2); 4 -1 2 2 (9 2 2); 4 -1 2 1 (9 2 2); 4 -1 2 0 (9 2 2); 0 20; 20 (12 37 -1 2 (37) (9 2 2)); 4 -1 2 5 (10 5 2); 4 -1 2 4 (10 4 2); 4 -1 2 3 (10 3 2); 4 -1 2 2 (10 2 2); 4 -1 2 1 (10 1 2); 4 -1 2 0 (10 0 2); 4 (20 (12 37 -1 2 (37) (10 (37) 2))); # MATH introduce logical implication 0 111; 13 111 -1 12 37 -1 12 36 -1 4 -1 5 (37) (4 -1 36); 111 (43) (43); 4 -1 111 (43) (44); 111 (44) (43); 111 (44) (44); 19 (12 37 -1 19 (12 36 -1 111 (111 (37) (36)) (111 (4 -1 36) (4 -1 37)))); # MATH introduce sets and set membership 0 112; 13 112 -1 12 37 -1 12 59 -1 4 -1 2 (67 (59) (37) (12 36 0) 1) 0; 112 8 (16 8 4 3 0 5); 112 5 (16 8 4 3 0 5); 112 0 (16 8 4 3 0 5); 112 1 (16 1 0 3 9 5); 112 3 (16 1 0 3 9 5); 112 0 (16 1 0 3 9 5); 112 5 (16 6 8 1 0 2 5); 112 1 (16 6 8 1 0 2 5); 112 5 (16 6 8 1 0 2 5); 112 6 (16 6 8 3 9 2 5); 112 6 (16 6 8 3 9 2 5); 112 5 (16 6 8 3 9 2 5); 112 4 (16 6 4 1 7 2 5); 112 1 (16 6 4 1 7 2 5); 112 7 (16 6 4 1 7 2 5); 4 -1 112 6 (16 8 3 7 9); 4 -1 112 6 (16 8 4 1 3 5); 4 -1 112 6 (16 9 2 5); 4 -1 112 0 (16 7 2 5); 4 -1 112 6 (16 3 5); # rules for set equality 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); 13 114 -1 12 37 -1 12 36 -1 5 (113 (37) (36)) (113 (36) (37)); 114 (16 1 5 9) (16 5 1 9); 114 (16 1 5 9) (16 9 1 5); 4 -1 114 (16 1 5 9) (16 1 5); # 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 112 5 (30 (12 37 -1 2 (10 (37) 10) 15)); 112 3 (30 (12 37 -1 2 (9 (37) 3) (10 (37) 6))); 13 115 -1 16; 112 0 (31); 19 (12 37 -1 111 (112 (37) (31)) (112 (10 (37) 1) (31))); 112 1 (31); 112 2 (31); 112 3 (31); 112 4 (31); 112 5 (31); 112 6 (31); 112 7 (31); 112 8 (31); 112 9 (31); 13 116 -1 16 (43) (44); 112 (43) (116); 112 (44) (116); # actually, to simplify semantics elsewhere, true and false # are now just 0 and 1 so they are not distinct from ints 13 117 -1 30 -1 12 37 -1 20 -1 12 36 -1 5 (112 (36) (31)) (2 (9 2 (36)) (37)); 112 0 (31); 112 0 (117); 112 1 (31); 4 -1 112 1 (117); 112 2 (31); 112 2 (117); 112 3 (31); 4 -1 112 3 (117); 112 4 (31); 112 4 (117); 112 5 (31); 4 -1 112 5 (117); 112 6 (31); 112 6 (117); # MATH introduce graph structures 13 118 -1 26 (119 120) (52 (119) (120)); 13 121 -1 118 (16 1 2 3 4) (16 (16 1 2) (16 2 3) (16 1 4)); 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)); 2 (122 (121) 1 2) (43); 2 (122 (121) 1 3) (44); 2 (122 (121) 2 4) (44); # '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'. 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))))); 2 (126 (121) 1 2) (43); 2 (126 (121) 1 3) (43); 2 (126 (121) 2 4) (44); # MATH show how to execute a sequence of instructions 0 128; 13 81 -1 25; 13 129 -1 12 37 -1 15 (49 (61 -1 37) 1) (63 (79 -1 37) (129 -1 80 -1 37)) (37); # test reverse 64 (16 1 2 3) (129 -1 16 3 2 1); 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))); 2 (128 1 7 2 4) 4; 2 (128 (28 (53) 88) (28 (53) 6) (29 -1 53)) 6; 2 (128 (28 (54) 88) (28 (53) 6) (29 -1 54)) 88; 2 (128 (28 (53) 88) (28 (53) 6) (29 -1 53) 4) 4; # 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) 13 130 -1 26 (131 37 36 38) (15 (8 (38) (37)) (36) (131 (38))); 13 132 -1 26 (131 37) (131 (37)); 13 133 -1 12 37 -1 32; 13 134 -1 12 135 -1 12 37 -1 135; 13 136 -1 130 (130 (133) 3 2) 4 9; 2 (132 (136) 4) 9; 2 (132 (136) 3) 2; 2 (132 (136) 8) (32); 2 (132 (136) 15) (32); 2 (132 (130 (136) 15 33) 15) 33; 2 (132 (136) 15) (32); 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)); 2 (132 (137 -1 16 (52 3 10) (52 2 20) (52 1 30)) 3) 10; 2 (132 (137 -1 16 (52 3 10) (52 2 20) (52 1 30)) 1) 30; # OBJECT introduce simple mutable structures 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))); 13 140 -1 138 -1 16 141 142 143; 28 (140 141) 15; 2 (29 -1 140 141) 15; # OBJECT introduce method handler wrappers 13 144 -1 26 (145 146 147) (130 (145) (146) (12 106 -1 147 -1 145)); 13 148 -1 12 37 -1 37 0; 13 149 -1 138 -1 16 37 36; 28 (149 37) 10; 28 (149 36) 20; 2 (29 -1 149 37) 10; 2 (29 -1 149 36) 20; 13 150 -1 144 (149) 151 (12 152 -1 10 (29 -1 152 37) (29 -1 152 36)); 2 (29 -1 150 37) 10; 2 (29 -1 150 36) 20; 2 (148 -1 150 151) 30; 28 (150 36) 10; 2 (148 -1 150 151) 20; 28 (149 36) 5; 2 (148 -1 150 151) 15; # TURING introduce turing machine model # just for fun! 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); 13 154 -1 12 37 -1 15 (3 (61 -1 37) 0) (58 -1 37) (16); 13 155 -1 12 156 -1 77 ((37 (66 -1 156))) (15 (3 (61 -1 37) 0) (58 -1 37) (16)); 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))))); 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))))); 13 164 -1 12 37 -1 52 (16) (37); 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); 13 166 -1 12 37 -1 165 (16) (66 -1 37); 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)); 64 (166 -1 160 (167) 168 171 (164 -1 16 1 0 0 1)) (16 1 0 1 0); 64 (166 -1 160 (167) 168 171 (164 -1 16 1 1 1)) (16 1 0 0 0); 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); # 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. 13 172 (26 (173) (26 (37) (15 (2 (37) 174) (173) 0))); 13 175 (12 37 (15 (24 (37)) (172 (37)) (37))); 13 176 (26 (177 178) (15 (24 (178)) (2 (177) 174) (4 (24 ((175 (178)) (177)))))); # add version of lambda that allows types to be declared 13 81 (25); 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)))))); # add conditional form 13 81 (25); 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)))))); 2 99 (181 99); 2 8 (181 ((43) 8) 11); 2 11 (181 ((44) 8) 11); 2 7 (181 ((44) 3) ((43) 7) 11); 2 3 (181 ((43) 3) ((43) 7) 11); 2 11 (181 ((44) 3) ((44) 7) 11); 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))); 13 186 (26 (37) (184 (26 (36) (2 (36) (37))))); 64 (16 1 2 3 5) (186 4 (16 1 2 3 4 5)); 64 (16 1 2 3 5) (186 4 (16 1 4 2 4 3 4 5)); 13 187 (26 (177 178) (77 ((188 (175 (178)))) (188 (177)))); 13 189 (26 ((37 174) (36 174)) (187 174 (10 (37) (36)))); 2 42 (189 (172 10) (172 32)); 2 42 (189 10 32); 13 190 (26 (51) ((26 (37) (51 (26 (36) ((37 (37)) (36))))) (26 (37) (51 (26 (36) ((37 (37)) (36))))))); # OBJECT an example object -- a 2D point 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)))); 13 193 (191 1 11); 13 194 (191 2 22); 2 1 (193 37); 2 22 (194 36); 2 11 ((191 11 12) 37); 2 11 (((191 11 12) 191) 37); 2 16 (((191 16 17) 191) 37); 2 33 (193 10 (194) 36); 193 10 (194) 2 (191 3 33); 194 10 (193) 2 (191 3 33); (191 100 200) 10 (191 200 100) 2 (191 300 300); 176 191 (193); 4 (176 174 (193)); 176 174 5; 4 (176 191 5); # OBJECT an example object -- a container 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))))); # 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 13 199 (195 200); 199 100 77; 199 100 88; 199 100 99; 114 (199 197) (16 77 88 99); 199 198 88; 114 (199 197) (16 77 99); 13 201 (195 200); 201 100 77; 201 100 99; 201 2 (199); # OBJECT expressing inheritance # counter-container adds one method to container: count 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))))))); 13 205 (202 200); 2 0 (205 204); 205 100 4; 2 1 (205 204); 205 100 5; 2 2 (205 204); # OBJECT adding a special form for classes # need a bunch of extra machinery first, will push this # back into previous sections eventually, and simplify 13 206 (26 (207 208) (15 (3 (61 (207)) 0) (206 (80 (207)) (63 (79 (207)) (208))) (208))); 64 (206 (16 1 2 3) (16 4 5 6)) (16 1 2 3 4 5 6); 13 209 (12 37 (12 59 (15 (3 (61 (59)) 0) (63 (58 (59)) (209 (37) (60 (59)))) (16 (37))))); 64 (209 5 (16 1 2)) (16 1 2 5); 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))); 13 211 (77 ((212 (27 0))) (26 (37) (77 ((213 (29 (212)))) (128 (28 (212) (10 (213) 1)) (213))))); 2 (211 200) 0; 2 (211 200) 1; 2 (211 200) 2; 4 (2 (211 200) (211 200)); 13 214 (26 (215 152) (15 (24 -1 215) (152) (215))); # 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. 13 81 (25); 13 25 (77 ((82 (81))) (12 37 (15 (24 (37)) (82 (37)) (15 (2 (58 (37)) 216) (77 ((146 (62 (37) 1)) (217 (62 (37) 2)) (218 (60 (60 (60 (37)))))) (25 (16 13 (146) (16 26 (63 219 (217)) (16 77 (209 (16 220 (16 211 200)) (85 (60) (210 (12 37 (2 (65 (37)) 221)) (218)))) (16 77 (16 (16 152 (16 190 (16 26 (16 152) (16 77 (16 (16 215 (16 214 (16 219) (16 152)))) (16 77 (16 (16 222 1)) (16 26 (16 147) (16 (206 (63 181 (206 (85 (12 37 (16 (16 2 (16 147) (65 (37))) (66 (37)))) (85 (60) (210 (12 37 (2 (65 (37)) 147)) (218)))) (85 (12 37 (16 (16 2 (16 147) (37)) (16 (37)))) (85 (66) (210 (12 37 (2 (65 (37)) 221)) (218)))))) (16 (16 (16 2 (16 147) 152) (16 152)) (16 (16 2 (16 147) (146)) (16 152 152)) (16 (16 2 (16 147) 223) (146)) (16 (16 2 (16 147) 224) (16 26 (16 37) 0)) (16 (16 2 (16 147) 200) 0) (16 (16 2 (16 147) 220) (16 220)) (16 (16 2 (16 147) 225) (16 26 (16 37) (16 2 (16 220) (16 37 220)))) (16 152 224 (16 147)))))))))))) (16 128 (16 152 200) (16 152)))))))) (82 (37)))))); # revisit the point class example 216 191 (37 36) (147 37 (37)) (147 36 (36)) (147 10 (26 ((86 191)) (191 200 (10 (37) (86 37)) (10 (36) (86 36))))) (147 2 (26 ((86 191)) (5 (2 (37) (86 37)) (2 (36) (86 36))))); # note the appearance of new in the next line -- # this is the only difference to previous version 13 193 (191 200 1 11); 13 194 (191 200 2 22); 2 1 (193 37); 2 22 (194 36); 2 11 ((191 200 11 12) 37); 2 11 (((191 200 11 12) 191) 37); 2 16 (((191 200 16 17) 191) 37); 2 33 (193 10 (194) 36); 193 10 (194) 2 (191 200 3 33); 194 10 (193) 2 (191 200 3 33); (191 200 100 200) 10 (191 200 200 100) 2 (191 200 300 300); 176 191 (193); 4 (176 174 (193)); # Check that virtual calls can be made to work. # They are a little awkward right now. # Should they be the default? 216 226 () (147 227 100) (147 228 (215 227)); 216 229 () (221 230 (27 0)) (147 200 (28 (230) (226 -1 215))) (147 203 (12 37 ((29 -1 230) (37)))) (147 224 (12 37 (152 203 -1 37))) (147 227 200); 2 100 -1 226 200 228; 2 200 -1 229 200 228; # OBJECT wrapper class for cells 216 231 (232) (221 233 (27 (232))) (147 234 (29 (233))) (147 235 (26 (236) (28 (233) (236)))) (147 237 (152 235 (232))) (147 224 (26 (37) ((175 (152 234)) (37)))); 13 238 (231 200 15); 2 15 (238 234); 238 235 82; 2 82 (238 234); 13 239 (231 200 (191 200 120 150)); 13 240 (231 200 (191 200 300 300)); 239 10 (240) 2 (191 200 420 450); 4 (239 2 (240)); 240 235 (239); 239 2 (240); # MUD playing around with doors and rooms 216 241 ((242 243) (244 243)) (147 200 (128 (242 100 (152)) (244 100 (152)))) (147 245 (26 ((162 243)) (181 ((162 225 (242)) (244)) ((162 225 (244)) (242)) 0))) (147 246 (26 ((162 243)) (181 ((162 225 (242)) (43)) ((162 225 (244)) (43)) (44)))); 216 243 (146) (221 233 (195 200)) (147 146 (146)) (147 224 (26 (37) (233 (37)))); # need to fix up containers to use object equality 13 247 (26 (48 59) (3 (61 (210 (26 (37) (37 225 (48))) (59))) 0)); 216 195 () (221 196 (231 200 (16))) (147 197 (196 234)) (147 100 (26 (37) (15 (4 (247 (37) (196 234))) (196 235 (63 (37) (196 234))) (44)))); 13 248 (243 200 0); 13 249 (243 200 1); 13 250 (241 200 (248) (249)); (65 (248 197)) 225 (250); (65 (249 197)) 225 (250); 250 245 (248) 225 (249); 4 (250 245 (248) 225 (248)); 250 245 (249) 225 (248); 13 251 (243 200 2); 13 252 (243 200 3); 13 253 (243 200 4); 13 254 (243 200 0); 13 255 (241 200 (248) (252)); 13 256 (241 200 (248) (251)); 13 257 (241 200 (251) (253)); 216 258 () (221 259 (231 200 0)) (221 146 (231 200 0)) (147 260 (26 ((261 243)) (128 (15 (4 (24 -1 259 234)) (259 234 198 (152)) 0) (261 100 (152)) (259 235 (261))))) (147 262 (259 234)) (147 263 (26 (48) (146 235 -1 48))) (147 264 (146 234)) (147 265 0); 13 266 (26 (185 45 70 48 59) (15 (3 (61 (59)) 0) (15 (3 (185 (58 (59))) (45)) (266 (185) (185 (58 (59))) (48) (10 (48) 1) (60 (59))) (266 (185) (45) (70) (10 (48) 1) (60 (59)))) (70))); 13 267 (26 (185 59) (266 (185) (185 (58 (59))) 0 0 (59))); 13 268 (26 (185 45 70 48 59) (15 (3 (61 (59)) 0) (15 (1 (185 (58 (59))) (45)) (268 (185) (185 (58 (59))) (48) (10 (48) 1) (60 (59))) (268 (185) (45) (70) (10 (48) 1) (60 (59)))) (70))); 13 269 (26 (185 59) (268 (185) (185 (58 (59))) 0 0 (59))); 2 2 (267 (26 (37) (37)) (16 3 4 5 0)); 2 1 (267 (26 (37) (37)) (16 3 5 4 0)); 2 0 (267 (26 (37) (37)) (16 5 3 4 0)); # the robo class makes a character that patrols from room to room 216 270 () (221 203 (258 200)) (221 271 (231 200 1)) (221 272 (231 200 (26 (37) 0))) (147 224 (26 (37) (203 (37)))) (147 265 (77 ((273 (210 (26 (37) (176 241 (37))) (152 259 197)))) (77 ((274 (85 (26 (37) (272 234 (37))) (273)))) (77 ((275 (62 (273) (269 (26 (37) (37)) (274)))) (276 (272 234)) (277 (271 234))) (128 (152 259 235 (275 245 (152 259 234))) (272 235 (26 ((278 241)) (15 (278 225 (275)) (277) (276 (278))))) (271 235 (10 (271 234) 1))))))); 13 279 (270 200); 279 260 (251); 13 280 (26 ((281 270)) (267 (26 ((261 243)) (15 (261 225 (281 262)) 1 0)) (16 (248) (249) (251) (252) (253)))); 13 282 (26 (48 162 59) (15 (1 (162) (48)) (128 (279 265) (282 (48) (10 (162) 1) (209 (280 (279)) (59)))) (59))); # here is a list of the first 30 rooms the robot character visits # 0=hall, 1=kitchen, 2=stairs, 3=lawn, 4=bedroom 64 (282 30 0 (16)) (16 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); # 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 # NOTE end of part 2, start of part 3 # The following parts of the message are the beginnings # of embedding an alternate visual primer 0 283; # GATE simulating unless gates # for embedded image-and-logic-based primer # practice with pure logic gate # X unless Y = (X if Y=0, otherwise 0) 13 284 -1 12 37 -1 12 36 -1 5 (37) (4 (36)); # if second input is true, output is blocked (false) # if second input is false, output copies first input 2 (44) (284 (44) (44)); 2 (43) (284 (43) (44)); 2 (44) (284 (44) (43)); 2 (44) (284 (43) (43)); # To do: add a simple simulator for non-grid-based # logic -- much simpler to understand than # grid-based # On to a grid-based logic simulation # first, need unbounded, mutable matrices 13 285 -1 12 135 -1 (27 (134 (135))); 13 286 -1 12 287 -1 12 37 -1 12 288 -1 28 (287) -1 130 (29 (287)) (288) (37); 13 289 -1 12 287 -1 12 288 -1 132 (29 (287)) (288); 13 290 (285 0); 2 0 -1 289 (290) -1 16 1 2 3; 286 (290) 10 -1 16 1 2 3; 2 10 -1 289 (290) -1 16 1 2 3; # go through a circuit of unless gates and analyze data flow 13 291 -1 12 292 -1 14 293 (285 (44)) (128 (85 (12 294 -1 14 295 (62 (294) 0) -1 14 296 (62 (294) 1) -1 14 297 (62 (294) 2) -1 14 298 (62 (294) 3) -1 14 173 (62 (294) 4) -1 (15 (2 (295) (297)) (128 (286 (293) (173) -1 16 (297) (298) 299) (286 (293) (43) -1 16 (297) (298) 300) (286 (293) (43) -1 16 (295) (296) 301) (294)) (128 (286 (293) (173) -1 16 (297) (298) 302) (286 (293) (43) -1 16 (297) (298) 303) (286 (293) (43) -1 16 (295) (296) 304) (294)))) (292)) (293)); # move forward one simulation step 13 305 -1 12 292 -1 12 293 (85 (12 294 -1 14 295 (62 (294) 0) -1 14 296 (62 (294) 1) -1 14 297 (62 (294) 2) -1 14 298 (62 (294) 3) -1 14 173 (62 (294) 4) -1 14 306 (15 (2 (295) (297)) (15 (289 (293) -1 16 (295) (296) 300) (5 (289 (293) -1 16 (295) (296) 299) (4 (5 (289 (293) -1 16 (295) (296) 302) (4 (289 (293) -1 16 (295) (296) 304))))) (15 (289 (293) -1 16 (295) (296) 303) (289 (293) -1 16 (295) (296) 302) (43))) (15 (289 (293) -1 16 (295) (296) 303) (5 (289 (293) -1 16 (295) (296) 302) (4 (5 (289 (293) -1 16 (295) (296) 299) (4 (289 (293) -1 16 (295) (296) 301))))) (15 (289 (293) -1 16 (295) (296) 300) (289 (293) -1 16 (295) (296) 299) (43)))) -1 16 (295) (296) (297) (298) (306)) (292)); # wrap up both phases of simulation 13 307 -1 12 292 -1 14 293 (291 (292)) -1 305 (292) (293); # A circuit is a list of gates # Each gate is a list (x1 y1 x2 y2 v) # where the coordinates (x1,y1) and (x2,y2) represent # start and end points of a wire on a plane, carrying a # logic value v. # Wires copy values from their start point. # | # | (A) # V # -->--> # (B)(C) # # Wire C here copies from wire B. # If wire A is on, it blocks (sets to 0) C. 14 308 (16 (16 2 2 4 2 (43)) (16 4 2 6 2 (43)) (16 6 2 8 2 (43)) (16 6 4 6 2 (43))) -1 14 309 (16 (16 2 2 4 2 (43)) (16 4 2 6 2 (43)) (16 6 2 8 2 (44)) (16 6 4 6 2 (43))) -1 8 (307 (308)) (309); # okay, now let us make a simple image class # we are going to encode each row as a single binary number, # rather than a vector, so that images will be pretty # obvious in the raw, uninterpreted message 13 310 -1 26 (48 311) -1 14 312 (34 (48) 2) (15 (2 0 -1 311) (4 -1 2 (48) -1 9 2 -1 312) (310 (312) -1 11 (311) 1)); 2 0 -1 310 (::.) 0; 2 1 -1 310 (::.) 1; 2 1 -1 310 (::.) 2; 2 0 -1 310 (::.) 3; 2 0 -1 310 (::.) 4; 2 0 -1 310 8 0; 2 0 -1 310 8 1; 2 0 -1 310 8 2; 2 1 -1 310 8 3; 13 313 -1 26 (131 39 59) -1 16 (131) (39) (59); 13 314 -1 26 (315 316 317) -1 14 131 (62 (315) 0) -1 14 39 (62 (315) 1) -1 14 59 (62 (315) 2) -1 14 318 (62 (59) (316)) -1 310 (318) (11 (11 (39) (317)) 1); 13 319 -1 12 315 -1 62 (315) 0; 13 320 -1 12 315 -1 62 (315) 1; 13 321 -1 313 3 5 -1 16 (:....) (:...:) (:....); 2 3 (319 -1 321); 2 5 (320 -1 321); 2 (43) (314 (321) 0 0); 2 (44) (314 (321) 0 1); 2 (44) (314 (321) 0 4); 2 (43) (314 (321) 1 0); 2 (43) (314 (321) 2 0); 2 (43) (314 (321) 1 4); # need a way to join two lists 13 322 -1 12 207 -1 12 208 -1 (15 (3 (61 -1 207) 0) (63 (58 -1 207) (322 (60 -1 207) (208))) (208)); 13 323 -1 12 59 -1 (15 (3 (61 -1 59) 2) (322 (58 -1 59) (323 -1 60 -1 59)) (15 (2 (61 -1 59) 2) (322 (58 -1 59) -1 (58 -1 60 -1 59)) (15 (2 (61 -1 59) 1) (58 -1 59) (16)))); 8 (16 1 2 3 4) (322 (16 1 2) (16 3 4)); 8 (16 1 2 3 4) (323 (16 (16 1 2) (16 3) (16 4))); # helper for pairing 13 324 -1 12 37 -1 12 59 -1 85 (12 36 (16 (37) (36))) (59); 8 (16 (16 1 10) (16 1 11)) (324 1 (16 10 11)); # need a way to take product of domains 13 325 -1 12 207 -1 12 208 (15 (3 (61 -1 207) 0) (322 (324 (58 -1 207) (208)) (325 (60 -1 207) (208))) (16)); 8 (16 (16 1 10) (16 1 11) (16 2 10) (16 2 11)) (325 (16 1 2) (16 10 11)); # need a way to make counting sets 13 204 -1 12 326 -1 12 327 (15 (50 (326) (327)) (63 (326) (204 (10 (326) 1) (327))) (16)); 8 (16 0 1 2 3 4) (204 0 4); # given an image of a circuit, extract a model. # wire elements are centered on multiples of 8 # individual element... 13 328 -1 12 315 -1 12 329 -1 12 330 -1 12 331 -1 12 332 (15 (314 (315) (332) (331)) (14 333 (314 (315) (10 (332) 4) (331)) -1 14 334 (15 (333) 0 1) -1 14 335 (15 (333) 1 0) -1 14 336 (314 (315) (10 (332) -1 10 (9 4 -1 335) (9 2 -1 334)) (10 (331) -1 11 (9 4 -1 334) (9 2 -1 335))) -1 14 337 (15 (336) 1 (11 0 1)) -1 14 334 (9 (337) (334)) -1 14 335 (9 (337) (335)) -1 14 338 (314 (315) (10 (332) (334)) (11 (331) (335))) -1 (16 (16 (11 (329) (334)) (11 (330) (335)) (10 (329) (334)) (10 (330) (335)) (338)))) (16)); # full circuit... 13 339 -1 12 315 -1 14 131 (34 (319 -1 315) 8) -1 14 39 (34 (320 -1 315) 8) (323 (85 (12 173 -1 14 329 (62 (173) 0) -1 14 330 (62 (173) 1) -1 14 331 (9 8 -1 329) -1 14 332 (9 8 -1 330) -1 328 (315) (329) (330) (331) (332)) (325 (204 1 (11 (39) 1)) (204 1 (11 (131) 1))))); # GATE testing alternate primer based on gates: COS_NOT circuit # This section contains one or more representations of a circuit # constructed using UNLESS gates. Needs elaboration... # graphic representation : IMAGE_SRC=COS_NOT.gif # 13 340 -1 16 (16 0 6 2 6 (43)) (16 2 6 4 6 (43)) (16 4 6 6 6 (43)) (16 6 6 8 6 (43)) (16 8 4 8 6 (43)) (16 8 6 8 8 (44)) (16 8 8 10 8 (44)) (16 10 8 12 8 (44)) (16 12 8 12 6 (44)) (16 12 6 14 6 (44)) (16 14 6 16 6 (44)) (16 16 6 18 6 (44)) (16 18 6 20 6 (44)); 13 341 -1 313 109 169 -1 16 (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:.............................................................:::::.....................................................................................................:) (:..............................................................:::......................................................................................................:) (:...........:...............:...............:...............:...:...........................................:...............:...............:...............:...........:) (:..:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..............................................::..............::..............::..............::..........:) (:..::::::::::::....::::::::::::....::::::::::::....::::::::::::....................................::::::::::::....::::::::::::....::::::::::::....::::::::::::.........:) (:..:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..............................................::..............::..............::..............::..........:) (:...........:...............:...............:...............:...................................:...........:...............:...............:...............:...........:) (:...............................................................:..............................:::......................................................................:) (:...............................................................:.............................:::::.....................................................................:) (:...............................................................:...............................:.......................................................................:) (:...............................................................:...............................:.......................................................................:) (:...............................................................:...............................:.......................................................................:) (:...............................................................:...............................:.......................................................................:) (:...............................................................:...............................:.......................................................................:) (:...............................................................:...............................:.......................................................................:) (:...............................................................:...............................:.......................................................................:) (:.............................................................:::::.............................:.......................................................................:) (:..............................................................:::..............................:.......................................................................:) (:...............................................................:...........:...............:...........................................................................:) (:...........................................................................::..............::..........................................................................:) (:..................................................................::::::::::::....::::::::::::.........................................................................:) (:...........................................................................::..............::..........................................................................:) (:...........................................................................:...............:...........................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::); 8 (340) (339 (341)); # GATE testing alternate primer based on gates: COS_AND circuit # This section contains one or more representations of a circuit # constructed using UNLESS gates. Needs elaboration... # graphic representation : IMAGE_SRC=COS_AND.gif # 13 342 -1 16 (16 0 2 2 2 (43)) (16 0 8 2 8 (43)) (16 2 2 4 2 (43)) (16 2 4 4 4 (43)) (16 2 6 4 6 (43)) (16 2 8 4 8 (43)) (16 4 2 4 4 (43)) (16 4 8 4 6 (43)) (16 4 4 6 4 (44)) (16 4 6 6 6 (44)) (16 6 4 8 4 (44)) (16 6 6 8 6 (44)) (16 8 4 10 4 (44)) (16 8 6 10 6 (44)) (16 10 2 10 4 (43)) (16 10 4 10 6 (43)) (16 10 6 10 8 (43)) (16 10 8 12 8 (43)) (16 12 8 14 8 (43)) (16 14 8 16 8 (43)) (16 16 8 18 8 (43)); 13 343 -1 313 88 153 -1 16 (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:...........:...............:...........................................................................................................................:) (:..:::::::::::.....:::::::::::..........................................................................................................................:) (:..::::::::::::....::::::::::::.........................................................................................................................:) (:..:::::::::::.....:::::::::::..........................................................................................................................:) (:...........:...............:...........................................................................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:.............................:::::...........................................:::::.....................................................................:) (:..............................:::.............................................:::......................................................................:) (:...........................:...:...........:...............:...............:...:.......................................................................:) (:..................:::::::::::..............::..............::..............::..........................................................................:) (:..................::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................................................................:) (:..................:::::::::::..............::..............::..............::..........................................................................:) (:...........................:...............:...............:...............:...........................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:..............................................................................:::......................................................................:) (:.............................................................................:::::.....................................................................:) (:..............................................................................:::......................................................................:) (:...........................:...............:...............:...............:...:.......................................................................:) (:..................:::::::::::..............::..............::..............::..........................................................................:) (:..................::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................................................................:) (:..................:::::::::::..............::..............::..............::..........................................................................:) (:...........................:...:...........:...............:...............:...........................................................................:) (:..............................:::.............................................:::......................................................................:) (:.............................:::::............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::.............................................:::......................................................................:) (:..............................:::............................................:::::.....................................................................:) (:..............................:::.............................................:::......................................................................:) (:...........:...............:...................................................:...........:...............:...............:...............:...........:) (:..:::::::::::.....:::::::::::.....................................................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........:) (:..::::::::::::....::::::::::::....................................................::::::::::::....::::::::::::....::::::::::::....::::::::::::.........:) (:..:::::::::::.....:::::::::::.....................................................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........:) (:...........:...............:...............................................................:...............:...............:...............:...........:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:.......................................................................................................................................................:) (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::); 8 (342) (339 (343)); # GATE testing alternate primer based on gates: COS_OR circuit # This section contains one or more representations of a circuit # constructed using UNLESS gates. Needs elaboration... # graphic representation : IMAGE_SRC=COS_OR.gif # 13 344 -1 16 (16 2 4 4 4 (43)) (16 2 6 4 6 (43)) (16 4 4 6 4 (43)) (16 4 6 6 6 (43)) (16 6 4 8 4 (43)) (16 6 6 8 6 (43)) (16 8 4 10 4 (43)) (16 8 6 10 6 (43)) (16 8 8 10 8 (43)) (16 10 2 10 4 (43)) (16 10 4 10 6 (44)) (16 10 6 10 8 (44)) (16 10 8 12 8 (43)) (16 12 8 14 8 (43)) (16 14 8 16 8 (43)) (16 16 8 18 8 (43)); 13 345 -1 313 93 169 -1 16 (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:..............................................................................:::......................................................................................:) (:.............................................................................:::::.....................................................................................:) (:..............................................................................:::......................................................................................:) (:...........................:...............:...............:...............:...:.......................................................................................:) (:..................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................:) (:..................::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................................................................................:) (:..................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................:) (:...........................:...............:...............:...............:...........................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:.............................................................................:::::.....................................................................................:) (:..............................................................................:::......................................................................................:) (:...........................:...............:...............:...............:...:.......................................................................................:) (:..................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................:) (:..................::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................................................................................:) (:..................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................:) (:...........................:...............:...............:...............:...........................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:...............................................................................:.......................................................................................:) (:.............................................................................:::::.....................................................................................:) (:..............................................................................:::......................................................................................:) (:...........................................................................:...:...........:...............:...............:...............:...........................:) (:..................................................................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................:) (:..................................................................::::::::::::....::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................:) (:..................................................................:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................:) (:...........................................................................:...............:...............:...............:...............:...........................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::); 8 (344) (339 (345)); # GATE testing alternate primer based on gates: COS_NOR circuit # This section contains one or more representations of a circuit # constructed using UNLESS gates. Needs elaboration... # graphic representation : IMAGE_SRC=COS_NOR.gif # 13 346 -1 16 (16 0 6 2 6 (43)) (16 0 8 2 8 (43)) (16 2 6 4 6 (43)) (16 2 8 4 8 (43)) (16 4 6 6 6 (43)) (16 4 8 6 8 (43)) (16 6 6 8 6 (43)) (16 6 8 8 8 (43)) (16 8 4 8 6 (43)) (16 8 6 8 8 (44)) (16 8 8 8 10 (44)) (16 8 10 10 10 (44)) (16 10 10 12 10 (44)) (16 12 10 14 10 (44)) (16 14 10 16 10 (44)) (16 16 10 18 10 (44)) (16 18 10 20 10 (44)); 13 347 -1 313 125 169 -1 16 (:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:..............................................................:::......................................................................................................:) (:.............................................................:::::.....................................................................................................:) (:..............................................................:::......................................................................................................:) (:...........:...............:...............:...............:...:.......................................................................................................:) (:..:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................................:) (:..::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................................................................................................:) (:..:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................................:) (:...........:...............:...............:...............:...........................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:.............................................................:::::.....................................................................................................:) (:..............................................................:::......................................................................................................:) (:...........:...............:...............:...............:...:.......................................................................................................:) (:..:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................................:) (:..::::::::::::....::::::::::::....::::::::::::....::::::::::::.........................................................................................................:) (:..:::::::::::.....:::::::::::.....:::::::::::.....:::::::::::..........................................................................................................:) (:...........:...............:...............:...............:...........................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:...............................................................:.......................................................................................................:) (:.............................................................:::::.....................................................................................................:) (:..............................................................:::......................................................................................................:) (:...............................................................:...........:...............:...............:...............:...............:...............:...........:) (:...........................................................................::..............::..............::..............::..............::..............::..........:) (:..................................................................::::::::::::....::::::::::::....::::::::::::....::::::::::::....::::::::::::....::::::::::::.........:) (:...........................................................................::..............::..............::..............::..............::..............::..........:) (:...........................................................................:...............:...............:...............:...............:...............:...........:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:.......................................................................................................................................................................:) (:...............................................................................................................................................................