user: Demonstrate the C code that generates the assembly output below:

```asm
<print_domain>:
  endbr64
  push   %r15
  lea    D626(%rip),%rdi
  lea    D745(%rip),%r15
  push   %r14
  lea    D285(%rip),%r14
  push   %r13
  lea    D892(%rip),%r13
  push   %r12
  lea    D711(%rip),%r12
  push   %rbp
  lea    D940(%rip),%rbp
  push   %rbx
  lea    D380(%rip),%rbx
  sub    $0x8,%rsp
  call   <printf@plt>
  lea    D38(%rip),%rdi
  call   <printf@plt>
  lea    D836(%rip),%rdi
  call   <printf@plt>
  lea    D597(%rip),%rdi
  call   <printf@plt>
  lea    D192(%rip),%rdi
  call   <printf@plt>
  lea    D902(%rip),%rdi
  call   <printf@plt>
  lea    D429(%rip),%rdi
  call   <printf@plt>
  lea    D804(%rip),%rdi
  call   <printf@plt>
  lea    D672(%rip),%rdi
  call   <printf@plt>
  lea    D509(%rip),%rdi
  call   <printf@plt>
  lea    D415(%rip),%rdi
  call   <printf@plt>
  lea    D869(%rip),%rdi
  call   <printf@plt>
  lea    D782(%rip),%rdi
  call   <printf@plt>
  lea    D377(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D538(%rip),%rdi
  call   <printf@plt>
  lea    D411(%rip),%rdi
  call   <printf@plt>
  lea    D105(%rip),%rdi
  call   <printf@plt>
  lea    D931(%rip),%rdi
  call   <printf@plt>
  lea    D16(%rip),%rdi
  call   <printf@plt>
  lea    D549(%rip),%rdi
  call   <printf@plt>
  lea    D598(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D915(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D376(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D407(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D935(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D933(%rip),%rcx
  mov    %rcx,%rdi
  call   <printf@plt>
  lea    D799(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D317(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  lea    D809(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D764(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D154(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D407(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D935(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D933(%rip),%rcx
  mov    %rcx,%rdi
  call   <printf@plt>
  lea    D799(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D317(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  lea    D809(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D901(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D912(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D935(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D407(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  lea    D933(%rip),%rcx
  mov    %rcx,%rdi
  call   <printf@plt>
  lea    D799(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D317(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D809(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D175(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D37(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D935(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  lea    D517(%rip),%r12
  call   <printf@plt>
  lea    D407(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  lea    D400(%rip),%rdi
  call   <printf@plt>
  lea    D799(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D317(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  lea    D882(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  lea    D451(%rip),%rbx
  call   <printf@plt>
  lea    D217(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D485(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D900(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  lea    D41(%rip),%r15
  call   <printf@plt>
  mov    %r14,%rdi
  lea    D983(%rip),%r14
  call   <printf@plt>
  lea    D834(%rip),%rdi
  call   <printf@plt>
  lea    D176(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D463(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  lea    D726(%rip),%r13
  call   <printf@plt>
  lea    D394(%rip),%rdi
  call   <printf@plt>
  lea    D514(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D284(%rip),%rdi
  call   <printf@plt>
  lea    D753(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D919(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  lea    D620(%rip),%r12
  call   <printf@plt>
  lea    D402(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  lea    D220(%rip),%r13
  call   <printf@plt>
  lea    D863(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D31(%rip),%rdi
  call   <printf@plt>
  lea    D114(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  lea    D149(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D426(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D710(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D440(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D691(%rip),%rdi
  call   <printf@plt>
  lea    D114(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  lea    D6(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D426(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D710(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D440(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D443(%rip),%rdi
  call   <printf@plt>
  lea    D968(%rip),%rdi
  call   <printf@plt>
  lea    D768(%rip),%rdi
  call   <printf@plt>
  lea    D49(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D426(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  lea    D267(%rip),%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <printf@plt>
```

