user: 请将以下的汇编代码转换成C语言代码:

```asm
<print_domain>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D294(%rip),%rdi
  call   <printf@plt>
  lea    D278(%rip),%rdi
  call   <printf@plt>
  lea    D312(%rip),%rdi
  call   <printf@plt>
  lea    D518(%rip),%rdi
  call   <printf@plt>
  lea    D974(%rip),%rdi
  call   <printf@plt>
  lea    D26(%rip),%rdi
  call   <printf@plt>
  lea    D287(%rip),%rdi
  call   <printf@plt>
  lea    D628(%rip),%rdi
  call   <printf@plt>
  lea    D426(%rip),%rdi
  call   <printf@plt>
  lea    D572(%rip),%rdi
  call   <printf@plt>
  lea    D89(%rip),%rdi
  call   <printf@plt>
  lea    D730(%rip),%rdi
  call   <printf@plt>
  lea    D656(%rip),%rdi
  call   <printf@plt>
  lea    D903(%rip),%rdi
  call   <printf@plt>
  lea    D732(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rdi
  call   <printf@plt>
  lea    D262(%rip),%rdi
  call   <printf@plt>
  lea    D509(%rip),%rdi
  call   <printf@plt>
  lea    D746(%rip),%rdi
  call   <printf@plt>
  lea    D409(%rip),%rdi
  call   <printf@plt>
  lea    D314(%rip),%rdi
  call   <printf@plt>
  lea    D422(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D437(%rip),%rdi
  call   <printf@plt>
  lea    D346(%rip),%r12
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D970(%rip),%rdi
  call   <printf@plt>
  lea    D224(%rip),%r14
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D24(%rip),%r13
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D666(%rip),%rdi
  call   <printf@plt>
  lea    D22(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D589(%rip),%r15
  mov    %r15,%rdi
  call   <printf@plt>
  lea    D804(%rip),%rdi
  call   <printf@plt>
  lea    D315(%rip),%rdi
  call   <printf@plt>
  lea    D957(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D734(%rip),%rdi
  call   <printf@plt>
  lea    D651(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D369(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D798(%rip),%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D666(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  lea    D804(%rip),%rdi
  call   <printf@plt>
  lea    D315(%rip),%rdi
  call   <printf@plt>
  lea    D957(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D734(%rip),%rdi
  call   <printf@plt>
  lea    D651(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D386(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D666(%rip),%rdi
  call   <printf@plt>
  lea    D804(%rip),%rdi
  call   <printf@plt>
  lea    D315(%rip),%rdi
  call   <printf@plt>
  lea    D734(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D957(%rip),%rdi
  call   <printf@plt>
  lea    D651(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D112(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D635(%rip),%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D666(%rip),%rdi
  call   <printf@plt>
  lea    D510(%rip),%rdi
  call   <printf@plt>
  lea    D315(%rip),%rdi
  call   <printf@plt>
  lea    D734(%rip),%rdi
  call   <printf@plt>
  lea    D556(%rip),%rdi
  call   <printf@plt>
  lea    D957(%rip),%rdi
  call   <printf@plt>
  lea    D550(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D310(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D546(%rip),%rdi
  call   <printf@plt>
  mov    %r14,%rdi
  call   <printf@plt>
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D569(%rip),%rdi
  call   <printf@plt>
  lea    D92(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D552(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D223(%rip),%rdi
  call   <printf@plt>
  lea    D447(%rip),%rdi
  call   <printf@plt>
  lea    D345(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D44(%rip),%rdi
  call   <printf@plt>
  lea    D673(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D41(%rip),%rdi
  call   <printf@plt>
  lea    D46(%rip),%r12
  mov    %r12,%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D498(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D767(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D946(%rip),%rdi
  call   <printf@plt>
  lea    D48(%rip),%rdi
  call   <printf@plt>
  lea    D391(%rip),%rdi
  call   <printf@plt>
  lea    D688(%rip),%r15
  mov    %r15,%rdi
  call   <printf@plt>
  lea    D197(%rip),%r14
  mov    %r14,%rdi
  call   <printf@plt>
  lea    D922(%rip),%r13
  mov    %r13,%rdi
  call   <printf@plt>
  lea    D336(%rip),%r12
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D794(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D872(%rip),%rdi
  call   <printf@plt>
  lea    D808(%rip),%rdi
  call   <printf@plt>
  lea    D161(%rip),%rdi
  call   <printf@plt>
  lea    D202(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D979(%rip),%rdi
  call   <printf@plt>
  lea    D48(%rip),%rdi
  call   <printf@plt>
  lea    D341(%rip),%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>
  lea    D872(%rip),%rdi
  call   <printf@plt>
  lea    D808(%rip),%rdi
  call   <printf@plt>
  lea    D161(%rip),%rdi
  call   <printf@plt>
  lea    D202(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D953(%rip),%rdi
  call   <printf@plt>
  lea    D450(%rip),%rdi
  call   <printf@plt>
  lea    D305(%rip),%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>
  lea    D161(%rip),%rdi
  call   <printf@plt>
  lea    D202(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D30(%rip),%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: disassemble_data
arguments: label: D294
type_infered: string
name: disassemble_data
arguments: label: D278
type_infered: string
name: disassemble_data
arguments: label: D312
type_infered: string
name: disassemble_data
arguments: label: D518
type_infered: string
name: disassemble_data
arguments: label: D974
type_infered: string
name: disassemble_data
arguments: label: D26
type_infered: string
name: disassemble_data
arguments: label: D287
type_infered: string
name: disassemble_data
arguments: label: D628
type_infered: string
name: disassemble_data
arguments: label: D426
type_infered: string
name: disassemble_data
arguments: label: D572
type_infered: string
name: disassemble_data
arguments: label: D89
type_infered: string
name: disassemble_data
arguments: label: D730
type_infered: string
name: disassemble_data
arguments: label: D656
type_infered: string
name: disassemble_data
arguments: label: D903
type_infered: string
name: disassemble_data
arguments: label: D732
type_infered: string
name: disassemble_data
arguments: label: D943
type_infered: string
name: disassemble_data
arguments: label: D262
type_infered: string
name: disassemble_data
arguments: label: D509
type_infered: string
name: disassemble_data
arguments: label: D746
type_infered: string
name: disassemble_data
arguments: label: D409
type_infered: string
name: disassemble_data
arguments: label: D314
type_infered: string
name: disassemble_data
arguments: label: D422
type_infered: string
name: disassemble_data
arguments: label: D437
type_infered: string
name: disassemble_data
arguments: label: D346
type_infered: string
name: disassemble_data
arguments: label: D970
type_infered: string
name: disassemble_data
arguments: label: D224
type_infered: string
name: disassemble_data
arguments: label: D24
type_infered: string
name: disassemble_data
arguments: label: D666
type_infered: string
name: disassemble_data
arguments: label: D22
type_infered: string
name: disassemble_data
arguments: label: D589
type_infered: string
name: disassemble_data
arguments: label: D804
type_infered: string
name: disassemble_data
arguments: label: D315
type_infered: string
name: disassemble_data
arguments: label: D957
type_infered: string
name: disassemble_data
arguments: label: D734
type_infered: string
name: disassemble_data
arguments: label: D651
type_infered: string
name: disassemble_data
arguments: label: D369
type_infered: string
name: disassemble_data
arguments: label: D798
type_infered: string
name: disassemble_data
arguments: label: D386
type_infered: string
name: disassemble_data
arguments: label: D96
type_infered: string
name: disassemble_data
arguments: label: D112
type_infered: string
name: disassemble_data
arguments: label: D635
type_infered: string
name: disassemble_data
arguments: label: D510
type_infered: string
name: disassemble_data
arguments: label: D556
type_infered: string
name: disassemble_data
arguments: label: D550
type_infered: string
name: disassemble_data
arguments: label: D310
type_infered: string
name: disassemble_data
arguments: label: D546
type_infered: string
name: disassemble_data
arguments: label: D569
type_infered: string
name: disassemble_data
arguments: label: D92
type_infered: string
name: disassemble_data
arguments: label: D552
type_infered: string
name: disassemble_data
arguments: label: D223
type_infered: string
name: disassemble_data
arguments: label: D447
type_infered: string
name: disassemble_data
arguments: label: D345
type_infered: string
name: disassemble_data
arguments: label: D44
type_infered: string
name: disassemble_data
arguments: label: D673
type_infered: string
name: disassemble_data
arguments: label: D41
type_infered: string
name: disassemble_data
arguments: label: D46
type_infered: string
name: disassemble_data
arguments: label: D498
type_infered: string
name: disassemble_data
arguments: label: D767
type_infered: string
name: disassemble_data
arguments: label: D946
type_infered: string
name: disassemble_data
arguments: label: D48
type_infered: string
name: disassemble_data
arguments: label: D391
type_infered: string
name: disassemble_data
arguments: label: D688
type_infered: string
name: disassemble_data
arguments: label: D197
type_infered: string
name: disassemble_data
arguments: label: D922
type_infered: string
name: disassemble_data
arguments: label: D336
type_infered: string
name: disassemble_data
arguments: label: D794
type_infered: string
name: disassemble_data
arguments: label: D872
type_infered: string
name: disassemble_data
arguments: label: D808
type_infered: string
name: disassemble_data
arguments: label: D161
type_infered: string
name: disassemble_data
arguments: label: D202
type_infered: string
name: disassemble_data
arguments: label: D979
type_infered: string
name: disassemble_data
arguments: label: D341
type_infered: string
name: disassemble_data
arguments: label: D953
type_infered: string
name: disassemble_data
arguments: label: D450
type_infered: string
name: disassemble_data
arguments: label: D305
type_infered: string
name: disassemble_data
arguments: label: D30
type_infered: string

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


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


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


tool: D518:   (:predicates


tool: D974:     (heading ?d - direction)


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


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


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


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


tool: D572:     (light_color ?c - color)


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


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


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


tool: D903:     (alive)


tool: D732:   )


tool: D943:   (:constants


tool: D262:     left right straight - rotation


tool: D509:     north south east west - direction


tool: D746:     green red unknown - color


tool: D409:     quick normal slow - delay


tool: D314:     north_south none east_west - preference


tool: D422:     short medium long - length


tool: D437:   (:action look_at_light_north


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


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


tool: D224:     :effect


tool: D24:       (and (probabilistic


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


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


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


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


tool: D315:            (probabilistic


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


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


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


tool: D369:   (:action look_at_light_south


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


tool: D386:   (:action look_at_light_east


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


tool: D112:   (:action look_at_light_west


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


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


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


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


tool: D310:   (:action look_at_light_none


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


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


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


tool: D552:   (:action wait_on_light


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


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


tool: D345:                  (probabilistic


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


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


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


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


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


tool: D767:             )


tool: D946:   (:action proceed-right


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


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


tool: D197:                  (light_color unknown)


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


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


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


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


tool: D808:                  (heading ?new-heading)


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


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


tool: D979:   (:action proceed-left


tool: D341:     :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: D953:   (:action proceed-straight


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


tool: D305:     :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: D30: )


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