user: What would the C source look like for the assembly code provided here:

```asm
<print_domain>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  lea    D156(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D970(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D579(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D884(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1362(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1248(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D947(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D356(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1265(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D504(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D554(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1183(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1437(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1401(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D565(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1070(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D835(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1297(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D966(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D842(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D348(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D616(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D568(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D758(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D486(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D268(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D957(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D771(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D668(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1096(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D348(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D616(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D568(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D758(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D486(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D268(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D957(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D771(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1288(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D593(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D348(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D568(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D616(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D758(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D486(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D957(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D268(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D771(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D457(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D348(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D568(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D795(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D616(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1060(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D486(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D957(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D170(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D268(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D942(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D741(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D719(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D348(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D353(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D501(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D951(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D685(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1152(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D870(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1365(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1144(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1052(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D497(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1144(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1065(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1351(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1144(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1233(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1351(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D596(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D773(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1038(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D301(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D778(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D209(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D394(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D896(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1258(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1049(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1310(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D988(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1040(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D473(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1038(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D533(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D778(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D209(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D394(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D896(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1258(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1049(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1310(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D988(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1040(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D935(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D374(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1241(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D778(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D209(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D394(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D896(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1258(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D988(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1040(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1082(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: label: D156
type_infered: string
name: read_data
arguments: label: D970
type_infered: string
name: read_data
arguments: label: D579
type_infered: string
name: read_data
arguments: label: D884
type_infered: string
name: read_data
arguments: label: D1362
type_infered: string
name: read_data
arguments: label: D1248
type_infered: string
name: read_data
arguments: label: D947
type_infered: string
name: read_data
arguments: label: D1160
type_infered: string
name: read_data
arguments: label: D356
type_infered: string
name: read_data
arguments: label: D1265
type_infered: string
name: read_data
arguments: label: D504
type_infered: string
name: read_data
arguments: label: D554
type_infered: string
name: read_data
arguments: label: D1183
type_infered: string
name: read_data
arguments: label: D1437
type_infered: string
name: read_data
arguments: label: D42
type_infered: string
name: read_data
arguments: label: D1401
type_infered: string
name: read_data
arguments: label: D565
type_infered: string
name: read_data
arguments: label: D1070
type_infered: string
name: read_data
arguments: label: D835
type_infered: string
name: read_data
arguments: label: D133
type_infered: string
name: read_data
arguments: label: D40
type_infered: string
name: read_data
arguments: label: D1297
type_infered: string
name: read_data
arguments: label: D966
type_infered: string
name: read_data
arguments: label: D1152
type_infered: string
name: read_data
arguments: label: D842
type_infered: string
name: read_data
arguments: label: D348
type_infered: string
name: read_data
arguments: label: D353
type_infered: string
name: read_data
arguments: label: D616
type_infered: string
name: read_data
arguments: label: D795
type_infered: string
name: read_data
arguments: label: D568
type_infered: string
name: read_data
arguments: label: D758
type_infered: string
name: read_data
arguments: label: D486
type_infered: string
name: read_data
arguments: label: D268
type_infered: string
name: read_data
arguments: label: D957
type_infered: string
name: read_data
arguments: label: D771
type_infered: string
name: read_data
arguments: label: D668
type_infered: string
name: read_data
arguments: label: D1096
type_infered: string
name: read_data
arguments: label: D1288
type_infered: string
name: read_data
arguments: label: D593
type_infered: string
name: read_data
arguments: label: D47
type_infered: string
name: read_data
arguments: label: D457
type_infered: string
name: read_data
arguments: label: D1060
type_infered: string
name: read_data
arguments: label: D170
type_infered: string
name: read_data
arguments: label: D942
type_infered: string
name: read_data
arguments: label: D741
type_infered: string
name: read_data
arguments: label: D719
type_infered: string
name: read_data
arguments: label: D501
type_infered: string
name: read_data
arguments: label: D951
type_infered: string
name: read_data
arguments: label: D685
type_infered: string
name: read_data
arguments: label: D870
type_infered: string
name: read_data
arguments: label: D1365
type_infered: string
name: read_data
arguments: label: D1144
type_infered: string
name: read_data
arguments: label: D1052
type_infered: string
name: read_data
arguments: label: D497
type_infered: string
name: read_data
arguments: label: D1065
type_infered: string
name: read_data
arguments: label: D1351
type_infered: string
name: read_data
arguments: label: D1233
type_infered: string
name: read_data
arguments: label: D596
type_infered: string
name: read_data
arguments: label: D773
type_infered: string
name: read_data
arguments: label: D1038
type_infered: string
name: read_data
arguments: label: D301
type_infered: string
name: read_data
arguments: label: D778
type_infered: string
name: read_data
arguments: label: D209
type_infered: string
name: read_data
arguments: label: D394
type_infered: string
name: read_data
arguments: label: D896
type_infered: string
name: read_data
arguments: label: D1258
type_infered: string
name: read_data
arguments: label: D1049
type_infered: string
name: read_data
arguments: label: D1310
type_infered: string
name: read_data
arguments: label: D988
type_infered: string
name: read_data
arguments: label: D1040
type_infered: string
name: read_data
arguments: label: D473
type_infered: string
name: read_data
arguments: label: D533
type_infered: string
name: read_data
arguments: label: D935
type_infered: string
name: read_data
arguments: label: D374
type_infered: string
name: read_data
arguments: label: D1241
type_infered: string
name: read_data
arguments: label: D1082
type_infered: string

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


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


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


tool: D884:   (:predicates


tool: D1362:     (heading ?d - direction)


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


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


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


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


tool: D1265:     (light_color ?c - color)


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


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


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


tool: D1437:     (alive)


tool: D42:   )


tool: D1401:   (:constants


tool: D565:     left right straight - rotation


tool: D1070:     north south east west - direction


tool: D835:     green red unknown - color


tool: D133:     quick normal slow - delay


tool: D40:     north_south none east_west - preference


tool: D1297:     short medium long - length


tool: D966:   (:action look_at_light_north


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


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


tool: D348:     :effect


tool: D353:       (and (probabilistic


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


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


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


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


tool: D486:            (probabilistic


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


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


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


tool: D668:   (:action look_at_light_south


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


tool: D1288:   (:action look_at_light_east


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


tool: D47:   (:action look_at_light_west


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


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


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


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


tool: D741:   (:action look_at_light_none


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


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


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


tool: D685:   (:action wait_on_light


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


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


tool: D1144:                  (probabilistic


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


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


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


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


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


tool: D596:             )


tool: D773:   (:action proceed-right


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


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


tool: D209:                  (light_color unknown)


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


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


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


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


tool: D1310:                  (heading ?new-heading)


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


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


tool: D473:   (:action proceed-left


tool: D533:     :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: D935:   (:action proceed-straight


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


tool: D1241:     :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: D1082: )


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