tool_calls: name: disassemble_data
arguments: label: D626
datatype: string
name: disassemble_data
arguments: label: D745
datatype: string
name: disassemble_data
arguments: label: D285
datatype: string
name: disassemble_data
arguments: label: D892
datatype: string
name: disassemble_data
arguments: label: D711
datatype: string
name: disassemble_data
arguments: label: D940
datatype: string
name: disassemble_data
arguments: label: D380
datatype: string
name: disassemble_data
arguments: label: D38
datatype: string
name: disassemble_data
arguments: label: D836
datatype: string
name: disassemble_data
arguments: label: D597
datatype: string
name: disassemble_data
arguments: label: D192
datatype: string
name: disassemble_data
arguments: label: D902
datatype: string
name: disassemble_data
arguments: label: D429
datatype: string
name: disassemble_data
arguments: label: D804
datatype: string
name: disassemble_data
arguments: label: D672
datatype: string
name: disassemble_data
arguments: label: D509
datatype: string
name: disassemble_data
arguments: label: D415
datatype: string
name: disassemble_data
arguments: label: D869
datatype: string
name: disassemble_data
arguments: label: D782
datatype: string
name: disassemble_data
arguments: label: D377
datatype: string
name: disassemble_data
arguments: label: D538
datatype: string
name: disassemble_data
arguments: label: D411
datatype: string
name: disassemble_data
arguments: label: D105
datatype: string
name: disassemble_data
arguments: label: D931
datatype: string
name: disassemble_data
arguments: label: D16
datatype: string
name: disassemble_data
arguments: label: D549
datatype: string
name: disassemble_data
arguments: label: D598
datatype: string
name: disassemble_data
arguments: label: D915
datatype: string
name: disassemble_data
arguments: label: D376
datatype: string
name: disassemble_data
arguments: label: D407
datatype: string
name: disassemble_data
arguments: label: D935
datatype: string
name: disassemble_data
arguments: label: D933
datatype: string
name: disassemble_data
arguments: label: D799
datatype: string
name: disassemble_data
arguments: label: D317
datatype: string
name: disassemble_data
arguments: label: D809
datatype: string
name: disassemble_data
arguments: label: D764
datatype: string
name: disassemble_data
arguments: label: D154
datatype: string
name: disassemble_data
arguments: label: D901
datatype: string
name: disassemble_data
arguments: label: D912
datatype: string
name: disassemble_data
arguments: label: D175
datatype: string
name: disassemble_data
arguments: label: D37
datatype: string
name: disassemble_data
arguments: label: D517
datatype: string
name: disassemble_data
arguments: label: D400
datatype: string
name: disassemble_data
arguments: label: D882
datatype: string
name: disassemble_data
arguments: label: D451
datatype: string
name: disassemble_data
arguments: label: D217
datatype: string
name: disassemble_data
arguments: label: D485
datatype: string
name: disassemble_data
arguments: label: D900
datatype: string
name: disassemble_data
arguments: label: D41
datatype: string
name: disassemble_data
arguments: label: D983
datatype: string
name: disassemble_data
arguments: label: D834
datatype: string
name: disassemble_data
arguments: label: D176
datatype: string
name: disassemble_data
arguments: label: D463
datatype: string
name: disassemble_data
arguments: label: D726
datatype: string
name: disassemble_data
arguments: label: D394
datatype: string
name: disassemble_data
arguments: label: D514
datatype: string
name: disassemble_data
arguments: label: D284
datatype: string
name: disassemble_data
arguments: label: D753
datatype: string
name: disassemble_data
arguments: label: D919
datatype: string
name: disassemble_data
arguments: label: D620
datatype: string
name: disassemble_data
arguments: label: D402
datatype: string
name: disassemble_data
arguments: label: D220
datatype: string
name: disassemble_data
arguments: label: D863
datatype: string
name: disassemble_data
arguments: label: D31
datatype: string
name: disassemble_data
arguments: label: D114
datatype: string
name: disassemble_data
arguments: label: D149
datatype: string
name: disassemble_data
arguments: label: D49
datatype: string
name: disassemble_data
arguments: label: D426
datatype: string
name: disassemble_data
arguments: label: D710
datatype: string
name: disassemble_data
arguments: label: D440
datatype: string
name: disassemble_data
arguments: label: D691
datatype: string
name: disassemble_data
arguments: label: D6
datatype: string
name: disassemble_data
arguments: label: D443
datatype: string
name: disassemble_data
arguments: label: D968
datatype: string
name: disassemble_data
arguments: label: D768
datatype: string
name: disassemble_data
arguments: label: D267
datatype: string

