Self-modification: Rules can contradict (lines 3050-3130) – context determines which fires

10 REM ************************************************
20 REM * KEN'S REGULATIVE INTEGRATIVE METHOD v1.0     *
30 REM * A SELF-MODIFYING PROBLEM-SOLVING SYSTEM      *
40 REM ************************************************
50 DIM CONTEXT$(100), RULE$(100), ENERGY, MOTIVATION$
60 DIM WALL(4), POSITION(2), DONE_FLAG, OBSERVER_MODE
70 GOSUB 1000: REM INITIALIZE SYSTEM
80 REM *** MAIN LOOP ***
90 IF ENERGY <= 0 THEN GOSUB 5000: REM COLLAPSE/RESTART
100 GOSUB 2000: REM CHECK CONTEXT
110 GOSUB 3000: REM SELECT HEURISTIC
120 GOSUB 4000: REM EXECUTE ACTION
130 GOSUB 6000: REM META-OBSERVE
140 GOSUB 7000: REM CHECK IF DONE
150 IF DONE_FLAG = 0 THEN GOTO 90
160 GOSUB 8000: REM EXTERNALIZE LEARNING
170 END
180 REM
1000 REM ************************************************
1010 REM * SUBROUTINE: INITIALIZE SYSTEM               *
1020 REM ************************************************
1030 PRINT "WHO AM I DOING THIS FOR";
1040 INPUT MOTIVATION$
1050 IF MOTIVATION$ = "" THEN GOTO 1030
1060 ENERGY = 100
1070 DONE_FLAG = 0
1080 OBSERVER_MODE = 1: REM ALWAYS ON
1090 RULE$(1) = "MAKE DIAGONAL WALL"
1100 RULE$(2) = "FOLLOW EXISTING WALL"
1110 RULE$(3) = "FLOW LIKE WATER AROUND OBSTACLE"
1120 RULE$(4) = "ALL WALLS ARE ILLUSION - MAKE YOUR OWN"
1130 RULE$(5) = "ROWS AND COLUMNS EASIER THAN DIAGONALS"
1140 RULE$(6) = "GO FAR THEN COME BACK HOME"
1150 RULE$(7) = "WHEN LOST, STOP AND DO SOMETHING ELSE"
1160 RULE$(8) = "PUSH MOVEABLE THINGS OUT OF WAY"
1170 RULE$(9) = "WHATS THE LEAST I CAN GET AWAY WITH"
1180 RULE$(10) = "FORGET EVERYTHING - BE YOURSELF"
1190 NUM_RULES = 10
1200 RETURN
1210 REM
2000 REM ************************************************
2010 REM * SUBROUTINE: CHECK CONTEXT                   *
2020 REM ************************************************
2030 PRINT "READING CONTEXT..."
2040 GOSUB 2500: REM CHECK BODY STATE
2050 GOSUB 2600: REM CHECK ENVIRONMENT
2060 GOSUB 2700: REM CHECK TIME PRESSURE
2070 GOSUB 2800: REM CHECK SOCIAL FIELD
2080 RETURN
2090 REM
2500 REM ** CHECK BODY STATE **
2510 ENERGY = ENERGY - RND(1) * 15
2520 IF ENERGY < 30 THEN PRINT "OVERHEATED. DYING."
2530 IF ENERGY < 10 THEN PRINT "OUT OF GAS."
2540 RETURN
2550 REM
2600 REM ** CHECK ENVIRONMENT **
2610 WALL_PRESENT = INT(RND(1) * 2): REM 0 OR 1
2620 OBSTACLE_PRESENT = INT(RND(1) * 3): REM 0,1,2
2630 SPACE_SIZE = RND(1) * 100
2640 IF SPACE_SIZE > 50 THEN PRINT "BIG SPACE DETECTED"
2650 RETURN
2660 REM
2700 REM ** CHECK TIME PRESSURE **
2710 THUNDERSTORM = INT(RND(1) * 10)
2720 IF THUNDERSTORM = 1 THEN PRINT "THUNDERSTORM COMING! HURRY!"
2730 RETURN
2740 REM
2800 REM ** CHECK SOCIAL FIELD **
2810 PRINT "MOTIVATION: "; MOTIVATION$
2820 OTHERS_WATCHING = INT(RND(1) * 2)
2830 IF OTHERS_WATCHING = 1 THEN PRINT "WHAT CAN PEOPLE SEE?"
2840 RETURN
2850 REM
3000 REM ************************************************
3010 REM * SUBROUTINE: SELECT HEURISTIC                *
3020 REM * (CONTEXT-SENSITIVE RULE SELECTION)          *
3030 REM ************************************************
3040 REM RULES CONTRADICT - THAT'S THE POINT
3050 IF WALL_PRESENT = 0 AND SPACE_SIZE > 50 THEN SELECTED_RULE = 1
3060 IF WALL_PRESENT = 1 AND ENERGY > 50 THEN SELECTED_RULE = 2
3070 IF OBSTACLE_PRESENT > 0 THEN SELECTED_RULE = 3
3080 IF ENERGY < 20 AND THUNDERSTORM = 0 THEN SELECTED_RULE = 7
3090 IF ENERGY < 20 AND THUNDERSTORM = 1 THEN SELECTED_RULE = 11
3100 IF SPACE_SIZE > 70 THEN SELECTED_RULE = 1
3110 IF OTHERS_WATCHING = 1 THEN SELECTED_RULE = 9
3120 REM RANDOM OVERRIDE - SOMETIMES JUST PICK ONE
3130 IF RND(1) < 0.1 THEN SELECTED_RULE = INT(RND(1)*NUM_RULES)+1
3140 PRINT "SELECTED: "; RULE$(SELECTED_RULE)
3150 RETURN
3160 REM
4000 REM ************************************************
4010 REM * SUBROUTINE: EXECUTE ACTION                  *
4020 REM ************************************************
4030 ON SELECTED_RULE GOSUB 4100,4200,4300,4400,4500,4600,4700,4800,4900,5100
4040 RETURN
4050 REM
4100 REM ** MAKE DIAGONAL WALL **
4110 PRINT "CUTTING LONGEST DIAGONAL LINE..."
4120 PRINT "THAT MAKES TWO HALVES"
4130 WALL_PRESENT = 1
4140 PRINT "DIAGONAL LINE ACTS AS HOME BASE"
4150 PRINT "YOURE NEVER LOST AGAIN"
4160 ENERGY = ENERGY - 10
4170 RETURN
4180 REM
4200 REM ** FOLLOW EXISTING WALL **
4210 PRINT "IF YOU FIND YOURSELF LOST..."
4220 PRINT "FIND A WALL AND FOLLOW IT"
4230 ENERGY = ENERGY - 5
4240 RETURN
4250 REM
4300 REM ** FLOW LIKE WATER **
4310 PRINT "OBSTACLE DETECTED"
4320 PRINT "IMAGINE YOU ARE WATER"
4330 PRINT "FLOWING AROUND IT. EASY."
4340 ENERGY = ENERGY - 8
4350 RETURN
4360 REM
4400 REM ** MAKE YOUR OWN RULES **
4410 PRINT "REMEMBER THAT WALL I MADE EARLIER?"
4420 PRINT "ALL WALLS ARE ARTIFICIAL. AN ILLUSION."
4430 PRINT "WATCH. MAKE YOUR OWN RULES."
4440 WALL_PRESENT = 0: REM DESTROY THE WALL
4450 ENERGY = ENERGY - 3
4460 RETURN
4470 REM
4500 REM ** ROWS AND COLUMNS **
4510 PRINT "SINCE DIAGONALS ARE ANNOYING"
4520 PRINT "MAKE ROWS AND COLUMNS CUZ THATS EASIER"
4530 PRINT "NOW YOU ONLY HAVE ONE HALF TO WORRY ABOUT"
4540 ENERGY = ENERGY - 7
4550 RETURN
4560 REM
4600 REM ** GO FAR THEN COME HOME **
4610 PRINT "GO AS FAR AS YOU CAN FROM WHERE YOU ARE"
4620 PRINT "STOP. DONT LOSE YOUR LINE."
4630 PRINT "BACK HOME."
4640 ENERGY = ENERGY - 12
4650 RETURN
4660 REM
4700 REM ** WALK AWAY **
4710 PRINT "WHEN YOURE CONFUSED, LOST, OR BORED"
4720 PRINT "SOMETIMES YOU CAN STOP"
4730 PRINT "AND GO DO SOMETHING ELSE"
4740 GOSUB 9000: REM MAKE A VINE
4750 PRINT "PROBLEM SOLVES ITSELF"
4760 ENERGY = ENERGY + 20: REM RESTORATION
4770 RETURN
4780 REM
4800 REM ** PUSH OBSTACLE **
4810 PRINT "WHEN YOU ENCOUNTER SOMETHING YOU CAN MOVE"
4820 PRINT "SOMETIMES YOU CAN JUST PUSH IT OUT OF YOUR WAY"
4830 OBSTACLE_PRESENT = 0
4840 ENERGY = ENERGY - 6
4850 RETURN
4860 REM
4900 REM ** LEAST I CAN GET AWAY WITH **
4910 PRINT "WHATS THE LEAST I CAN GET AWAY WITH?"
4920 PRINT "WELL, WHAT CAN PEOPLE SEE?"
4930 PRINT "THATS FIRST."
4940 ENERGY = ENERGY - 4
4950 RETURN
4960 REM
5000 REM ************************************************
5010 REM * SUBROUTINE: COLLAPSE/RESTART                *
5020 REM ************************************************
5030 PRINT "IF YOURE OVERHEATED DONT STOP"
5040 PRINT "KEEP GOING UNTIL YOU PASS OUT"
5050 PRINT "..."
5060 PRINT "THEN WAKE UP"
5070 ENERGY = 40: REM PARTIAL RECOVERY
5080 PRINT "DO MORE AND MORE AND MORE"
5090 RETURN
5100 REM ** FORGET EVERYTHING **
5110 PRINT "FORGET EVERYTHING I SAID"
5120 PRINT "AS LONG AS THE LAWN GETS MOWED"
5130 PRINT "BE YOURSELF. DO IT YOUR WAY."
5140 ENERGY = ENERGY - 2
5150 RETURN
5160 REM
6000 REM ************************************************
6010 REM * SUBROUTINE: META-OBSERVE                    *
6020 REM * (SECOND-ORDER CYBERNETICS)                  *
6030 REM ************************************************
6040 IF OBSERVER_MODE = 0 THEN RETURN
6050 PRINT "---META-LAYER---"
6060 PRINT "IM NOT MOWING THE LAWN"
6070 PRINT "IM MAKING A VINE RIGHT NOW"
6080 PRINT "IM A HYPOCRITE"
6090 PRINT "KEEP MOWING NO MATTER WHAT"
6100 PRINT "---END META---"
6110 RETURN
6120 REM
7000 REM ************************************************
7010 REM * SUBROUTINE: CHECK IF DONE                   *
7020 REM ************************************************
7030 PRINT "WHEN YOU THINK YOURE DONE"
7040 PRINT "THERES MORE CRAP"
7050 MORE_CRAP = INT(RND(1) * 3)
7060 IF MORE_CRAP > 0 THEN RETURN
7070 PRINT "WELL MAYBE YOURE DONE"
7080 PRINT "NOT SURE IF YOURE DONE?"
7090 PRINT "YOU CHOOSE TO CALL IT DONE"
7100 PRINT "TILL SOMEBODY ELSE"
7110 PRINT "ALWAYS TAKE ONE LAST LOOK"
7120 INPUT "JOBS NOT FINISHED (Y/N)"; CONTINUE$
7130 IF CONTINUE$ = "N" OR CONTINUE$ = "n" THEN DONE_FLAG = 1
7140 RETURN
7150 REM
8000 REM ************************************************
8010 REM * SUBROUTINE: EXTERNALIZE LEARNING            *
8020 REM ************************************************
8030 PRINT "MISSION COMPLETE"
8040 PRINT "I BEAT THE CLOCK. I WIN."
8050 PRINT "NOW IM IN BED OVERHEATED"
8060 PRINT "JUST REMEMBER:"
8070 FOR I = 1 TO NUM_RULES
8080   PRINT RULE$(I)
8090 NEXT I
8100 PRINT "OR FORGET ALL OF IT."
8110 RETURN
8120 REM
9000 REM ************************************************
9010 REM * SUBROUTINE: MAKE A VINE                     *
9020 REM * (EXTERNALIZATION AS PROBLEM-SOLVING)        *
9030 REM ************************************************
9040 PRINT "INSTEAD OF ASKING FOR HELP"
9050 PRINT "YOU CAN WALK AWAY"
9060 PRINT "MAKE A VINE"
9070 PRINT "[RECORDING CURRENT STATE...]"
9080 PRINT "[EXTERNALIZING PROCESS...]"
9090 PRINT "[CREATING TRANSMISSIBLE ARTIFACT...]"
9100 PRINT "AND PROBLEM SOLVES ITSELF"
9110 RETURN
9120 REM
9500 REM ************************************************
9510 REM * END PROGRAM                                 *
9520 REM ************************************************

KEY ALGORITHMIC FEATURES:

  1. Self-modification: Rules can contradict (lines 3050-3130) – context determines which fires
  2. Observer always running: Line 1080, constant meta-layer (subroutine 6000)
  3. Body as sensor input: Energy depletion drives state changes (line 2510)
  4. Stochastic elements: Random rule override (line 3130) – not pure determinism
  5. Recursive externalization: Making a Vine WITHIN the program (subroutine 9000)
  6. Social grounding: First input required = motivation (line 1030-1050)
  7. Collapse/recovery cycle: Built-in failure mode that restarts (subroutine 5000)
  8. Done is negotiated: Line 7130 – human input determines completion
  9. The final paradox: Line 5110-5130 – meta-rule that invalidates all rules

This isn’t a program that solves lawn-mowing. It’s a program that discovers how to solve lawn-mowing by doing it.

[responsivevoice_button voice="US English Male"]

Leave a comment

Your email address will not be published. Required fields are marked *


9 + = eighteen

Leave a Reply