user: Please show me the C implementation that matches the assembly code listed below:

```asm
<print_domain>:
  endbr64
  push   %r15
  lea    D739(%rip),%rdi
  lea    D284(%rip),%r15
  push   %r14
  lea    D189(%rip),%r14
  push   %r13
  lea    D258(%rip),%r13
  push   %r12
  lea    D708(%rip),%r12
  push   %rbp
  lea    D297(%rip),%rbp
  push   %rbx
  lea    D426(%rip),%rbx
  sub    $0x8,%rsp
  call   <printf@plt>
  lea    D750(%rip),%rdi
  call   <printf@plt>
  lea    D11(%rip),%rdi
  call   <printf@plt>
  lea    D64(%rip),%rdi
  call   <printf@plt>
  lea    D874(%rip),%rdi
  call   <printf@plt>
  lea    D142(%rip),%rdi
  call   <printf@plt>
  lea    D870(%rip),%rdi
  call   <printf@plt>
  lea    D405(%rip),%rdi
  call   <printf@plt>
  lea    D687(%rip),%rdi
  call   <printf@plt>
  lea    D944(%rip),%rdi
  call   <printf@plt>
  lea    D672(%rip),%rdi
  call   <printf@plt>
  lea    D811(%rip),%rdi
  call   <printf@plt>
  lea    D386(%rip),%rdi
  call   <printf@plt>
  lea    D662(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D455(%rip),%rdi
  call   <printf@plt>
  lea    D591(%rip),%rdi
  call   <printf@plt>
  lea    D839(%rip),%rdi
  call   <printf@plt>
  lea    D438(%rip),%rdi
  call   <printf@plt>
  lea    D254(%rip),%rdi
  call   <printf@plt>
  lea    D317(%rip),%rdi
  call   <printf@plt>
  lea    D965(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D223(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D452(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D515(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D886(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D334(%rip),%rcx
  mov    %rcx,%rdi
  call   <printf@plt>
  lea    D132(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D710(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  lea    D481(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D23(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D721(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D515(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D886(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D334(%rip),%rcx
  mov    %rcx,%rdi
  call   <printf@plt>
  lea    D132(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D710(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  lea    D481(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D209(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D496(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D886(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D515(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  lea    D334(%rip),%rcx
  mov    %rcx,%rdi
  call   <printf@plt>
  lea    D132(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D710(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D481(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D399(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D151(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D886(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  lea    D14(%rip),%r12
  call   <printf@plt>
  lea    D515(%rip),%r10
  mov    %r10,%rdi
  call   <printf@plt>
  lea    D444(%rip),%rdi
  call   <printf@plt>
  lea    D132(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D710(%rip),%r8
  mov    %r8,%rdi
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  lea    D184(%rip),%rbx
  call   <printf@plt>
  lea    D618(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D704(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D616(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  lea    D713(%rip),%r15
  call   <printf@plt>
  mov    %r14,%rdi
  lea    D548(%rip),%r14
  call   <printf@plt>
  lea    D357(%rip),%rdi
  call   <printf@plt>
  lea    D238(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D325(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  lea    D292(%rip),%r13
  call   <printf@plt>
  lea    D80(%rip),%rdi
  call   <printf@plt>
  lea    D770(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D113(%rip),%rdi
  call   <printf@plt>
  lea    D597(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D367(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  lea    D83(%rip),%r12
  call   <printf@plt>
  lea    D9(%rip),%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  lea    D609(%rip),%r13
  call   <printf@plt>
  lea    D769(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D48(%rip),%rdi
  call   <printf@plt>
  lea    D385(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  lea    D634(%rip),%rdi
  call   <printf@plt>
  lea    D626(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D482(%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    D221(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D963(%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    D564(%rip),%rdi
  call   <printf@plt>
  lea    D385(%rip),%rdx
  mov    %rdx,%rdi
  call   <printf@plt>
  lea    D833(%rip),%rdi
  call   <printf@plt>
  lea    D626(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D482(%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    D221(%rip),%r11
  mov    %r11,%rdi
  call   <printf@plt>
  lea    D963(%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    D135(%rip),%rdi
  call   <printf@plt>
  lea    D450(%rip),%rdi
  call   <printf@plt>
  lea    D522(%rip),%rdi
  call   <printf@plt>
  lea    D626(%rip),%r9
  mov    %r9,%rdi
  call   <printf@plt>
  lea    D482(%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    D822(%rip),%rdi
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <printf@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D739
type_infered: string
name: retrieve_data
arguments: data_label: D284
type_infered: string
name: retrieve_data
arguments: data_label: D189
type_infered: string
name: retrieve_data
arguments: data_label: D258
type_infered: string
name: retrieve_data
arguments: data_label: D708
type_infered: string
name: retrieve_data
arguments: data_label: D297
type_infered: string
name: retrieve_data
arguments: data_label: D426
type_infered: string
name: retrieve_data
arguments: data_label: D750
type_infered: string
name: retrieve_data
arguments: data_label: D11
type_infered: string
name: retrieve_data
arguments: data_label: D64
type_infered: string
name: retrieve_data
arguments: data_label: D874
type_infered: string
name: retrieve_data
arguments: data_label: D142
type_infered: string
name: retrieve_data
arguments: data_label: D870
type_infered: string
name: retrieve_data
arguments: data_label: D405
type_infered: string
name: retrieve_data
arguments: data_label: D687
type_infered: string
name: retrieve_data
arguments: data_label: D944
type_infered: string
name: retrieve_data
arguments: data_label: D672
type_infered: string
name: retrieve_data
arguments: data_label: D811
type_infered: string
name: retrieve_data
arguments: data_label: D386
type_infered: string
name: retrieve_data
arguments: data_label: D662
type_infered: string
name: retrieve_data
arguments: data_label: D455
type_infered: string
name: retrieve_data
arguments: data_label: D591
type_infered: string
name: retrieve_data
arguments: data_label: D839
type_infered: string
name: retrieve_data
arguments: data_label: D438
type_infered: string
name: retrieve_data
arguments: data_label: D254
type_infered: string
name: retrieve_data
arguments: data_label: D317
type_infered: string
name: retrieve_data
arguments: data_label: D965
type_infered: string
name: retrieve_data
arguments: data_label: D223
type_infered: string
name: retrieve_data
arguments: data_label: D452
type_infered: string
name: retrieve_data
arguments: data_label: D515
type_infered: string
name: retrieve_data
arguments: data_label: D886
type_infered: string
name: retrieve_data
arguments: data_label: D334
type_infered: string
name: retrieve_data
arguments: data_label: D132
type_infered: string
name: retrieve_data
arguments: data_label: D710
type_infered: string
name: retrieve_data
arguments: data_label: D481
type_infered: string
name: retrieve_data
arguments: data_label: D23
type_infered: string
name: retrieve_data
arguments: data_label: D721
type_infered: string
name: retrieve_data
arguments: data_label: D209
type_infered: string
name: retrieve_data
arguments: data_label: D496
type_infered: string
name: retrieve_data
arguments: data_label: D399
type_infered: string
name: retrieve_data
arguments: data_label: D151
type_infered: string
name: retrieve_data
arguments: data_label: D14
type_infered: string
name: retrieve_data
arguments: data_label: D444
type_infered: string
name: retrieve_data
arguments: data_label: D96
type_infered: string
name: retrieve_data
arguments: data_label: D184
type_infered: string
name: retrieve_data
arguments: data_label: D618
type_infered: string
name: retrieve_data
arguments: data_label: D704
type_infered: string
name: retrieve_data
arguments: data_label: D616
type_infered: string
name: retrieve_data
arguments: data_label: D713
type_infered: string
name: retrieve_data
arguments: data_label: D548
type_infered: string
name: retrieve_data
arguments: data_label: D357
type_infered: string
name: retrieve_data
arguments: data_label: D238
type_infered: string
name: retrieve_data
arguments: data_label: D325
type_infered: string
name: retrieve_data
arguments: data_label: D292
type_infered: string
name: retrieve_data
arguments: data_label: D80
type_infered: string
name: retrieve_data
arguments: data_label: D770
type_infered: string
name: retrieve_data
arguments: data_label: D113
type_infered: string
name: retrieve_data
arguments: data_label: D597
type_infered: string
name: retrieve_data
arguments: data_label: D367
type_infered: string
name: retrieve_data
arguments: data_label: D83
type_infered: string
name: retrieve_data
arguments: data_label: D9
type_infered: string
name: retrieve_data
arguments: data_label: D609
type_infered: string
name: retrieve_data
arguments: data_label: D769
type_infered: string
name: retrieve_data
arguments: data_label: D48
type_infered: string
name: retrieve_data
arguments: data_label: D385
type_infered: string
name: retrieve_data
arguments: data_label: D634
type_infered: string
name: retrieve_data
arguments: data_label: D626
type_infered: string
name: retrieve_data
arguments: data_label: D482
type_infered: string
name: retrieve_data
arguments: data_label: D221
type_infered: string
name: retrieve_data
arguments: data_label: D963
type_infered: string
name: retrieve_data
arguments: data_label: D564
type_infered: string
name: retrieve_data
arguments: data_label: D833
type_infered: string
name: retrieve_data
arguments: data_label: D135
type_infered: string
name: retrieve_data
arguments: data_label: D450
type_infered: string
name: retrieve_data
arguments: data_label: D522
type_infered: string
name: retrieve_data
arguments: data_label: D822
type_infered: string

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


tool: D284:     :effect


tool: D189:       (and (probabilistic


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


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


tool: D297:   )


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


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


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


tool: D64:   (:predicates


tool: D874:     (heading ?d - direction)


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


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


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


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


tool: D944:     (light_color ?c - color)


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


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


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


tool: D662:     (alive)


tool: D455:   (:constants


tool: D591:     left right straight - rotation


tool: D839:     north south east west - direction


tool: D438:     green red unknown - color


tool: D254:     quick normal slow - delay


tool: D317:     north_south none east_west - preference


tool: D965:     short medium long - length


tool: D223:   (:action look_at_light_north


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


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


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


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


tool: D132:            (probabilistic


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


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


tool: D23:   (:action look_at_light_south


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


tool: D209:   (:action look_at_light_east


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


tool: D399:   (:action look_at_light_west


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


tool: D14:                  (probabilistic


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


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


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


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


tool: D704:   (:action look_at_light_none


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


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


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


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


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


tool: D325:   (:action wait_on_light


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


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


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


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


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


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


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


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


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


tool: D769:             )


tool: D48:   (:action proceed-right


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


tool: D634:     :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: D626:     :effect (and (not (light_color green))


tool: D482:                  (light_color unknown)


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


tool: D963:                  (heading ?new-heading)


tool: D564:   (:action proceed-left


tool: D833:     :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: D135:   (:action proceed-straight


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


tool: D522:     :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: D822: )


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");
}
```