tool: D626: (define (domain drive-unrolled)


tool: D745:     :effect


tool: D285:       (and (probabilistic


tool: D892:     :parameters (?x - coord ?y - coord)


tool: D711:                     (and (not (light_color unknown)) (light_color green)))


tool: D940:   )


tool: D380:              1/10 (when (light_preference ?x ?y east_west)


tool: D38:   (:requirements :typing :probabilistic-effects :conditional-effects :equality)


tool: D836:   (:types coord direction color delay preference length rotation)


tool: D597:   (:predicates


tool: D192:     (heading ?d - direction)


tool: D902:     (clockwise ?d1 ?d2 - direction)


tool: D429:     (at ?x - coord ?y - coord)


tool: D804:     (nextx ?a - coord ?b - coord ?h - direction)


tool: D672:     (nexty ?a - coord ?b - coord ?h - direction)


tool: D509:     (light_color ?c - color)


tool: D415:     (light_delay ?x ?y - coord ?d - delay)


tool: D869:     (light_preference ?x ?y - coord ?p - preference)


tool: D782:     (road-length ?start-x ?start-y ?end-x ?end-y - coord ?l - length)


tool: D377:     (alive)


tool: D538:   (:constants


tool: D411:     left right straight - rotation


tool: D105:     north south east west - direction


tool: D931:     green red unknown - color


tool: D16:     quick normal slow - delay


tool: D549:     north_south none east_west - preference


tool: D598:     short medium long - length


tool: D915:   (:action look_at_light_north


tool: D376:     :precondition (and (light_color unknown) (at ?x ?y) (heading north))


tool: D407:              9/10 (when (light_preference ?x ?y north_south)


tool: D935:              1/10 (when (light_preference ?x ?y north_south)


tool: D933:                     (and (not (light_color unknown)) (light_color red))))


tool: D799:            (probabilistic


tool: D317:              9/10 (when (light_preference ?x ?y east_west)


tool: D809:                     (and (not (light_color unknown)) (light_color red)))))


tool: D764:   (:action look_at_light_south


tool: D154:     :precondition (and (light_color unknown) (at ?x ?y) (heading south))


tool: D901:   (:action look_at_light_east


tool: D912:     :precondition (and (light_color unknown) (at ?x ?y) (heading east))


tool: D175:   (:action look_at_light_west


tool: D37:     :precondition (and (light_color unknown) (at ?x ?y) (heading west))


tool: D517:                  (probabilistic


tool: D400:                     (and (not (light_color unknown))(light_color red))))


tool: D882:                     (and (not (light_color unknown))(light_color green)))


tool: D451:                  (probabilistic 1/50 (when (= ?length short) (not (alive))))


tool: D217:                     (and (not (light_color unknown))(light_color red)))))


tool: D485:   (:action look_at_light_none


tool: D900:     :precondition (and (light_color unknown) (at ?x ?y) (light_preference ?x ?y none))


tool: D41:                  (probabilistic 1/20 (when (= ?length medium) (not (alive))))


tool: D983:                  (probabilistic 1/10 (when (= ?length long) (not (alive))))


tool: D834:              1/2 (and (not (light_color unknown)) (light_color green))


tool: D176:              1/2 (and (not (light_color unknown)) (light_color red))))


tool: D463:   (:action wait_on_light


tool: D726:                          (and (not (light_color red))(light_color green))))


tool: D394:     :precondition (and (light_color red) (at ?x ?y))


tool: D514:     :effect (and (probabilistic 1/100 (not (alive)))


tool: D284:                    1/2 (when (light_delay ?x ?y quick)


tool: D753:                          (and (not (light_color red)) (light_color green))))


tool: D919:                    1/5 (when (light_delay ?x ?y normal)


tool: D620:                  (at ?new-x ?new-y))


tool: D402:                    1/10 (when (light_delay ?x ?y slow)


tool: D220:                  (not (at ?x ?y))


tool: D863:             )


tool: D31:   (:action proceed-right


tool: D114:     :parameters (?x ?y ?new-x ?new-y - coord ?old-heading ?new-heading - direction ?length - length)


tool: D149:     :precondition (and (light_color green) (at ?x ?y) (heading ?old-heading) (clockwise ?old-heading ?new-heading) (nextx ?x ?new-x ?new-heading) (nexty ?y ?new-y ?new-heading) (road-length ?x ?y ?new-x ?new-y ?length))


tool: D49:     :effect (and (not (light_color green))


tool: D426:                  (light_color unknown)


tool: D710:                  (not (heading ?old-heading))


tool: D440:                  (heading ?new-heading)


tool: D691:   (:action proceed-left


tool: D6:     :precondition (and (light_color green) (at ?x ?y) (heading ?old-heading) (clockwise ?new-heading ?old-heading) (nextx ?x ?new-x ?new-heading) (nexty ?y ?new-y ?new-heading) (road-length ?x ?y ?new-x ?new-y ?length))


tool: D443:   (:action proceed-straight


tool: D968:     :parameters (?x ?y ?new-x ?new-y - coord ?heading - direction ?length - length)


tool: D768:     :precondition (and (light_color green) (at ?x ?y) (heading ?heading) (nextx ?x ?new-x ?heading) (nexty ?y ?new-y ?heading) (road-length ?x ?y ?new-x ?new-y ?length))


tool: D267: )


assistant: ```c
void print_domain() {
  printf("(define (domain drive-unrolled)\n");
  printf("  (:requirements :typing :probabilistic-effects :conditional-effects :equality)\n");
  printf("  (:types coord direction color delay preference length rotation)\n");
  printf("  (:predicates\n");
  printf("    (heading ?d - direction)\n");
  printf("    (clockwise ?d1 ?d2 - direction)\n");
  printf("    (at ?x - coord ?y - coord)\n");
  printf("    (nextx ?a - coord ?b - coord ?h - direction)\n");
  printf("    (nexty ?a - coord ?b - coord ?h - direction)\n");
  printf("    (light_color ?c - color)\n");
  printf("    (light_delay ?x ?y - coord ?d - delay)\n");
  printf("    (light_preference ?x ?y - coord ?p - preference)\n");
  printf("    (road-length ?start-x ?start-y ?end-x ?end-y - coord ?l - length)\n");
  printf("    (alive)\n");
  printf("  )\n");
  printf("  (:constants\n");
  printf("    left right straight - rotation\n");
  printf("    north south east west - direction\n");
  printf("    green red unknown - color\n");
  printf("    quick normal slow - delay\n");
  printf("    north_south none east_west - preference\n");
  printf("    short medium long - length\n");
  printf("  )\n");
  printf("  (:action look_at_light_north\n");
  printf("    :parameters (?x - coord ?y - coord)\n");
  printf("    :precondition (and (light_color unknown) (at ?x ?y) (heading north))\n");
  printf("    :effect\n");
  printf("      (and (probabilistic\n");
  printf("             9/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             1/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color red))))\n");
  printf("           (probabilistic\n");
  printf("             1/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             9/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown)) (light_color red)))))\n");
  printf("  )\n");
  printf("  (:action look_at_light_south\n");
  printf("    :parameters (?x - coord ?y - coord)\n");
  printf("    :precondition (and (light_color unknown) (at ?x ?y) (heading south))\n");
  printf("    :effect\n");
  printf("      (and (probabilistic\n");
  printf("             9/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             1/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color red))))\n");
  printf("           (probabilistic\n");
  printf("             1/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             9/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown)) (light_color red)))))\n");
  printf("  )\n");
  printf("  (:action look_at_light_east\n");
  printf("    :parameters (?x - coord ?y - coord)\n");
  printf("    :precondition (and (light_color unknown) (at ?x ?y) (heading east))\n");
  printf("    :effect\n");
  printf("      (and (probabilistic\n");
  printf("             1/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             9/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color red))))\n");
  printf("           (probabilistic\n");
  printf("             9/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             1/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown)) (light_color red)))))\n");
  printf("  )\n");
  printf("  (:action look_at_light_west\n");
  printf("    :parameters (?x - coord ?y - coord)\n");
  printf("    :precondition (and (light_color unknown) (at ?x ?y) (heading west))\n");
  printf("    :effect\n");
  printf("      (and (probabilistic\n");
  printf("             1/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown)) (light_color green)))\n");
  printf("             9/10 (when (light_preference ?x ?y north_south)\n");
  printf("                    (and (not (light_color unknown))(light_color red))))\n");
  printf("           (probabilistic\n");
  printf("             9/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown))(light_color green)))\n");
  printf("             1/10 (when (light_preference ?x ?y east_west)\n");
  printf("                    (and (not (light_color unknown))(light_color red)))))\n");
  printf("  )\n");
  printf("  (:action look_at_light_none\n");
  printf("    :parameters (?x - coord ?y - coord)\n");
  printf("    :precondition (and (light_color unknown) (at ?x ?y) (light_preference ?x ?y none))\n");
  printf("    :effect\n");
  printf("      (and (probabilistic\n");
  printf("             1/2 (and (not (light_color unknown)) (light_color green))\n");
  printf("             1/2 (and (not (light_color unknown)) (light_color red))))\n");
  printf("  )\n");
  printf("  (:action wait_on_light\n");
  printf("    :parameters (?x - coord ?y - coord)\n");
  printf("    :precondition (and (light_color red) (at ?x ?y))\n");
  printf("    :effect (and (probabilistic 1/100 (not (alive)))\n");
  printf("                 (probabilistic\n");
  printf("                   1/2 (when (light_delay ?x ?y quick)\n");
  printf("                         (and (not (light_color red)) (light_color green))))\n");
  printf("                 (probabilistic\n");
  printf("                   1/5 (when (light_delay ?x ?y normal)\n");
  printf("                         (and (not (light_color red))(light_color green))))\n");
  printf("                 (probabilistic\n");
  printf("                   1/10 (when (light_delay ?x ?y slow)\n");
  printf("                         (and (not (light_color red))(light_color green))))\n");
  printf("            )\n");
  printf("  )\n");
  printf("  (:action proceed-right\n");
  printf("    :parameters (?x ?y ?new-x ?new-y - coord ?old-heading ?new-heading - direction ?length - length)\n");
  printf("    :precondition (and (light_color green) (at ?x ?y) (heading ?old-heading) (clockwise ?old-heading ?new-heading) (nextx ?x ?new-x ?new-heading) (nexty ?y ?new-y ?new-heading) (road-length ?x ?y ?new-x ?new-y ?length))\n");
  printf("    :effect (and (not (light_color green))\n");
  printf("                 (light_color unknown)\n");
  printf("                 (probabilistic 1/50 (when (= ?length short) (not (alive))))\n");
  printf("                 (probabilistic 1/20 (when (= ?length medium) (not (alive))))\n");
  printf("                 (probabilistic 1/10 (when (= ?length long) (not (alive))))\n");
  printf("                 (not (heading ?old-heading))\n");
  printf("                 (heading ?new-heading)\n");
  printf("                 (not (at ?x ?y))\n");
  printf("                 (at ?new-x ?new-y))\n");
  printf("  )\n");
  printf("  (:action proceed-left\n");
  printf("    :parameters (?x ?y ?new-x ?new-y - coord ?old-heading ?new-heading - direction ?length - length)\n");
  printf("    :precondition (and (light_color green) (at ?x ?y) (heading ?old-heading) (clockwise ?new-heading ?old-heading) (nextx ?x ?new-x ?new-heading) (nexty ?y ?new-y ?new-heading) (road-length ?x ?y ?new-x ?new-y ?length))\n");
  printf("    :effect (and (not (light_color green))\n");
  printf("                 (light_color unknown)\n");
  printf("                 (probabilistic 1/50 (when (= ?length short) (not (alive))))\n");
  printf("                 (probabilistic 1/20 (when (= ?length medium) (not (alive))))\n");
  printf("                 (probabilistic 1/10 (when (= ?length long) (not (alive))))\n");
  printf("                 (not (heading ?old-heading))\n");
  printf("                 (heading ?new-heading)\n");
  printf("                 (not (at ?x ?y))\n");
  printf("                 (at ?new-x ?new-y))\n");
  printf("  )\n");
  printf("  (:action proceed-straight\n");
  printf("    :parameters (?x ?y ?new-x ?new-y - coord ?heading - direction ?length - length)\n");
  printf("    :precondition (and (light_color green) (at ?x ?y) (heading ?heading) (nextx ?x ?new-x ?heading) (nexty ?y ?new-y ?heading) (road-length ?x ?y ?new-x ?new-y ?length))\n");
  printf("    :effect (and (not (light_color green))\n");
  printf("                 (light_color unknown)\n");
  printf("                 (probabilistic 1/50 (when (= ?length short) (not (alive))))\n");
  printf("                 (probabilistic 1/20 (when (= ?length medium) (not (alive))))\n");
  printf("                 (probabilistic 1/10 (when (= ?length long) (not (alive))))\n");
  printf("                 (not (at ?x ?y))\n");
  printf("                 (at ?new-x ?new-y))\n");
  printf("  )\n");
  printf(")\n");
}
```