(literalize unit unit-name file-name)

(literalize pin net-name pin-name external-net-name external-pin-name pin-left-x pin-left-y fixed-pin pin-x pin-y pin-layer pin-layer-constraint pin-channel-side pin-is-attached)

(literalize channel channel-bottom-left-x channel-bottom-left-y channel-top-right-x channel-top-right-y channel-width channel-length no-of-left-pins no-of-right-pins no-of-bottom-pins no-of-top-pins right-fixed left-fixed bottom-fixed top-fixed channel-type no-of-fixed-sides)

(literalize net net-name parent-name net-no-of-pins net-left-x net-left-y net-right-x net-right-y no-of-left-pins no-of-right-pins no-of-top-pins no-of-bottom-pins net-is-routed left-most-pin-name right-most-pin-name bottom-most-pin-name top-most-pin-name fixed-net net-layer external-net-name no-of-inter max-no-of-via)

(literalize layer-info layer-name layer-order layer-priority)

(literalize context present previous saved)

(literalize ff net-name pin-name grid-layer grid-x grid-y came-from can-chng-layer)

(literalize next-net-to-be-routed net-name no-of-attached-pins criteria)

(literalize to-be-routed net-name no-of-attached-pins)

(literalize occupied x y m)

(literalize constraint constraint-type constraint-relation channel-side constraint-reason net-name-1 net-name-2 pin-name-1 pin-name-2 seg-id-1 seg-id-2)

(literalize congestion direction coordinate no-of-nets extra-nets como)

(literalize intersection net-name direction min max)

(literalize horizontal min max com compo commo layer status min-net max-net net-name pin-name)

(literalize vertical min max com compo commo layer status min-net max-net net-name pin-name)

(literalize horizontal-s net-name min max com id top-count bot-count sum difference absolute side)

(literalize vertical-s net-name min max com id top-count bot-count sum difference absolute side)

(literalize total net-name row-col coor level-pins total-pins cong min-xy max-xy last-pin last-xy nets)

(literalize tree net-name orientation com min max count id)

(vector-attribute nets)

(p p327
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
    (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max { <hmax> >= <gx> > <min> } ^com 1 ^id <id>)
  - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side bottom)
    (constraint ^constraint-type vertical ^seg-id-1 <id>)
    (total ^net-name <> <nn>)
  - (total-verti <nn>)
  -->
    (remove <t>)
)

(p p328
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
    (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> < <max> } ^max { <hmax> >= <gx> } ^com <lr> ^id <id>)
  - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <> <id>)
    (last-row <lr>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side top)
    (constraint ^constraint-type vertical ^seg-id-2 <id>)
    (total ^net-name <> <nn>)
  - (total-verti <nn>)
  -->
    (remove <t>)
)

(p p329
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
    (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> > <min> } ^com 1 ^id <id>)
  - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side left)
    (constraint ^constraint-type horizontal ^seg-id-1 <id>)
    (total ^net-name <> <nn>)
  - (total-verti <nn>)
  -->
    (remove <t>)
)

(p p330
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
    (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> < <max> } ^max { <vmax> >= <gy> } ^com <lc> ^id <id>)
  - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <> <id>)
    (last-col <lc>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side right)
    (constraint ^constraint-type horizontal ^seg-id-2 <id>)
    (total ^net-name <> <nn>)
  - (total-verti <nn>)
  -->
    (remove <t>)
)

(p p331
    { <c> (context ^present modify-total) }
  -->
    (modify <c> ^present delete-total)
)

(p p332
    { <c> (context ^present delete-total) }
  - (total)
  -->
    (remove <c>)
    (make context ^previous find-no-of-pins-on-a-row-col)
)

(p p333
    { <c> (context ^present extend-total) }
    (last-row <lr>)
  -->
    (make maximum-total 0 0 0 1 0 <lr> 0)
    (make merge-direction left)
    (modify <c> ^present merge)
    (make eliminate-total)
)

(p p334
    { <c> (context ^present delete-total) }
  -->
    (modify <c> ^present extend-total)
)

(p p335
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
    (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max { <hmax> >= <gx> } ^com 1 ^id <id> ^absolute <a> ^sum <s>)
  - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
  - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <hmin> ^max-xy <hmax> ^last-pin checked)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side bottom)
  -->
    (make (substr <t> 1 inf) ^min-xy <hmin> ^max-xy <hmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <hmin> <hmax>)
)

(p p336
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
    (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max { <hmax> >= <gx> } ^com <lr> ^id <id> ^absolute <a> ^sum <s>)
  - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <> <id>)
  - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <hmin> ^max-xy <hmax> ^last-pin checked)
    (last-row <lr>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x { >= <hmin> <= <hmax> } ^pin-channel-side top)
  -->
    (make (substr <t> 1 inf) ^min-xy <hmin> ^max-xy <hmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <hmin> <hmax>)
)

(p p337
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
    (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> } ^com 1 ^id <id> ^absolute <a> ^sum <s>)
  - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <> <id>)
  - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <vmin> ^max-xy <vmax> ^last-pin checked)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side left)
  -->
    (make (substr <t> 1 inf) ^min-xy <vmin> ^max-xy <vmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <vmin> <vmax>)
)

(p p338
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
    (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> } ^com <lc> ^id <id> ^absolute <a> ^sum <s>)
  - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <> <id>)
  - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <vmin> ^max-xy <vmax> ^last-pin checked)
    (last-col <lc>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-y { >= <vmin> <= <vmax> } ^pin-channel-side right)
  -->
    (make (substr <t> 1 inf) ^min-xy <vmin> ^max-xy <vmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <vmin> <vmax>)
)

(p p339
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
    (horizontal-s ^net-name <nn> ^min 1 ^max { <hmax> >= <gx> } ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy 1 ^max-xy <hmax> ^last-pin checked)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x 0 ^pin-y <com> ^pin-channel-side left)
  -->
    (make (substr <t> 1 inf) ^min-xy 1 ^max-xy <hmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> 1 <hmax>)
)

(p p340
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y <y>)
    (horizontal-s ^net-name <nn> ^min { <hmin> <= <gx> } ^max <lc> ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  - (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  - (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <hmin> ^max-xy <lc> ^last-pin checked)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-y <com> ^pin-channel-side right)
    (last-col <lc>)
  -->
    (make (substr <t> 1 inf) ^min-xy <hmin> ^max-xy <lc> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <hmin> <lc>)
)

(p p341
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
    (vertical-s ^net-name <nn> ^min 1 ^max { <vmax> >= <gy> } ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy 1 ^max-xy <vmax> ^last-pin checked)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x <com> ^pin-channel-side bottom)
  -->
    (make (substr <t> 1 inf) ^min-xy 1 ^max-xy <vmax> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> 1 <vmax>)
)

(p p342
    (context ^present modify-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (ff ^net-name <nn> ^pin-name <pn> ^grid-x <x> ^grid-y { <gy> >= <min> <= <max> })
    (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max <lr> ^com <com> ^id <id> ^absolute <a> ^sum <s>)
  - (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <garb> ^id <> <id>)
  - (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <vmin> ^max-xy <lr> ^last-pin checked)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-x <com> ^pin-channel-side top)
    (last-row <lr>)
  -->
    (make (substr <t> 1 inf) ^min-xy <vmin> ^max-xy <lr> ^level-pins <a> ^total-pins <s> ^last-pin checked ^last-xy <id> ^nets <nn> <vmin> <lr>)
)

(p p343
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (total ^net-name <nn> ^row-col <rc> ^coor <y> ^last-pin checked)
  -->
    (remove <t>)
)

(p p344
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  -->
    (remove <t>)
)

(p p345
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
    (net ^net-name <nn> ^net-no-of-pins 2)
  -->
    (modify <t> ^last-pin checked ^nets <nn> <min> <max>)
)

(p p346
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <y> ^min-xy <min> ^max-xy <max> ^last-pin <> checked) }
  - (total ^last-pin checked)
  -->
    (modify <t> ^last-pin checked ^nets <nn> <min> <max>)
)

(p p347
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
    (last-col <lc>)
    (horizontal-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { >= <min> <> <lc> } ^com <y> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-x 0 ^pin-y <y>)
  - (pin ^net-name <nn> ^pin-y <y> ^pin-channel-side right)
  -->
    (remove <t>)
)

(p p348
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <tmin> ^max-xy <max>) }
    (last-col <lc>)
    (horizontal-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { <maxs> <> <lc> } ^com <y> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-x 0 ^pin-y <y>)
    (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com { <min> > 1 <= <maxs> })
  - (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com < <min>)
    { <h> (horizontal ^net-name <nn1> ^min 0 ^max { <hmax> < <min> } ^com <y> ^layer <lay>) }
    { <ff> (ff ^net-name <nn1> ^grid-x <hmax> ^grid-y <y> ^grid-layer <lay> ^came-from west) }
    { <h1> (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <y> ^layer <lay>) }
  - (pin ^net-name <nn> ^pin-y <y>)
  - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <y> ^max >= <y> ^com <min> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <min> ^max >= <min> ^com <y> ^layer <lay>)
  -->
    (remove <t>)
    (modify <h> ^max <min>)
    (modify <h1> ^min <min> ^min-net <nn1>)
    (modify <ff> ^grid-x <min> ^can-chng-layer nil)
)

(p p349
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max>) }
    (last-col <lc>)
    (horizontal-s ^net-name { <nn1> <> <nn> } ^min { <= <max> <> 1 } ^max <lc> ^com <y> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-y <y> ^pin-channel-side right)
  - (pin ^net-name <nn> ^pin-y <y> ^pin-channel-side left)
  -->
    (remove <t>)
)

(p p350
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <tmax>) }
    (last-col <lc>)
    (horizontal-s ^net-name { <nn1> <> <nn> } ^min { <mins> <> 1 } ^max <lc> ^com <y> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-y <y> ^pin-channel-side right)
    (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com { <max> >= <mins> < <lc> })
  - (vertical ^net-name <nn> ^min <= <y> ^max >= <y> ^com > <max>)
    { <h> (horizontal ^net-name <nn1> ^min { <hmin> > <max> } ^max <garb> ^com <y> ^layer <lay>) }
    { <ff> (ff ^net-name <nn1> ^grid-x <hmin> ^grid-y <y> ^grid-layer <lay> ^came-from east) }
    { <h1> (horizontal ^net-name nil ^min < <max> ^max <hmin> ^com <y> ^layer <lay>) }
  - (pin ^net-name <nn> ^pin-y <y>)
  - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <y> ^max >= <y> ^com <max> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <max> ^max >= <max> ^com <y> ^layer <lay>)
  -->
    (remove <t>)
    (modify <h> ^min <max>)
    (modify <h1> ^max <max> ^max-net <nn1>)
    (modify <ff> ^grid-x <max> ^can-chng-layer nil)
)

(p p351
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
    (last-row <lr>)
    (vertical-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { >= <min> <> <lr> } ^com <x> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x <x> ^pin-channel-side top)
  -->
    (remove <t>)
)

(p p352
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <tmin> ^max-xy <max>) }
    (last-row <lr>)
    (vertical-s ^net-name { <nn1> <> <nn> } ^min 1 ^max { <maxs> <> <lr> } ^com <x> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side bottom)
    (horizontal ^net-name <nn> ^min <= <x> ^max <x> ^com { <min> > 1 <= <maxs> })
  - (horizontal ^net-name <nn> ^min <= <x> ^max <x> ^com < <min>)
    { <v> (vertical ^net-name <nn1> ^min 0 ^max { <vmax> < <min> } ^com <x> ^layer <lay>) }
    { <ff> (ff ^net-name <nn1> ^grid-x <x> ^grid-y <vmax> ^grid-layer <lay> ^came-from south) }
    { <v1> (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <x> ^layer <lay>) }
  - (pin ^net-name <nn> ^pin-x <x>)
  - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <min> ^max >= <min> ^com <x>)
  - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <x> ^max >= <x> ^com <min>)
  -->
    (remove <t>)
    (modify <v> ^max <min>)
    (modify <v1> ^min <min> ^min-net <nn1>)
    (modify <ff> ^grid-y <min> ^can-chng-layer nil)
)

(p p353
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max>) }
    (last-row <lr>)
    (vertical-s ^net-name { <nn1> <> <nn> } ^min { <= <max> <> 1 } ^max <lr> ^com <x> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x <x> ^pin-channel-side bottom)
  -->
    (remove <t>)
)

(p p354
    (context ^present delete-total)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <tmax>) }
    (last-row <lr>)
    (vertical-s ^net-name { <nn1> <> <nn> } ^min { <mins> <> 1 } ^max <lr> ^com <x> ^id <=> 1)
    (pin ^net-name <nn1> ^pin-x <x> ^pin-channel-side top)
    (horizontal ^net-name <nn> ^min <= <x> ^max >= <x> ^com { <max> >= <mins> < <lr> })
  - (horizontal ^net-name <nn> ^min <= <x> ^max >= <x> ^com > <max>)
    { <v> (vertical ^net-name <nn1> ^min { <vmin> > <max> } ^max <garb> ^com <x> ^layer <lay>) }
    { <ff> (ff ^net-name <nn1> ^grid-x <x> ^grid-y <vmin> ^grid-layer <lay> ^came-from north) }
    { <v1> (vertical ^net-name nil ^min < <vmin> ^max <vmin> ^com <x> ^layer <lay>) }
  - (pin ^net-name <nn> ^pin-x <x>)
  - (vertical ^status nil ^net-name { <> <nn1> <> nil } ^min <= <max> ^max >= <max> ^com <x>)
  - (horizontal ^status nil ^net-name { <> <nn1> <> nil } ^min <= <x> ^max >= <x> ^com <max>)
  -->
    (remove <t>)
    (modify <v> ^min <max>)
    (modify <v1> ^max <max> ^max-net <nn1>)
    (modify <ff> ^grid-y <max> ^can-chng-layer nil)
)

(p p355
    (context ^present extend-total)
  - (switch-box)
    { <t> (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
    (last-row > <y>)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
  - (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
  - (horizontal ^net-name <nn> ^min <= <min> ^max >= <min> ^com <y>)
  - (horizontal ^net-name <nn> ^min <= <max> ^max >= <max> ^com <y>)
  - (horizontal ^net-name <nn> ^min >= <min> ^max <= <max> ^com <y>)
    (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com > <y>)
  - (ff ^net-name <nn> ^grid-x { >= <min> <= <max> } ^grid-y <y> ^pin-name >= 1000)
  -->
    (modify <t> ^coor (compute <y> + 1))
)

(p p356
    (context ^present extend-total)
  - (switch-box)
    { <t> (total ^net-name <nn> ^row-col row ^coor { <y> > 0 } ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <id>)
    (last-row <lr>)
  - (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
  - (horizontal ^net-name <nn> ^min <= <min> ^max >= <min> ^com <y>)
  - (horizontal ^net-name <nn> ^min <= <max> ^max >= <max> ^com <y>)
  - (horizontal ^net-name <nn> ^min >= <min> ^max <= <max> ^com <y>)
    (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com < <y>)
  - (ff ^net-name <nn> ^grid-x { >= <min> <= <max> } ^grid-y <y> ^pin-name >= 1000)
  -->
    (modify <t> ^coor (compute <y> - 1))
)

(p p357
    (context ^present extend-total)
  - (switch-box)
    { <t> (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
    (last-col > <x>)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
  - (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
  - (vertical ^net-name <nn> ^min <= <min> ^max >= <min> ^com <x>)
  - (vertical ^net-name <nn> ^min <= <max> ^max >= <max> ^com <x>)
  - (vertical ^net-name <nn> ^min >= <min> ^max <= <max> ^com <x>)
    (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com > <x>)
  - (ff ^net-name <nn> ^grid-x <x> ^grid-y { >= <min> <= <max> } ^pin-name >= 1000)
  -->
    (modify <t> ^coor (compute <x> + 1))
)

(p p358
    (context ^present extend-total)
  - (switch-box)
    { <t> (total ^net-name <nn> ^row-col col ^coor { <x> > 0 } ^min-xy <min> ^max-xy <max> ^last-xy <id>) }
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <id>)
    (last-col <lc>)
  - (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
  - (vertical ^net-name <nn> ^min <= <min> ^max >= <min> ^com <x>)
  - (vertical ^net-name <nn> ^min <= <max> ^max >= <max> ^com <x>)
  - (vertical ^net-name <nn> ^min >= <min> ^max <= <max> ^com <x>)
    (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com < <x>)
  - (ff ^net-name <nn> ^grid-x <x> ^grid-y { >= <min> <= <max> } ^pin-name >= 1000)
  -->
    (modify <t> ^coor (compute <x> - 1))
)

(p p359
    (context ^present extend-total)
    (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
    (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> < <y> } ^grid-layer <lay> ^pin-name <pn>) }
    { <v> (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { <vmax> >= <y> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <y> ^max >= <y> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <y> ^layer <lay>)
  -->
    (make vertical ^min <y> ^max <vmax> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
    (modify <v> ^max <gy> ^max-net <nn>)
    (make vertical ^min <gy> ^max <y> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
    (modify <ff> ^grid-y <y> ^came-from south ^can-chng-layer nil)
)

(p p360
    (context ^present extend-total)
    (total ^net-name <nn> ^row-col row ^coor <y> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <lr> ^id <id>)
    (last-row <lr>)
    (horizontal ^net-name nil ^min <= <min> ^max >= <max> ^com <y>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> > <y> } ^grid-layer <lay> ^pin-name <pn>) }
    { <v> (vertical ^net-name nil ^min { <vmin> <= <y> } ^max { <vmax> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <y> ^max >= <y> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <y> ^layer <lay>)
  -->
    (make vertical ^min <gy> ^max <vmax> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
    (modify <v> ^max <y> ^max-net <nn>)
    (make vertical ^min <y> ^max <gy> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
    (modify <ff> ^grid-y <y> ^came-from north ^can-chng-layer nil)
)

(p p361
    (context ^present extend-total)
    (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com 1 ^id <id>)
    (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx> < <x> } ^grid-y { <gy> >= <min> <= <max> } ^grid-layer <lay> ^pin-name <pn>) }
    { <v> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> >= <x> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <x> ^max >= <x> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <x> ^layer <lay>)
  -->
    (make horizontal ^min <x> ^max <hmax> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
    (modify <v> ^max <gx> ^max-net <nn>)
    (make horizontal ^min <gx> ^max <x> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
    (modify <ff> ^grid-x <x> ^came-from west ^can-chng-layer nil)
)

(p p362
    (context ^present extend-total)
    (total ^net-name <nn> ^row-col col ^coor <x> ^min-xy <min> ^max-xy <max> ^last-xy <id>)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <lc> ^id <id>)
    (last-col <lc>)
    (vertical ^net-name nil ^min <= <min> ^max >= <max> ^com <x>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx> > <x> } ^grid-y { <gy> >= <min> <= <max> } ^grid-layer <lay> ^pin-name <pn>) }
    { <v> (horizontal ^net-name nil ^min { <hmin> <= <x> } ^max { <hmax> >= <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <x> ^max >= <x> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <x> ^layer <lay>)
  -->
    (make horizontal ^min <gx> ^max <hmax> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn> ^max-net <mn>)
    (modify <v> ^max <x> ^max-net <nn>)
    (make horizontal ^min <x> ^max <gx> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^net-name <nn> ^pin-name <pn>)
    (modify <ff> ^grid-x <x> ^came-from east ^can-chng-layer nil)
)

(p p490
    { <c> (context ^present separate) }
  -->
    (modify <c> ^present reconnect)
)

(p p491
    { <c> (context ^present reconnect) }
  -->
    (modify <c> ^present form-verti)
)

(p p492
    { <c> (context ^present form-verti) }
  -->
    (modify <c> ^present partial-route)
)

(p p493
    { <c> (context ^present partial-route) }
  -->
    (modify <c> ^present extend-pins)
)

(p p494
    { <c1> (context ^present extend-pins) }
  -->
    (modify <c1> ^present nil ^previous extend-pins)
)

(p p495
    { <c1> (context ^previous extend-pins) }
  -->
    (make switch-box)
    (make context ^present propagate-constraint)
    (remove <c1>)
)

(p p496
    { <c1> (context ^previous extend-pins) }
    (channel ^no-of-left-pins 0 ^no-of-right-pins 0)
  -->
    (remove <c1>)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p497
    { <c1> (context ^previous extend-pins) }
    (channel ^no-of-bottom-pins 0 ^no-of-top-pins 0)
  -->
    (remove <c1>)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p498
    (context ^previous propagate-constraint)
    (net ^net-is-routed <> yes)
  -->
    (remove 1)
    (make context ^present lshape1)
)

(p p499
    (context ^present lshape1)
  -->
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p500
    { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  - (total)
  - (extend-ff-tried)
  -->
    (remove <c>)
    (make context ^present lshape4)
)

(p p501
    { <c> (context ^present lshape4) }
  -->
    (remove <c>)
    (make extend-ff-tried)
    (make context ^present extend-ff)
)

(p p502
    { <c> (context ^present extend-ff) }
  -->
    (remove <c>)
    (make context ^previous extend-ff)
)

(p p503
    { <c> (context ^previous extend-ff) }
  - (extended-ff)
  -->
    (remove <c>)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p504
    { <c> (context ^previous extend-ff) }
    { <e> (extended-ff) }
    { <ex> (extend-ff-tried) }
  -->
    (remove <c> <e> <ex>)
    (make context ^present find-no-of-pins-on-a-row-col)
    (make goal cleanup extended-ff)
)

(p p505
    (context ^previous find-no-of-pins-on-a-row-col)
  - (total)
    (extend-ff-tried)
  - (total-verti)
  -->
    (remove 1)
    (make context ^present find-no-of-vcg-hcg)
    (make goal cleanup counted-verti)
)

(p p506
    (context ^previous find-no-of-pins-on-a-row-col)
  - (total)
    (total-verti)
  - (verti-has-loop)
  -->
    (remove 1)
    (make verti-has-loop)
    (make context ^present choose-between-total-verti)
)

(p p507
    (context ^previous find-no-of-pins-on-a-row-col)
  - (total)
    (total-verti)
    (verti-has-loop)
  -->
    (make context ^present extend-h-v-s)
    (make goal cleanup total-verti)
    (make goal cleanup counted-verti)
    (make goal cleanup extend-ff-tried)
    (remove 1 3)
)

(p p508
    (context ^present choose-between-total-verti)
  - (total-verti ^4 > 0)
  -->
    (modify 1 ^present extend-h-v-s)
    (make goal cleanup counted-verti)
)

(p p509
    (context ^previous find-no-of-vcg-hcg)
  - (total-verti)
  -->
    (remove 1)
    (make context ^present extend-h-v-s)
)

(p p510
    (context ^present loose-constraint)
  -->
    (make context ^present lshape2)
    (remove 1)
)

(p p511
    (context ^present lshape2)
  -->
    (modify 1 ^present lshape3)
)

(p p512
    (context ^present lshape3)
  -->
    (remove 1)
    (make context ^present random0)
)

(p p513
    (context ^present random0)
  -->
    (remove 1)
    (make context ^present random1)
)

(p p514
    (context ^present remove-routed-net-segments)
  - (net ^net-is-routed <> yes)
  - (horizontal ^net-name <> nil ^status nil)
  - (vertical ^net-name <> nil ^status nil)
  -->
    (write (crlf) | Finished with the routing.|)
    (halt)
)

(p p1
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^com <min>)
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
    (pin ^net-name <> <nn> ^pin-x <min> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x { < <px> > <min> })
    (pin ^net-name <nn> ^pin-x > <px> ^pin-channel-side top)
  -->
    (modify <h> ^min <px>)
    (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p2
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^com <min>)
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
    (pin ^net-name <> <nn> ^pin-x <min> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x { < <px> > <min> })
    (pin ^net-name <nn> ^pin-x > <px> ^pin-channel-side bottom)
  -->
    (modify <h> ^min <px>)
    (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p3
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^com <max>)
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
    (pin ^net-name <> <nn> ^pin-x <max> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x { < <max> > <px> })
    (pin ^net-name <nn> ^pin-x < <px> ^pin-channel-side top)
  -->
    (modify <h> ^max <px>)
    (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p4
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^com <max>)
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  - (horizontal-s ^net-name <nn> ^min <= <px> ^max >= <px> ^id <> <id>)
    (pin ^net-name <> <nn> ^pin-x <max> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x <px> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x { < <max> > <px> })
    (pin ^net-name <nn> ^pin-x < <px> ^pin-channel-side bottom)
  -->
    (modify <h> ^max <px>)
    (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p5
    (context ^present reconnect)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  - (pin ^pin-x <max> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^max <max>)
)

(p p6
    (context ^present reconnect)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  - (pin ^pin-x <min> ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^min <min>)
)

(p p7
    (context ^present reconnect)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  - (pin ^pin-x <max> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^max <max>)
)

(p p8
    (context ^present reconnect)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  - (pin ^pin-x <min> ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^min <min>)
)

(p p9
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com>)
    (horizontal-s ^net-name <nn> ^min { <min1> >= <min> } ^max { <max1> <= <max> } ^com <> <com>)
    { <v> (vertical-s ^net-name <nn> ^com { <com1> >= <min1> <= <max1> }) }
    (pin ^net-name <> <nn> ^pin-x <com1>)
    (congestion ^direction col ^coordinate { <px> >= <min1> <= <max1> })
  - (pin ^net-name <> <nn> ^pin-x <px>)
  - (vertical-s ^com <px>)
  -->
    (modify <v> ^com <px>)
)

(p p10
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com>)
    (horizontal-s ^net-name <nn> ^min { <min1> >= <min> <= <max> } ^max { <max1> >= <max> } ^com <> <com>)
    { <v> (vertical-s ^net-name <nn> ^com { <com1> >= <min1> <= <max> }) }
    (pin ^net-name <> <nn> ^pin-x <com1>)
    (congestion ^direction col ^coordinate { <px> >= <min1> <= <max> })
  - (pin ^net-name <> <nn> ^pin-x <px>)
  - (vertical-s ^com <px>)
  -->
    (modify <v> ^com <px>)
)

(p p11
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
    (horizontal-s ^net-name <nn> ^min { <min1> >= <min> } ^max { <max1> <= <max> } ^com <> <hcom>)
  - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max1> })
    { <v> (vertical-s ^net-name <nn> ^com { <vcom> < <min1> }) }
  - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  -->
    (modify <v> ^com <min1>)
)

(p p12
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
    (horizontal-s ^net-name <nn> ^min { <min1> >= <min> } ^max { <max1> <= <max> } ^com <> <hcom>)
  - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max1> })
    { <v> (vertical-s ^net-name <nn> ^com { <vcom> > <max1> }) }
  - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  -->
    (modify <v> ^com <max1>)
)

(p p13
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
    (horizontal-s ^net-name <nn> ^min { <min1> >= <min> <= <max> } ^max { <max1> >= <max> } ^com <> <hcom>)
  - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max> })
    { <v> (vertical-s ^net-name <nn> ^com { <vcom> < <min1> }) }
  - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  -->
    (modify <v> ^com <min1>)
)

(p p14
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom> ^id <id>)
    (horizontal-s ^net-name <nn> ^min { <min1> >= <min> <= <max> } ^max { <max1> >= <max> } ^com <> <hcom>)
  - (vertical-s ^net-name <nn> ^com { >= <min1> <= <max> })
    { <v> (vertical-s ^net-name <nn> ^com { <vcom> > <max> }) }
  - (horizontal-s ^net-name <nn> ^min <= <vcom> ^max >= <vcom> ^id <> <id>)
  -->
    (modify <v> ^com <max>)
)

(p p15
    (context ^present reconnect)
    (horizontal-s ^net-name <nn> ^min <min1> ^max <max1> ^id <id1>)
    { <h> (horizontal-s ^net-name <nn> ^min <max1> ^max <max2> ^com <com> ^id <id2>) }
    (horizontal-s ^net-name <nn> ^min <max2> ^max <max3> ^id <id3>)
  - (horizontal-s ^net-name <nn> ^id { <> <id1> <> <id2> <> <id3> })
    (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max1>)
    (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max2>)
  -->
    (modify <h> ^min <min1> ^max <max3>)
)

(p p16
    (context ^present reconnect)
    (vertical-s ^net-name <nn> ^min <min1> ^max <max1> ^id <id1>)
    { <h> (vertical-s ^net-name <nn> ^min <max1> ^max <max2> ^com <com> ^id <id2>) }
    (vertical-s ^net-name <nn> ^min <max2> ^max <max3> ^id <id3>)
  - (vertical-s ^net-name <nn> ^id { <> <id1> <> <id2> <> <id3> })
    (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max1>)
    (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com <max2>)
  -->
    (modify <h> ^min <min1> ^max <max3>)
)

(p p17
    (context ^present separate)
    { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <max>)
    (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side right)
  - (pin ^net-name <nn> ^pin-x > <com> ^pin-y { > <py> <= <max> })
  - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side top)
  - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <py> < <max> })
  - (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <max>)
  -->
    (modify <v> ^max <py>)
    (make vertical-s ^net-name <nn> ^min <py> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p18
    (context ^present separate)
    { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <max>)
    (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side left)
  - (pin ^net-name <nn> ^pin-x < <com> ^pin-y { > <py> <= <max> })
  - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side top)
  - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <py> < <max> })
  - (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <max>)
  -->
    (modify <v> ^max <py>)
    (make vertical-s ^net-name <nn> ^min <py> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p19
    (context ^present separate)
    { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <min>)
    (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side right)
  - (pin ^net-name <nn> ^pin-x > <com> ^pin-y { < <py> >= <min> })
  - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side bottom)
  - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <py> })
  - (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <min>)
  -->
    (modify <v> ^min <py>)
    (make vertical-s ^net-name <nn> ^min <min> ^max <py> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p20
    (context ^present separate)
    { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (horizontal-s ^net-name <nn> ^min <com> ^max <hmax> ^com <min>)
    (pin ^net-name <nn> ^pin-y { <py> > <min> < <max> } ^pin-channel-side left)
  - (pin ^net-name <nn> ^pin-x < <com> ^pin-y { < <py> >= <min> })
  - (pin ^net-name <nn> ^pin-x <com> ^pin-channel-side bottom)
  - (horizontal-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <py> })
  - (horizontal-s ^net-name <nn> ^min <hmin> ^max <com> ^com <min>)
  -->
    (modify <v> ^min <py>)
    (make vertical-s ^net-name <nn> ^min <min> ^max <py> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p21
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <min>)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x { < <px> >= <min> } ^pin-y > <com>)
  - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side left)
  - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <px> })
  - (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <min>)
  -->
    (modify <h> ^min <px>)
    (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p22
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <min>)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x { < <px> >= <min> } ^pin-y < <com>)
  - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side left)
  - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <min> < <px> })
  - (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <min>)
  -->
    (modify <h> ^min <px>)
    (make horizontal-s ^net-name <nn> ^min <min> ^max <px> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p23
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <max>)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side top)
  - (pin ^net-name <nn> ^pin-x { > <px> <= <max> } ^pin-y > <com>)
  - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side right)
  - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <px> < <max> })
  - (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <max>)
  -->
    (modify <h> ^max <px>)
    (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p24
    (context ^present separate)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <com> ^id <id>) }
    (vertical-s ^net-name <nn> ^min <com> ^max <vmax> ^com <max>)
    (pin ^net-name <nn> ^pin-x { <px> > <min> < <max> } ^pin-channel-side bottom)
  - (pin ^net-name <nn> ^pin-x { > <px> <= <max> } ^pin-y < <com>)
  - (pin ^net-name <nn> ^pin-y <com> ^pin-channel-side right)
  - (vertical-s ^net-name <nn> ^min <= <com> ^max >= <com> ^com { > <px> < <max> })
  - (vertical-s ^net-name <nn> ^min <vmin> ^max <com> ^com <max>)
  -->
    (modify <h> ^max <px>)
    (make horizontal-s ^net-name <nn> ^min <px> ^max <max> ^com <com> ^id (compute <id> + 1000) ^top-count 1 ^bot-count 1 ^difference 0 ^absolute 0 ^sum 2)
)

(p p604
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side top)
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
  - (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
)

(p p605
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side bottom)
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
  - (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side top)
  - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  -->
    (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type vertical)
)

(p p606
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side top)
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1> ^com 1)
    (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
)

(p p607
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x { <vcom> >= <min> <= <max> } ^pin-channel-side bottom)
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1> ^com <> 1)
    (horizontal-s ^net-name <bnn> ^min <= <vcom> ^max >= <vcom> ^id <> <id1>)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side top)
  - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  -->
    (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type vertical)
)

(p p608
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
    (vertical-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x <vcom> ^pin-channel-side top)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
)

(p p609
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
    (vertical-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x <vcom> ^pin-channel-side bottom)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side top)
  - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  -->
    (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type vertical)
)

(p p610
    (context ^present form-verti)
    (horizontal-s ^net-name <tnn> ^min <min> ^max <max> ^com 1 ^id <id>)
    (vertical-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
    (horizontal-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <lr> ^id <id1>)
    (last-row <lr>)
    (vertical-s ^net-name <bnn> ^com <vcom>)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-x <vcom> ^pin-channel-side top)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-x <vcom> ^pin-channel-side bottom)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type vertical)
)

(p p611
    (context ^present form-verti)
    (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y { <vcom> >= <min> <= <max> } ^pin-channel-side right)
    (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side left)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type horizontal)
)

(p p612
    (context ^present form-verti)
    (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference 0)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y { <vcom> >= <min> <= <max> } ^pin-channel-side left)
    (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^id <id1>)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side right)
  - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  -->
    (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type horizontal)
)

(p p613
    (context ^present form-verti)
    (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
    (horizontal-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
    (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y <vcom> ^pin-channel-side right)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side left)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type horizontal)
)

(p p614
    (context ^present form-verti)
    (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com <com> ^id <id> ^difference <> 0)
    (horizontal-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
    (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <com> ^id <id1>)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y <vcom> ^pin-channel-side left)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side right)
  - (constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn>)
  -->
    (make constraint ^net-name-1 <bnn> ^net-name-2 <tnn> ^pin-name-1 <bpn> ^pin-name-2 <tpn> ^seg-id-1 <id1> ^seg-id-2 <id> ^constraint-type horizontal)
)

(p p615
    (context ^present form-verti)
    (vertical-s ^net-name <tnn> ^min <min> ^max <max> ^com 1 ^id <id>)
    (horizontal-s ^net-name <tnn> ^com { <vcom> >= <min> <= <max> })
    (vertical-s ^net-name { <bnn> <> <tnn> } ^min <= <vcom> ^max >= <vcom> ^com <lc> ^id <id1>)
    (last-col <lc>)
    (horizontal-s ^net-name <bnn> ^com <vcom>)
    (pin ^net-name <tnn> ^pin-name <tpn> ^pin-y <vcom> ^pin-channel-side right)
    (pin ^net-name <bnn> ^pin-name <bpn> ^pin-y <vcom> ^pin-channel-side left)
  - (constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  -->
    (make constraint ^net-name-1 <tnn> ^net-name-2 <bnn> ^pin-name-1 <tpn> ^pin-name-2 <bpn> ^seg-id-1 <id> ^seg-id-2 <id1> ^constraint-type horizontal)
)

(p p616
    (context ^present form-verti)
    (constraint ^constraint-type vertical ^net-name-1 <tnn> ^net-name-2 <bnn> ^seg-id-1 <tid> ^seg-id-2 <bid>)
    (constraint ^constraint-type vertical ^net-name-1 <nn1> ^net-name-2 <tnn> ^seg-id-1 <id1> ^seg-id-2 <tid2>)
  - (vertical-cycle <tnn> <tid> <tid2>)
  -->
    (make vertical-cycle <tnn> <tid> <tid2>)
)

(p p617
    (context ^present form-verti)
    (constraint ^constraint-type horizontal ^net-name-1 <tnn> ^net-name-2 <bnn> ^seg-id-1 <tid> ^seg-id-2 <bid>)
    (constraint ^constraint-type horizontal ^net-name-1 <nn1> ^net-name-2 <tnn> ^seg-id-1 <id1> ^seg-id-2 <tid2>)
  - (horizontal-cycle <tnn> <tid> <tid2>)
  -->
    (make horizontal-cycle <tnn> <tid> <tid2>)
)

(p p618
    (context ^present remove-cycle)
    { <h> (horizontal-cycle <nn>) }
  - (constraint ^constraint-type horizontal ^net-name-1 <nn>)
  - (constraint ^constraint-type horizontal ^net-name-2 <nn>)
  -->
    (remove <h>)
)

(p p619
    (context ^present remove-cycle)
    { <h> (horizontal-cycle <nn>) }
  - (constraint ^constraint-type horizontal ^net-name-2 <nn>)
  -->
    (remove <h>)
)

(p p620
    (context ^present remove-cycle)
    { <h> (horizontal-cycle <nn>) }
  - (constraint ^constraint-type horizontal ^net-name-1 <nn>)
  -->
    (remove <h>)
)

(p p621
    (context ^present remove-cycle)
    { <h> (vertical-cycle <nn>) }
  - (constraint ^constraint-type vertical ^net-name-1 <nn>)
  - (constraint ^constraint-type vertical ^net-name-2 <nn>)
  -->
    (remove <h>)
)

(p p622
    (context ^present remove-cycle)
    { <h> (vertical-cycle <nn>) }
  - (constraint ^constraint-type vertical ^net-name-2 <nn>)
  -->
    (remove <h>)
)

(p p623
    (context ^present remove-cycle)
    { <h> (vertical-cycle <nn>) }
  - (constraint ^constraint-type vertical ^net-name-1 <nn>)
  -->
    (remove <h>)
)

(p p624
    { <c> (context ^present remove-cycle) }
  -->
    (remove <c>)
)

(p p625
    (context ^present remove-cycle)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <max>)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^max <max>)
)

(p p626
    (context ^present remove-cycle)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <min>)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^min <min>)
)

(p p627
    (context ^present remove-cycle)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <min1> ^max <min> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side bottom)
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side top)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <max>)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <max> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^max <max>)
)

(p p628
    (context ^present remove-cycle)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^id <id1>) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <max1> ^id <id2>) }
    (pin ^net-name <nn> ^pin-x <max> ^pin-channel-side top)
    (pin ^net-name <nn> ^pin-x <min> ^pin-channel-side bottom)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <min>)
  - (pin ^net-name <nn> ^pin-x { < <max> > <min> })
    (last-row <lr>)
  - (horizontal-s ^net-name <nn> ^id <id1> ^com { > 1 < <lr> })
  - (horizontal-s ^net-name <nn> ^id <id2> ^com { > 1 < <lr> })
  -->
    (remove <h1>)
    (make vertical-s ^net-name <nn> ^min 1 ^max <lr> ^com <min> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
    (modify <h2> ^min <min>)
)

(p p629
    (context ^present remove-cycle)
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com 1)
    (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from south)
  - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y < <gy>)
  - (vertical-s ^net-name <nn> ^min 1 ^max > <gy> ^com <gx>)
  -->
    (make vertical-s ^net-name <nn> ^min 1 ^max (compute <gy> + 1) ^com <gx> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
)

(p p630
    (context ^present remove-cycle)
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com 1)
    (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from south)
  - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y <= <gy>)
    { <v> (vertical-s ^net-name <nn> ^min 1 ^max <= <gy> ^com <gx>) }
  -->
    (modify <v> ^max (compute <gy> + 1))
)

(p p631
    (context ^present remove-cycle)
    (last-row <lr>)
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com <lr>)
    (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from north)
  - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y > <gy>)
  - (vertical-s ^net-name <nn> ^min < <gy> ^max <lr> ^com <gx>)
  -->
    (make vertical-s ^net-name <nn> ^min (compute <gy> - 1) ^max <lr> ^com <gx> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
)

(p p632
    (context ^present remove-cycle)
    (last-row <lr>)
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^com <lr>)
    (ff ^net-name <nn> ^grid-x { <gx> >= <hmin> <= <hmax> } ^grid-y <gy> ^came-from north)
  - (ff ^net-name <nn> ^grid-x <> <gx> ^grid-y >= <gy>)
    { <v> (vertical-s ^net-name <nn> ^min >= <gy> ^max <lr> ^com <gx>) }
  -->
    (modify <v> ^min (compute <gy> - 1))
)

(p p633
    (context ^present remove-cycle)
    (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com 1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from west)
  - (ff ^net-name <nn> ^grid-x < <gx> ^grid-y <> <gy>)
  - (horizontal-s ^net-name <nn> ^min 1 ^max > <gx> ^com <gy>)
  -->
    (make horizontal-s ^net-name <nn> ^min 1 ^max (compute <gx> + 1) ^com <gy> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
)

(p p634
    (context ^present remove-cycle)
    (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com 1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from west)
  - (ff ^net-name <nn> ^grid-x <= <gx> ^grid-y <> <gy>)
    { <h> (horizontal-s ^net-name <nn> ^min 1 ^max <= <gx> ^com <gy>) }
  -->
    (modify <h> ^max (compute <gx> + 1))
)

(p p635
    (context ^present remove-cycle)
    (last-col <lc>)
    (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com <lc>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from east)
  - (ff ^net-name <nn> ^grid-x > <gx> ^grid-y <> <gy>)
  - (horizontal-s ^net-name <nn> ^min < <gx> ^max <lc> ^com <gy>)
  -->
    (make horizontal-s ^net-name <nn> ^min (compute <gx> - 1) ^max <lc> ^com <gy> ^id (genatom) ^difference 0 ^absolute 0 ^sum 2)
)

(p p636
    (context ^present remove-cycle)
    (last-col <lc>)
    (vertical-s ^net-name <nn> ^min <vmin> ^max <vmax> ^com <lc>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy> >= <vmin> <= <vmax> } ^came-from east)
  - (ff ^net-name <nn> ^grid-x >= <gx> ^grid-y <> <gy>)
    { <h> (horizontal-s ^net-name <nn> ^min >= <gx> ^max <lc> ^com <gy>) }
  -->
    (modify <h> ^min (compute <gx> - 1))
)

(p p637
    (context ^present remove-cycle)
    (last-row <lr>)
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
    { <v> (vertical-s ^net-name <nn> ^min 1 ^max { <lr> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
    (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side top)
    (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from south)
  -->
    (modify <v> ^min (compute <lr> - 1))
)

(p p638
    (context ^present remove-cycle)
    (last-row <lr>)
    (horizontal-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
    { <v> (vertical-s ^net-name <nn> ^min 1 ^max { <lr> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
    (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side bottom)
    (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from north)
  -->
    (modify <v> ^max 2)
)

(p p639
    (context ^present remove-cycle)
    (last-col <lc>)
    (vertical-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
    { <v> (horizontal-s ^net-name <nn> ^min 1 ^max { <lc> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
    (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side right)
    (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from west)
  -->
    (modify <v> ^min (compute <lc> - 1))
)

(p p640
    (context ^present remove-cycle)
    (last-col <lc>)
    (vertical-s ^net-name <nn> ^min <hmin> ^max <hmax> ^sum 2 ^difference 0)
    { <v> (horizontal-s ^net-name <nn> ^min 1 ^max { <lc> <> 2 } ^com { <vcom> >= <hmin> <= <hmax> }) }
    (pin ^net-name <nn> ^pin-x <vcom> ^pin-channel-side left)
    (ff ^net-name <> <nn> ^grid-x <vcom> ^came-from east)
  -->
    (modify <v> ^max 2)
)

(p p472
    (context ^present partial-route)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north) }
    { <vs> (vertical-s ^net-name <nn> ^min <gy1> ^max <gy> ^com <gx>) }
    { <ff2> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1> ^came-from south) }
    { <v> (vertical ^net-name nil ^min <gy1> ^max <gy> ^com <gx> ^layer <lay>) }
  -->
    (modify <v> ^net-name <nn> ^pin-name <pn>)
    (remove <ff1> <ff2> <vs>)
)

(p p473
    (context ^present partial-route)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from east) }
    { <vs> (horizontal-s ^net-name <nn> ^min <gx1> ^max <gx> ^com <gy>) }
    { <ff2> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn1> ^came-from west) }
    { <v> (horizontal ^net-name nil ^min <gx1> ^max <gx> ^com <gy> ^layer <lay>) }
  -->
    (modify <v> ^net-name <nn> ^pin-name <pn>)
    (remove <ff1> <ff2> <vs>)
)

(p p474
    (context ^present partial-route)
    { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
    { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <min> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from east)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from north)
  -->
    (remove <v2>)
    (modify <h> ^com <vmin>)
    (modify <v1> ^min <vmin>)
)

(p p475
    (context ^present partial-route)
    { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <min> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from east)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from north)
  -->
    (modify <v2> ^com <vcom>)
    (modify <h> ^com <vmin>)
)

(p p476
    (context ^present partial-route)
    { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
    { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <min> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from west)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from north)
  -->
    (remove <v2>)
    (modify <h> ^com <vmin>)
    (modify <v1> ^min <vmin>)
)

(p p477
    (context ^present partial-route)
    { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <min> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <vmin> ^max <min> ^com <hmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from west)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from north)
  -->
    (modify <v2> ^com <vcom>)
    (modify <h> ^com <vmin>)
)

(p p478
    (context ^present partial-route)
    { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
    { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <max> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from east)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from south)
  -->
    (remove <v2>)
    (modify <h> ^com <vmax>)
    (modify <v1> ^max <vmax>)
)

(p p479
    (context ^present partial-route)
    { <h> (horizontal-s ^net-name <nn> ^min <vcom> ^max <hmax> ^com <max> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from east)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from south)
  -->
    (modify <v2> ^com <vcom>)
    (modify <h> ^com <vmax>)
)

(p p480
    (context ^present partial-route)
    { <v1> (vertical-s ^net-name <nn> ^min <min> ^max <max> ^com <vcom>) }
    { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <max> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from west)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <min> ^came-from south)
  -->
    (remove <v2>)
    (modify <h> ^com <vmax>)
    (modify <v1> ^max <vmax>)
)

(p p481
    (context ^present partial-route)
    { <h> (horizontal-s ^net-name <nn> ^min <hmin> ^max <vcom> ^com <max> ^top-count 1 ^bot-count 1) }
    { <v2> (vertical-s ^net-name <nn> ^min <max> ^max <vmax> ^com <hmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from west)
    (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <max> ^came-from south)
  -->
    (modify <v2> ^com <vcom>)
    (modify <h> ^com <vmax>)
)

(p p482
    (context ^present partial-route)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
    { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <min> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from north)
    (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from east)
  -->
    (remove <h2>)
    (modify <v> ^com <hmin>)
    (modify <h1> ^min <hmin>)
)

(p p483
    (context ^present partial-route)
    { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <min> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmax> ^came-from north)
    (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from east)
  -->
    (modify <h2> ^com <hcom>)
    (modify <v> ^com <hmin>)
)

(p p484
    (context ^present partial-route)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
    { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <max> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from north)
    (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from west)
  -->
    (remove <h2>)
    (modify <v> ^com <hmax>)
    (modify <h1> ^max <hmax>)
)

(p p485
    (context ^present partial-route)
    { <v> (vertical-s ^net-name <nn> ^min <hcom> ^max <vmax> ^com <max> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmax> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmax> ^came-from north)
    (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from west)
  -->
    (modify <h2> ^com <hcom>)
    (modify <v> ^com <hmax>)
)

(p p486
    (context ^present partial-route)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
    { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <min> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from south)
    (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from east)
  -->
    (remove <h2>)
    (modify <v> ^com <hmin>)
    (modify <h1> ^min <hmin>)
)

(p p487
    (context ^present partial-route)
    { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <min> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <hmin> ^max <min> ^com <vmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <vmin> ^came-from south)
    (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from east)
  -->
    (modify <h2> ^com <hcom>)
    (modify <v> ^com <hmin>)
)

(p p488
    (context ^present partial-route)
    { <h1> (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^com <hcom>) }
    { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <max> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from south)
    (ff ^net-name <nn> ^grid-x <min> ^grid-y <hcom> ^came-from west)
  -->
    (remove <h2>)
    (modify <v> ^com <hmax>)
    (modify <h1> ^max <hmax>)
)

(p p489
    (context ^present partial-route)
    { <v> (vertical-s ^net-name <nn> ^min <vmin> ^max <hcom> ^com <max> ^top-count 1 ^bot-count 1) }
    { <h2> (horizontal-s ^net-name <nn> ^min <max> ^max <hmax> ^com <vmin> ^top-count 1 ^bot-count 1) }
    (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <vmin> ^came-from south)
    (ff ^net-name <nn> ^grid-x <max> ^grid-y <hcom> ^came-from west)
  -->
    (modify <h2> ^com <hcom>)
    (modify <v> ^com <hmax>)
)

(p p186
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^difference { <d> < 0 })
  - (horizontal-s ^difference < <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from south) }
  - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y < <gy1>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y <gy1>)
  - (horizontal ^net-name nil ^min < <gx2> ^max > <gx1> ^com <gy1>)
  - (horizontal ^net-name nil ^min <gx2> ^max > <gx1> ^com <gy1> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx2> ^max <gx1> ^com <gy1> ^max-net nil)
    { <v> (vertical ^net-name nil ^max { <max> > <gy1> } ^min { < <max> <= <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  - (extended-ff <nn> bottom)
  - (vertical-cycle <nn>)
  -->
    (modify <v> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy1> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p187
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^difference { <d> < 0 })
  - (horizontal-s ^difference < <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from south) }
  - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y < <gy1>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y <gy1>)
  - (horizontal ^net-name nil ^min < <gx1> ^max > <gx2> ^com <gy1>)
  - (horizontal ^net-name nil ^min <gx1> ^max > <gx2> ^com <gy1> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx1> ^max <gx2> ^com <gy1> ^max-net nil)
    { <v> (vertical ^net-name nil ^max { <max> > <gy1> } ^min { < <max> <= <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  - (extended-ff <nn> bottom)
  - (vertical-cycle <nn>)
  -->
    (modify <v> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy1> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p188
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^difference { <d> < 0 })
  - (horizontal-s ^difference < <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from south) }
    (vertical-s ^net-name <nn> ^min <= <gy1> ^max > <gy1> ^com <gx1>)
  - (ff ^net-name <nn> ^grid-x <> <gx1> ^grid-y <= <gy1>)
    { <v> (vertical ^net-name nil ^max { <max> > <gy1> } ^min { < <max> <= <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
  - (vertical-s ^net-name <> <nn> ^min <= <gy2> ^max >= <gy2> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  - (extended-ff <nn> bottom)
  - (vertical-cycle <nn>)
  -->
    (make extended-ff <nn> bottom)
    (modify <v> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy1> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p189
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^difference { <d> > 0 })
  - (horizontal-s ^difference > <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from north) }
  - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y > <gy1>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y <gy1>)
  - (horizontal ^net-name nil ^min < <gx2> ^max > <gx1> ^com <gy1>)
  - (horizontal ^net-name nil ^min <gx2> ^max > <gx1> ^com <gy1> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx2> ^max <gx1> ^com <gy1> ^max-net nil)
    { <v> (vertical ^net-name nil ^max { <max> >= <gy1> } ^min { < <max> < <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy1> ^como <gy2>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  - (extended-ff <nn> top)
  - (vertical-cycle <nn>)
  -->
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy1> ^min <gy2> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p190
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^difference { <d> > 0 })
  - (horizontal-s ^difference > <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from north) }
  - (ff ^net-name <nn> ^grid-x <garb1> ^grid-y > <gy1>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y <gy1>)
  - (horizontal ^net-name nil ^min < <gx1> ^max > <gx2> ^com <gy1>)
  - (horizontal ^net-name nil ^min <gx1> ^max > <gx2> ^com <gy1> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx1> ^max <gx2> ^com <gy1> ^max-net nil)
    { <v> (vertical ^net-name nil ^max { <max> >= <gy1> } ^min { < <max> < <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy1> ^como <gy2>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  - (extended-ff <nn> top)
  - (vertical-cycle <nn>)
  -->
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy1> ^min <gy2> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p191
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^difference { <d> > 0 })
  - (horizontal-s ^difference > <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from north) }
    (vertical-s ^net-name <nn> ^min < <gy1> ^max >= <gy1> ^com <gx1>)
  - (ff ^net-name <nn> ^grid-x <> <gx1> ^grid-y >= <gy1>)
    { <v> (vertical ^net-name nil ^max { <max> >= <gy1> } ^min { < <max> < <gy1> } ^com <gx1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy1> ^como <gy2>)
  - (vertical-s ^net-name <> <nn> ^min <= <gy2> ^max >= <gy2> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx1> ^layer <lay1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx1> ^max >= <gx1> ^com <gy2> ^layer <lay1>)
  - (extended-ff <nn> top)
  - (vertical-cycle <nn>)
  -->
    (make extended-ff <nn> top)
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy1> ^min <gy2> ^layer <lay1> ^com <gx1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p192
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (horizontal-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <max> ^grid-y <gy> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
  - (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com <gy>)
    { <v> (vertical ^net-name nil ^max { <vmax> > <gy> } ^min { < <vmax> <= <gy> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <max> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gy2> ^layer <lay>)
  - (vertical-cycle <nn>)
    (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com > <gy>)
  -->
    (modify <v> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p193
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (horizontal-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <min> ^grid-y <gy> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
  - (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com <gy>)
    { <v> (vertical ^net-name nil ^max { <vmax> > <gy> } ^min { < <vmax> <= <gy> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <min> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gy2> ^layer <lay>)
  - (vertical-cycle <nn>)
    (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com > <gy>)
  -->
    (modify <v> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p194
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (horizontal-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <max> ^grid-y <gy> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
  - (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com <gy>)
    { <v> (vertical ^net-name nil ^max { <vmax> >= <gy> } ^min { < <vmax> < <gy> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy> ^como <gy2>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <max> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gy2> ^layer <lay>)
  - (vertical-cycle <nn>)
    (horizontal ^net-name nil ^min < <max> ^max >= <max> ^com < <gy>)
  -->
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p195
    (context ^present extend-ff)
    (horizontal-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (horizontal-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <min> ^grid-y <gy> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
  - (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com <gy>)
    { <v> (vertical ^net-name nil ^max { <vmax> >= <gy> } ^min { < <vmax> < <gy> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction row ^coordinate <gy> ^como <gy2>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <min> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gy2> ^layer <lay>)
  - (vertical-cycle <nn>)
    (horizontal ^net-name nil ^min <= <min> ^max > <min> ^com < <gy>)
  -->
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
)

(p p196
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^difference { <d> < 0 })
  - (vertical-s ^difference < <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from west) }
  - (ff ^net-name <nn> ^grid-x < <gx1> ^grid-y <garb1>)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> < <gy1> })
  - (vertical ^net-name nil ^min < <gy2> ^max > <gy1> ^com <gx1>)
  - (vertical ^net-name nil ^min <gy2> ^max > <gy1> ^com <gx1> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy2> ^max <gy1> ^com <gx1> ^max-net nil)
    { <v> (horizontal ^net-name nil ^max { <max> > <gx1> } ^min { < <max> <= <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  - (extended-ff <nn> left)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx2> ^min <gx1> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p197
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^difference { <d> < 0 })
  - (vertical-s ^difference < <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from west) }
  - (ff ^net-name <nn> ^grid-x < <gx1> ^grid-y <garb1>)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> > <gy1> })
  - (vertical ^net-name nil ^min < <gy1> ^max > <gy2> ^com <gx1>)
  - (vertical ^net-name nil ^min <gy1> ^max > <gy2> ^com <gx1> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy1> ^max <gy2> ^com <gx1> ^max-net nil)
    { <v> (horizontal ^net-name nil ^max { <max> > <gx1> } ^min { < <max> <= <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  - (extended-ff <nn> left)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx2> ^min <gx1> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p198
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^difference { <d> < 0 })
  - (vertical-s ^difference < <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from west) }
    (horizontal-s ^net-name <nn> ^min <= <gx1> ^max > <gx1> ^com <gy1>)
  - (ff ^net-name <nn> ^grid-x <= <gx1> ^grid-y <> <gy1>)
    { <v> (horizontal ^net-name nil ^max { <max> > <gx1> } ^min { < <max> <= <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
  - (horizontal-s ^net-name <> <nn> ^min <= <gx2> ^max >= <gx2> ^com <gy1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  - (extended-ff <nn> left)
  - (horizontal-cycle <nn>)
  -->
    (make extended-ff <nn> left)
    (modify <v> ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx2> ^min <gx1> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p199
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^difference { <d> > 0 })
  - (vertical-s ^difference > <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from east) }
  - (ff ^net-name <nn> ^grid-x > <gx1> ^grid-y <garb1>)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> < <gy1> })
  - (vertical ^net-name nil ^min < <gy2> ^max > <gy1> ^com <gx1>)
  - (vertical ^net-name nil ^min <gy2> ^max > <gy1> ^com <gx1> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy2> ^max <gy1> ^com <gx1> ^max-net nil)
    { <v> (horizontal ^net-name nil ^max { <max> >= <gx1> } ^min { < <max> < <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx1> ^como <gx2>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  - (extended-ff <nn> right)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^max <gx2> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx1> ^min <gx2> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p200
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^difference { <d> > 0 })
  - (vertical-s ^difference > <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from east) }
  - (ff ^net-name <nn> ^grid-x > <gx1> ^grid-y <gy1>)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y { <gy2> > <gy1> })
  - (vertical ^net-name nil ^min < <gy1> ^max > <gy2> ^com <gx1>)
  - (vertical ^net-name nil ^min <gy1> ^max > <gy2> ^com <gx1> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy1> ^max <gy2> ^com <gx1> ^max-net nil)
    { <v> (horizontal ^net-name nil ^max { <max> >= <gx1> } ^min { < <max> < <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx1> ^como <gx2>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  - (extended-ff <nn> right)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^max <gx2> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx1> ^min <gx2> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p201
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^difference { <d> > 0 })
  - (vertical-s ^difference > <d>)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn> ^came-from east) }
    (horizontal-s ^net-name <nn> ^min < <gx1> ^max >= <gx1> ^com <gy1>)
  - (ff ^net-name <nn> ^grid-x >= <gx1> ^grid-y <> <gy1>)
    { <v> (horizontal ^net-name nil ^max { <max> >= <gx1> } ^min { < <max> < <gx1> } ^com <gy1> ^layer <lay1> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx1> ^como <gx2>)
  - (horizontal-s ^net-name <> <nn> ^min <= <gx2> ^max >= <gx2> ^com <gy1>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy1> ^layer <lay1>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy1> ^max >= <gy1> ^com <gx2> ^layer <lay1>)
  - (extended-ff <nn> right)
  - (horizontal-cycle <nn>)
  -->
    (make extended-ff <nn> right)
    (modify <v> ^max <gx2> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx1> ^min <gx2> ^layer <lay1> ^com <gy1> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p202
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (vertical-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <max> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
  - (vertical ^net-name nil ^min < <max> ^max >= <max> ^com <gx>)
    { <v> (horizontal ^net-name nil ^max { <vmax> > <gx> } ^min { < <vmax> <= <gx> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <max> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gx2> ^layer <lay>)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx2> ^min <gx> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p203
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (vertical-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <min> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
  - (vertical ^net-name nil ^min <= <min> ^max > <min> ^com <gx>)
    { <v> (horizontal ^net-name nil ^max { <vmax> > <gx> } ^min { < <vmax> <= <gx> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <min> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gx2> ^layer <lay>)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx2> ^min <gx> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p204
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (vertical-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <max> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
  - (vertical ^net-name nil ^min < <max> ^max >= <max> ^com <gx>)
    { <v> (horizontal ^net-name nil ^max { <vmax> >= <gx> } ^min { < <vmax> < <gx> } ^com <max> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx> ^como <gx2>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <max> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <max> ^max >= <max> ^com <gx2> ^layer <lay>)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^max <gx2> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx> ^min <gx2> ^layer <lay> ^com <max> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p205
    (context ^present extend-ff)
    (vertical-s ^net-name <nn> ^min <min> ^max <max> ^difference 0)
  - (vertical-s ^difference <> 0)
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <min> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
  - (vertical ^net-name nil ^min <= <min> ^max > <min> ^com <gx>)
    { <v> (horizontal ^net-name nil ^max { <vmax> >= <gx> } ^min { < <vmax> < <gx> } ^com <min> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (congestion ^direction col ^coordinate <gx> ^como <gx2>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <min> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <min> ^max >= <min> ^com <gx2> ^layer <lay>)
  - (horizontal-cycle <nn>)
  -->
    (modify <v> ^max <gx2> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx> ^min <gx2> ^layer <lay> ^com <min> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
)

(p p206
    { <c> (context ^present extend-h-v-s) }
  -->
    (modify <c> ^present loose-constraint0)
)

(p p207
    { <c> (context ^present extend-h-v-s) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
    (horizontal-s ^net-name <nn> ^min <= <gx> ^max { <hmaxs> > <gx> } ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^com <gy>)
    (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { <vcoms> > <gx> <= <hmaxs> })
  - (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { >= <gx> < <vcoms> })
    { <h> (horizontal ^net-name nil ^min <gx> ^max { <hmax> >= <vcoms> } ^com <gy> ^layer <lay>) }
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <vcoms> ^layer <lay>)
  -->
    (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <vcoms>)
    (modify <h> ^min <vcoms> ^min-net <nn>)
    (modify <ff> ^grid-x <vcoms> ^can-chng-layer nil)
    (modify <c> ^present propagate-constraint)
)

(p p208
    { <c> (context ^present extend-h-v-s) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
    (horizontal-s ^net-name <nn> ^min { <hmins> < <gx> } ^max >= <gx> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^com <gy>)
    (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { <vcoms> < <gx> >= <hmins> })
  - (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy> ^com { <= <gx> > <vcoms> })
    { <h> (horizontal ^net-name nil ^min { <hmin> <= <vcoms> } ^max <gx> ^com <gy> ^layer <lay>) }
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <vcoms> ^layer <lay>)
  -->
    (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <vcoms>)
    (modify <h> ^max <vcoms> ^max-net <nn>)
    (modify <ff> ^grid-x <vcoms> ^can-chng-layer nil)
    (modify <c> ^present propagate-constraint)
)

(p p209
    { <c> (context ^present extend-h-v-s) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
    (vertical-s ^net-name <nn> ^min <= <gy> ^max { <vmaxs> > <gy> } ^com <gx>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <gx>)
    (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { <hcoms> > <gy> <= <vmaxs> })
  - (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { >= <gy> < <hcoms> })
    { <v> (vertical ^net-name nil ^min <gy> ^max { <vmax> >= <hcoms> } ^com <gx> ^layer <lay>) }
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <hcoms> ^layer <lay>)
  -->
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <hcoms>)
    (modify <v> ^min <hcoms> ^min-net <nn>)
    (modify <ff> ^grid-y <hcoms> ^can-chng-layer nil)
    (modify <c> ^present propagate-constraint)
)

(p p210
    { <c> (context ^present extend-h-v-s) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
    (vertical-s ^net-name <nn> ^min { <vmins> < <gy> } ^max >= <gy> ^com <gx>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^com <gx>)
    (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { <hcoms> < <gy> >= <vmins> })
  - (horizontal-s ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { <= <gy> > <hcoms> })
    { <v> (vertical ^net-name nil ^min { <vmin> <= <hcoms> } ^max <gy> ^com <gx> ^layer <lay>) }
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <hcoms> ^layer <lay>)
  -->
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <hcoms>)
    (modify <v> ^max <hcoms> ^max-net <nn>)
    (modify <ff> ^grid-y <hcoms> ^can-chng-layer nil)
    (modify <c> ^present propagate-constraint)
)

(p p29
    (goal cleanup <c>)
    (<c>)
  -->
    (remove 2)
)

(p p30
    (goal cleanup <c>)
  - (<c>)
  -->
    (remove 1)
)

(p p31
    (goal cleanup)
    (verti-has-loop)
  -->
    (remove 2)
)

(p p83
    (context ^present propagate-constraint)
  -->
    (remove 1)
    (make context ^previous propagate-constraint)
    (make context ^present remove-cycle)
)

(p p84
    (context ^present << propagate-constraint extend-pins move-ff >>)
    (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com> ^layer <lay> ^compo <cpo> ^commo <egarb1>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <min2> <= <max1> } ^max { <max2> >= <min1> } ^com <cpo> ^layer <lay> ^compo <garb1> ^commo <egarb2>)
    { <v1> (vertical ^net-name nil ^min { <min3> <= <com> } ^max { <max3> >= <cpo> > <min3> } ^com { <com2> <= <max1> >= <min1> <= <max2> >= <min2> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  -->
    (make vertical ^min <min3> ^max <com> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <nn1> ^min-net <mnn>)
    (make vertical ^min <cpo> ^max <max3> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <nn2> ^max-net <man>)
    (remove <v1>)
)

(p p85
    (context ^present << propagate-constraint extend-pins >>)
    (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <com> ^layer <lay> ^compo <egarb2> ^commo <gy>)
    { <v1> (vertical ^net-name nil ^min { <min3> <= <gy> } ^max { <max3> >= <com> > <min3> } ^com <gx> ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  -->
    (make vertical ^min <min3> ^max <gy> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <nn1> ^min-net <mnn>)
    (make vertical ^min <com> ^max <max3> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <nn2> ^max-net <man>)
    (remove <v1>)
)

(p p86
    (context ^present << propagate-constraint extend-pins >>)
    (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <com> ^layer <lay> ^compo <gy> ^commo <egarb2>)
    { <v1> (vertical ^net-name nil ^min { <min3> <= <com> } ^max { <max3> >= <gy> > <min3> } ^com <gx> ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  -->
    (make vertical ^min <min3> ^max <com> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <nn2> ^min-net <mnn>)
    (make vertical ^min <gy> ^max <max3> ^com <gx> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <nn1> ^max-net <man>)
    (remove <v1>)
)

(p p87
    (context ^present propagate-constraint)
    (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <max1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min <min2> ^max <gar2> ^com <com> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <min2> > <max1> } ^com <com> ^layer <lay> ^compo <egarb5> ^commo <egarb6>) }
  - (vertical ^com { > <max1> < <min2> })
  -->
    (remove <h1>)
)

(p p88
    (context ^present << propagate-constraint extend-pins move-ff >>)
    (vertical ^status nil ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com> ^layer <lay> ^compo <cpo> ^commo <egarb1>)
    (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <min2> <= <max1> } ^max { <max2> >= <min1> } ^com <cpo> ^layer <lay> ^compo <garb1> ^compo <egarb2>)
    { <h1> (horizontal ^net-name nil ^min { <min3> <= <com> } ^max { <max3> >= <cpo> } ^com { <com2> <= <max1> >= <min1> <= <max2> >= <min2> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <mnn> ^max-net <man>) }
  -->
    (make horizontal ^min <min3> ^max <com> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^min-net <mnn> ^max-net <nn1>)
    (make horizontal ^min <cpo> ^max <max3> ^com <com2> ^compo <cpo2> ^commo <cmo2> ^layer <lay> ^max-net <man> ^min-net <nn2>)
    (remove <h1>)
)

(p p89
    (context ^present propagate-constraint)
    (vertical ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <max1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min <min2> ^max <garb2> ^com <com> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
  - (horizontal ^com { > <max1> < <min2> })
    { <v1> (vertical ^net-name nil ^min <max1> ^max { <min2> > <max1> } ^com <com> ^layer <lay> ^compo <egarb5> ^commo <egarb6>) }
  -->
    (remove <v1>)
)

(p p90
    (context ^present propagate-constraint)
    (vertical ^status nil ^net-name { <nn1> <> nil } ^min <vmin> ^max <garb1> ^com <vcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <vcom> } ^max { <garb3> >= <vcom> } ^com <hcom> ^layer <lay> ^compo <vmin> ^commo <garb5>)
    { <v1> (vertical ^net-name nil ^min <garb4> ^max { <vmin> > <garb4> } ^com <vcom> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  -->
    (modify <v1> ^max <hcom> ^max-net <nn2>)
)

(p p91
    (context ^present propagate-constraint)
    (vertical ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <vcom> } ^max { <garb3> >= <vcom> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <vmax>)
    { <v1> (vertical ^net-name nil ^min <vmax> ^max { <garb5> > <vmax> } ^com <vcom> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  -->
    (modify <v1> ^min <hcom> ^min-net <nn2>)
)

(p p92
    (context ^present propagate-constraint)
    (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <min> ^max <garb1> ^com <hcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <hcom> } ^max { <garb3> >= <hcom> } ^com <vcom> ^layer <lay> ^compo <min> ^commo <egarb3>)
    { <h1> (horizontal ^net-name nil ^min <garb4> ^max { <min> > <garb4> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  -->
    (modify <h1> ^max <vcom> ^max-net <nn2>)
)

(p p93
    (context ^present propagate-constraint)
    (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <garb1> ^max <max> ^com <hcom> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (vertical ^status nil ^net-name { <nn2> <> <nn1> <> nil } ^min { <garb2> <= <hcom> } ^max { <garb3> >= <hcom> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <max>)
    { <h1> (horizontal ^net-name nil ^min <max> ^max { <garb4> > <max> } ^com <hcom> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
  -->
    (modify <h1> ^min <vcom> ^min-net <nn2>)
)

(p p94
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    { <h1> (horizontal ^net-name nil ^min <garb3> ^max { <gx> > <garb3> } ^com <gy> ^layer <lay> ^compo <egarb3> ^commo <egarb4>) }
    (vertical ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <vcom> ^layer <lay> ^compo <gx> ^commo <egarb2>)
  -->
    (modify <h1> ^max <vcom> ^max-net <nn2>)
)

(p p95
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { <garb4> > <gx> } ^com <gy> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
    (vertical ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <vcom> ^layer <lay> ^compo <garb3> ^commo <gx>)
  -->
    (modify <h1> ^min <vcom> ^min-net <nn2>)
)

(p p96
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <hcom> ^layer <lay> ^compo <gy> ^commo <garb3>)
    { <v1> (vertical ^net-name nil ^min <garb4> ^max { <gy> > <garb4> } ^com <gx> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  -->
    (modify <v1> ^max <hcom> ^max-net <nn2>)
)

(p p97
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    (horizontal ^status nil ^net-name { <nn2> <> <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <hcom> ^layer <lay> ^compo <garb3> ^commo <gy>)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { <garb4> > <gy> } ^com <gx> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  -->
    (modify <v1> ^min <hcom> ^min-net <nn2>)
)

(p p98
    (context ^present << propagate-constraint extend-pins random1 check-for-routed-net >>)
    { <h1> (horizontal ^min <min> ^max <= <min>) }
  -->
    (remove <h1>)
)

(p p99
    (context ^present << propagate-constraint extend-pins random1 check-for-routed-net >>)
    { <v1> (vertical ^min <min> ^max <= <min>) }
  -->
    (remove <v1>)
)

(p p100
    { <h1> (horizontal ^min <min> ^max <= <min>) }
  -->
    (remove <h1>)
)

(p p101
    { <v1> (vertical ^min <min> ^max <= <min>) }
  -->
    (remove <v1>)
)

(p p102
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com <min1>)
  - (horizontal ^status nil ^min < <min1> ^max >= <min1> ^com <com1>)
    (vertical ^status nil ^net-name <garb1> ^min { <vmin> <= <com1> } ^max { >= <com1> > <vmin> } ^com { <com2> > <min1> <= <max1> } ^layer <garb2> ^compo <egarb4> ^commo <egarb5>)
  - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com { < <com2> >= <min1> })
  -->
    (modify <h1> ^min <com2> ^min-net nil)
)

(p p103
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com <min1>)
  - (vertical ^status nil ^min < <min1> ^max >= <min1> ^com <com1>)
    (horizontal ^status nil ^net-name <garb1> ^min { <hmin> <= <com1> } ^max { <garb2> >= <com1> > <hmin> } ^com { <com2> > <min1> <= <max1> } ^layer <garb3> ^compo <egarb4> ^commo <egarb5>)
  - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com { < <com2> >= <min1> })
  -->
    (modify <v1> ^min <com2> ^min-net nil)
)

(p p104
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  - (horizontal ^status nil ^min <= <max1> ^max > <max1> ^com <com1>)
    (vertical ^status nil ^net-name <garb1> ^min { <vmin> <= <com1> } ^max { <garb2> >= <com1> > <vmin> } ^com { <com2> >= <min1> < <max1> } ^layer <egarb1> ^compo <egarb2> ^commo <egarb3>)
  - (vertical ^status nil ^min <= <com1> ^max >= <com1> ^com { > <com2> <= <max1> })
  -->
    (modify <h1> ^max <com2> ^max-net nil)
)

(p p105
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com <com1> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  - (vertical ^status nil ^min <= <max1> ^max > <max1> ^com <com1>)
    (horizontal ^status nil ^net-name <garb1> ^min { <hmin> <= <com1> } ^max { <garb2> >= <com1> > <hmin> } ^com { <com2> >= <min1> < <max1> } ^layer <egarb1> ^compo <egarb4> ^commo <egarb5>)
  - (horizontal ^status nil ^min <= <com1> ^max >= <com1> ^com { > <com2> <= <max1> })
  -->
    (modify <v1> ^max <com2> ^max-net nil)
)

(p p106
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <hmin> ^max { <hmax> > <hmin> } ^com <hcom> ^layer <lay> ^compo <egarb6> ^commo <egarb7>) }
  - (vertical ^com { > <hmin> < <hmax> })
  - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmax> ^layer <lay>)
  - (horizontal ^status nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <lay>)
    (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <hmax> ^layer <> <lay> ^compo <egarb4> ^commo <egarb5>)
    (vertical ^net-name { <> <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <hmin> ^layer <> <lay> ^compo <egarb2> ^commo <egarb3>)
  -->
    (remove <h1>)
)

(p p107
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <vmin> ^max { <vmax> > <vmin> } ^com <vcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  - (horizontal ^com { > <vmin> < <vmax> })
  - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmax> ^layer <lay>)
  - (vertical ^status nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <lay>)
    (horizontal ^net-name { <nn1> <> nil } ^min { <garb1> <= <vcom> } ^max { <garb2> >= <vcom> } ^com <vmax> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
    (horizontal ^net-name { <> <nn1> <> nil } ^min { <garb4> <= <vcom> } ^max { <garb5> >= <vcom> } ^com <vmin> ^layer { <garb6> <> <lay> } ^compo <egarb4> ^commo <egarb5>)
  -->
    (remove <v1>)
)

(p p108
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <hmin> ^max { <hmax> > <hmin> } ^com <hcom> ^layer <lay> ^compo <egarb6> ^commo <egarb7>) }
  - (vertical ^com { > <hmin> < <hmax> })
  - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmin> ^layer <lay>)
  - (horizontal ^status nil ^min < <hmin> ^max <hmin> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmax> ^layer <lay>)
  - (horizontal ^status nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <lay>)
    (vertical ^net-name { <nn1> <> nil } ^min { <garb1> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <hmax> ^layer { <garb3> <> <lay> } ^compo <egarb2> ^commo <egarb3>)
    (vertical ^net-name { <garb7> <> <nn1> <> nil } ^min { <gabr4> <= <hcom> } ^max { <garb5> >= <hcom> } ^com <hmin> ^layer { <garb6> <> <lay> } ^compo <egarb4> ^commo <egarb5>)
  -->
    (remove <h1>)
)

(p p109
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <vmin> ^max { <vmax> > <vmin> } ^com <vcom> ^layer <lay> ^compo <egarb6> ^commo <egarb7>) }
  - (horizontal ^com { > <vmin> < <vmax> })
  - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmin> ^layer <lay>)
  - (vertical ^status nil ^min < <vmin> ^max <vmin> ^com <vcom> ^layer <lay>)
    (horizontal ^net-name { <nn1> <> nil } ^min { <garb1> <= <vcom> } ^max { <garb2> >= <vcom> } ^com <vmax> ^layer { <garb3> <> <lay> } ^compo <egarb2> ^commo <egarb3>)
    (horizontal ^net-name { <garb7> <> <nn1> <> nil } ^min { <garb4> <= <vcom> } ^max { <garb5> >= <vcom> } ^com <vmin> ^layer { <garb6> <> <lay> } ^compo <egarb4> ^commo <egarb5>)
  -->
    (remove <v1>)
)

(p p110
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max2> ^layer <lay>)
  - (horizontal ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> < <max2> })
  - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> < <max2> } ^max-net nil)
  - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> < <max2> } ^min-net nil)
    (horizontal ^net-name { <nn> <> nil } ^min <garb1> ^max <max1> ^com <hcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
    (vertical ^net-name { <nn1> <> <nn> <> nil } ^min { <garb4> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max2> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> < <max2> })
  -->
    (modify <h1> ^max (compute <max2> - 1) ^max-net nil)
)

(p p111
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max1> ^layer <lay>)
  - (horizontal ^min < <max1> ^max <max1> ^com <hcom> ^layer <lay>)
  - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> < <max2> })
  - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> < <max2> } ^max-net nil)
  - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> < <max2> } ^min-net nil)
    (horizontal ^net-name { <nn> <> nil } ^min <max2> ^max <garb1> ^com <hcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
    (vertical ^net-name { <nn1> <> <nn> <> nil } ^min { <garb4> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max1> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> < <max2> })
  -->
    (modify <h1> ^min (compute <max1> + 1) ^min-net nil)
)

(p p112
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max2> ^layer <lay>)
  - (horizontal ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { >= <max1> < <max2> })
  - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { >= <max1> < <max2> } ^max-net nil)
  - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { >= <max1> < <max2> } ^min-net nil)
  - (horizontal ^min < <max1> ^max <max1> ^com <hcom> ^layer <lay>)
    (vertical ^net-name { <nn1> <> nil } ^min { <garb1> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max2> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { >= <max1> < <max2> })
  -->
    (modify <h1> ^max (compute <max2> - 1) ^max-net nil)
)

(p p113
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
  - (vertical ^min <= <hcom> ^max >= <hcom> ^com <max1> ^layer <lay>)
  - (horizontal ^min < <max1> ^max <max1> ^com <hcom> ^layer <lay>)
  - (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> <= <max2> })
  - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> <= <max2> } ^max-net nil)
  - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> <= <max2> } ^min-net nil)
  - (horizontal ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
    (vertical ^net-name { <nn1> <> nil } ^min { <garb1> <= <hcom> } ^max { <garb2> >= <hcom> } ^com <max1> ^layer { <garb3> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  - (vertical ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> <= <max2> })
  -->
    (modify <h1> ^min (compute <max1> + 1) ^min-net nil)
)

(p p114
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <max1> ^max { <max2> > <max1> } ^com <hcom> ^layer <lay> ^compo <egarb4> ^commo <egarb5>) }
    (vertical ^net-name { <nn> <> nil } ^min <garb1> ^max <max1> ^com <hcom> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
  - (horizontal ^min <= <hcom> ^max >= <hcom> ^com <max2> ^layer <lay>)
  - (vertical ^min <max2> ^max > <max2> ^com <hcom> ^layer <lay>)
  - (horizontal ^net-name nil ^min < <hcom> ^max > <hcom> ^com { > <max1> < <max2> })
  - (horizontal ^net-name nil ^min < <hcom> ^max <hcom> ^com { > <max1> < <max2> } ^max-net nil)
  - (horizontal ^net-name nil ^min <hcom> ^max > <hcom> ^com { > <max1> < <max2> } ^min-net nil)
    (horizontal ^net-name { <nn1> <> <nn> <> nil } ^min { <garb2> <= <hcom> } ^max { <garb3> >= <hcom> } ^com <max2> ^layer { <garb4> <> <lay> } ^compo <egarb6> ^commo <egarb7>)
  - (horizontal ^net-name { <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com { > <max1> < <max2> })
  -->
    (modify <v1> ^max (compute <max2> - 1) ^max-net nil)
)

(p p115
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^compo <gy>)
    { <v1> (vertical ^net-name nil ^min <vmin> ^max { <gy> > <vmin> } ^com <gx> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { >= <vmin> < <gy> })
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { >= <vmin> < <gy> } ^max-net nil)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { >= <vmin> < <gy> } ^min-net nil)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <vmin> < <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <vmin> ^max >= <vmin> ^com <gx>)
  -->
    (modify <v1> ^max (compute <gy> - 1) ^max-net nil)
)

(p p116
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { <max2> > <gx> } ^com <gy> ^layer <lay> ^compo <egarb2> ^commo <egarb3>) }
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> <= <max2> } ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> <= <max2> })
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> <= <max2> } ^max-net nil)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> <= <max2> })
  -->
    (modify <h1> ^min (compute <gx> + 1) ^min-net nil)
)

(p p117
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <vmin> ^max { <vmax> > <vmin> } ^com <vcom> ^layer <lay> ^min-net { <nn> <> nil }) }
    (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { <hmax> >= <vcom> > <hmin> } ^com <vmax> ^layer <lay> ^commo <vmin> ^min-net { <> <nn> <> nil } ^max-net { <> <nn> <> nil })
  - (vertical ^net-name nil ^min < <vmax> ^max > <vmax> ^com { > <hmin> < <hmax> })
  - (vertical ^net-name nil ^min < <vmax> ^max <vmax> ^com { > <hmin> < <vcom> } ^max-net nil)
  - (vertical ^net-name nil ^min < <vmax> ^max <vmax> ^com { > <vcom> < <hmax> } ^max-net nil)
  - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com { > <hmin> < <hmax> } ^min-net nil)
  - (vertical ^net-name { <nn> <> nil } ^min <= <vmax> ^max >= <vmax> ^com { > <hmin> < <hmax> })
  -->
    (remove <v1>)
)

(p p118
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  - (vertical ^net-name nil ^com <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com > <max1>)
  - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com < <min1>)
    { <h1> (horizontal ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com { >= <min1> <= <max1> } ^layer <lay2>)
    { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
    (pin ^net-name <nn2> ^pin-x < <com1>)
    (pin ^net-name <nn2> ^pin-x > <com1>)
    { <b1> (branch-no <pn>) }
  -->
    (make branch-no (compute <pn> + 1))
    (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
    (remove <b1>)
    (make horizontal ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make horizontal ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
    (make horizontal ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cmo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from east)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cpo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from west)
    (remove <h1>)
)

(p p119
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  - (vertical ^net-name nil ^com <com1>)
    { <h1> (horizontal ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com > <com2>)
  - (horizontal ^net-name nil ^min < <com1> ^max > <com1> ^com < <com2>)
    { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
    (pin ^net-name <nn2> ^pin-x < <com1>)
    (pin ^net-name <nn2> ^pin-x > <com1>)
    { <b1> (branch-no <pn>) }
  -->
    (make branch-no (compute <pn> + 1))
    (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
    (remove <b1>)
    (make horizontal ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make horizontal ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
    (make horizontal ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cmo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from east)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <cpo1> ^grid-y <com2> ^grid-layer <lay2> ^came-from west)
    (remove <h1>)
)

(p p120
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  - (horizontal ^net-name nil ^com <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com > <max1>)
  - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com < <min1>)
    { <v1> (vertical ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com { >= <min1> <= <max1> } ^layer <lay2>)
    { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  - (vertical ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
    (pin ^net-name <nn2> ^pin-y < <com1>)
    (pin ^net-name <nn2> ^pin-y > <com1>)
    { <b1> (branch-no <pn>) }
  -->
    (make branch-no (compute <pn> + 1))
    (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
    (remove <b1>)
    (make vertical ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make vertical ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
    (make vertical ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cmo1> ^grid-layer <lay2> ^came-from north)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cpo1> ^grid-layer <lay2> ^came-from south)
    (remove <v1>)
)

(p p121
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay1> ^compo <cpo1> ^commo <cmo1>)
  - (horizontal ^net-name nil ^com <com1>)
    { <v1> (vertical ^net-name nil ^min { <min2> < <com1> } ^max { <max2> > <com1> > <min2> } ^com { <com2> >= <min1> <= <max1> } ^layer { <lay2> <> <lay1> } ^compo <cpo2> ^commo <cmo2>) }
  - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com > <com2>)
  - (vertical ^net-name nil ^min < <com1> ^max > <com1> ^com < <com2>)
    { <t1> (to-be-routed ^net-name { <nn2> <> <nn1> } ^no-of-attached-pins <nap>) }
  - (vertical ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
    (pin ^net-name <nn2> ^pin-y < <com1>)
    (pin ^net-name <nn2> ^pin-y > <com1>)
    { <b1> (branch-no <pn>) }
  -->
    (make branch-no (compute <pn> + 1))
    (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
    (remove <b1>)
    (make vertical ^min <cmo1> ^max <cpo1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make vertical ^min <min2> ^max <cmo1> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
    (make vertical ^min <cpo1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cmo1> ^grid-layer <lay2> ^came-from north)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com2> ^grid-y <cpo1> ^grid-layer <lay2> ^came-from south)
    (remove <v1>)
)

(p p122
    (context ^present propagate-constraint)
    { <h1> (horizontal ^net-name nil ^min <min2> ^max { <max2> > <min2> } ^com <com2> ^layer <lay2> ^compo <cpo2> ^commo <cmo2>) }
  - (horizontal ^net-name nil ^min <= <min2> ^max >= <max2> ^com > <com2>)
  - (horizontal ^net-name nil ^min <= <min2> ^max >= <max2> ^com < <com2>)
  - (horizontal ^net-name nil ^min <= <min2> ^max >= <max2> ^com <com2> ^layer <> <lay2>)
    (congestion ^direction col ^coordinate { <x1> <= <max2> } ^como { <x2> >= <min2> })
  - (horizontal ^net-name nil ^min <= <x2> ^max >= <x1> ^com > <com2>)
  - (horizontal ^net-name nil ^min <= <x2> ^max >= <x1> ^com < <com2>)
  - (horizontal ^net-name nil ^min <= <x2> ^max >= <x1> ^com <com2> ^layer <> <lay2>)
    { <t1> (to-be-routed ^net-name <nn2> ^no-of-attached-pins <nap>) }
  - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <x2> ^max >= <x1>)
    (pin ^net-name <nn2> ^pin-x <= <x2>)
    (pin ^net-name <nn2> ^pin-x >= <x1>)
    { <b1> (branch-no <pn>) }
  - (horizontal ^net-name { <> <nn2> <> nil } ^min <= <x2> ^max >= <x2> ^com <com2> ^layer <lay2>)
  - (vertical ^net-name { <> <nn2> <> nil } ^min <= <com2> ^max >= <com2> ^com <x2> ^layer <lay2>)
  - (horizontal ^net-name { <> <nn2> <> nil } ^min <= <x1> ^max >= <x1> ^com <com2> ^layer <lay2>)
  - (vertical ^net-name { <> <nn2> <> nil } ^min <= <com2> ^max >= <com2> ^com <x1> ^layer <lay2>)
  -->
    (make branch-no (compute <pn> + 1))
    (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
    (remove <b1>)
    (make horizontal ^min <x2> ^max <x1> ^com <com2> ^layer <lay2> ^net-name <nn2> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make horizontal ^min <min2> ^max <x2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
    (make horizontal ^min <x1> ^max <max2> ^com <com2> ^layer <lay2> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <x2> ^grid-y <com2> ^grid-layer <lay2> ^came-from east)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <x1> ^grid-y <com2> ^grid-layer <lay2> ^came-from west)
    (remove <h1>)
)

(p p123
    (context ^present propagate-constraint)
    { <v1> (vertical ^net-name nil ^min <min1> ^max { <max1> > <min1> } ^com { <com1> <> 1 } ^layer <lay1> ^compo <cpo1> ^commo <cmo1> ^min-net <mnn> ^max-net <xnn>) }
  - (horizontal ^net-name nil ^min < <com1> ^max > <com1>)
    (horizontal ^net-name nil ^min <com1> ^max { <garb3> > <com1> } ^com { <bhcom> <= <max1> >= <min1> } ^layer <garb4>)
    (horizontal ^net-name nil ^min { <garb1> < <com1> } ^max <com1> ^com { <thcom> <= <max1> > <bhcom> } ^layer <garb2>)
  - (horizontal ^net-name nil ^min < <com1> ^max <com1> ^com { < <thcom> > <bhcom> })
  - (horizontal ^net-name nil ^min <com1> ^max > <com1> ^com { < <thcom> > <bhcom> })
    { <t1> (to-be-routed ^net-name <nn2> ^no-of-attached-pins <nap>) }
  - (vertical ^status nil ^net-name { <nn2> <> nil } ^com <com1>)
  - (horizontal ^status nil ^net-name { <nn2> <> nil } ^min <= <com1> ^max >= <com1>)
    (pin ^net-name <nn2> ^pin-x < <com1>)
    (pin ^net-name <nn2> ^pin-x > <com1>)
    { <b1> (branch-no <pn>) }
  -->
    (make branch-no (compute <pn> + 1))
    (modify <t1> ^no-of-attached-pins (compute <nap> - 1))
    (remove <v1> <b1>)
    (make vertical ^min <min1> ^max <bhcom> ^com <com1> ^layer <lay1> ^commo <cmo1> ^compo <cpo1> ^max-net <nn2> ^min-net <mnn>)
    (make vertical ^min <thcom> ^max <max1> ^com <com1> ^layer <lay1> ^commo <cmo1> ^compo <cpo1> ^min-net <nn2> ^max-net <xnn>)
    (make vertical ^min <bhcom> ^max <thcom> ^com <com1> ^layer <lay1> ^commo <cmo1> ^compo <cpo1> ^net-name <nn2> ^pin-name <pn>)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com1> ^grid-y <bhcom> ^grid-layer <lay1> ^came-from north)
    (make ff ^net-name <nn2> ^pin-name <pn> ^grid-x <com1> ^grid-y <thcom> ^grid-layer <lay1> ^came-from south)
)

(p p124
    (context ^present propagate-constraint)
    (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <com2> ^grid-layer <lay1> ^pin-name <egarb1>)
  - (vertical ^net-name nil ^min <= <com2> ^max >= <com2> ^com <gx>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com > <com2>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com < <com2>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min < <gx>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^com < <gx>)
    { <h1> (horizontal ^net-name nil ^min { <min2> < <gx> } ^max { <max2> >= <gx> > <min2> } ^com <com2> ^layer <lay1> ^compo <cpo2> ^commo <cmo2> ^min-net <nn2>) }
  -->
    (make horizontal ^min <min2> ^max (compute <gx> - 1) ^com <com2> ^layer <lay1> ^commo <cmo2> ^compo <cpo2> ^min-net <nn2>)
    (modify <h1> ^min <gx> ^min-net <nn1>)
)

(p p125
    (context ^present propagate-constraint)
    (ff ^net-name <nn1> ^grid-x <gx> ^grid-y <com2> ^grid-layer <lay1> ^pin-name <egarb1>)
  - (vertical ^net-name nil ^min <= <com2> ^max >= <com2> ^com <gx>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com > <com2>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com < <com2>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^max > <gx>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^com > <gx>)
    { <h1> (horizontal ^net-name nil ^min { <min2> <= <gx> } ^max { <max2> > <gx> > <min2> } ^com <com2> ^layer <lay1> ^compo <cpo2> ^commo <cmo2> ^max-net <nn2>) }
  -->
    (make horizontal ^min (compute <gx> + 1) ^max <max2> ^com <com2> ^layer <lay1> ^commo <cmo2> ^compo <cpo2> ^max-net <nn2>)
    (modify <h1> ^max <gx> ^max-net <nn1>)
)

(p p126
    (context ^present << propagate-constraint extend-total-verti >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> east ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  - (horizontal ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  -->
    (modify <h1> ^min (compute <max1> + 1) ^min-net <nn>)
    (make horizontal ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
    (modify <ff1> ^grid-x (compute <max1> + 1) ^came-from west ^can-chng-layer nil)
)

(p p127
    (context ^present << propagate-constraint extend-total-verti >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> west ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
    { <h1> (horizontal ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  - (horizontal ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  -->
    (modify <h1> ^max (compute <max1> - 1) ^max-net <nn>)
    (make horizontal ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
    (modify <ff1> ^grid-x (compute <max1> - 1) ^came-from east ^can-chng-layer nil)
)

(p p128
    (context ^present << propagate-constraint extend-total-verti >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> north ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
    { <v1> (vertical ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  - (vertical ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  -->
    (modify <v1> ^min (compute <max1> + 1) ^min-net <nn>)
    (make vertical ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
    (modify <ff1> ^grid-y (compute <max1> + 1) ^came-from south ^can-chng-layer nil)
)

(p p129
    (context ^present << propagate-constraint extend-total-verti >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> south ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
    { <v1> (vertical ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo1> ^commo <cmo1>) }
  - (vertical ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1>)
  -->
    (modify <v1> ^max (compute <max1> - 1) ^max-net <nn>)
    (make vertical ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo1> ^compo <cpo1>)
    (modify <ff1> ^grid-y (compute <max1> - 1) ^came-from north ^can-chng-layer nil)
)

(p p130
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <h1> (horizontal ^status nil ^net-name <nn> ^min <min> ^max { <max> > <min> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <gar1>) }
    { <h2> (horizontal ^status nil ^net-name <nn> ^min <max> ^max { <max2> > <max> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <nn1>) }
  -->
    (modify <h1> ^max <max2> ^max-net <nn1>)
    (remove <h2>)
)

(p p131
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <v1> (vertical ^status nil ^net-name <nn> ^min <min> ^max { <max> > <min> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <gar1>) }
    { <v2> (vertical ^status nil ^net-name <nn> ^min <max> ^max { <max2> > <max> } ^com <com> ^layer <lay> ^pin-name <pn> ^max-net <nn1>) }
  -->
    (modify <v1> ^max <max2> ^max-net <nn1>)
    (remove <v2>)
)

(p p132
    (context ^present propagate-constraint)
    { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <gar1> ^max <max> ^com <com> ^layer <lay> ^pin-name <pn>) }
    { <h2> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
    (vertical ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  -->
    (modify <h1> ^max <max2>)
    (remove <h2>)
)

(p p133
    (context ^present propagate-constraint)
    { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <gar1> ^com <com> ^layer <lay> ^pin-name <pn>) }
    { <h2> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min2> ^max <min> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
    (vertical ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  -->
    (modify <h1> ^min <min2>)
    (remove <h2>)
)

(p p134
    (context ^present propagate-constraint)
    { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <gar1> ^max <max> ^com <com> ^layer <lay> ^pin-name <pn>) }
    { <v2> (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  -->
    (modify <v1> ^max <max2>)
    (remove <v2>)
)

(p p135
    (context ^present propagate-constraint)
    { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <gar1> ^com <com> ^layer <lay> ^pin-name <pn>) }
    { <v2> (vertical ^status nil ^net-name { <nn> <> nil } ^min <min2> ^max <min> ^com <com> ^layer <lay> ^pin-name { <pn1> <> <pn> }) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^pin-name <pn1>)
  -->
    (modify <v1> ^min <min2>)
    (remove <v2>)
)

(p p136
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> east ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
    { <h1> (horizontal ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  - (horizontal ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  -->
    (modify <h1> ^min (compute <max1> + 1) ^min-net <nn>)
    (make horizontal ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
    (modify <ff1> ^grid-x (compute <max1> + 1) ^came-from west ^can-chng-layer nil)
)

(p p137
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> west ^net-name <nn> ^grid-x <max1> ^grid-y <com1> ^grid-layer <lay> ^pin-name <pn>) }
    { <h1> (horizontal ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  - (vertical ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  - (horizontal ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  -->
    (modify <h1> ^max (compute <max1> - 1) ^max-net <nn>)
    (make horizontal ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
    (modify <ff1> ^grid-x (compute <max1> - 1) ^came-from east ^can-chng-layer nil)
)

(p p138
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> north ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
    { <v1> (vertical ^net-name nil ^min <max1> ^max { <garb1> > <max1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  - (vertical ^net-name nil ^min < <max1> ^max <max1> ^com <com1> ^layer <lay>)
  -->
    (modify <v1> ^min (compute <max1> + 1) ^min-net <nn>)
    (make vertical ^min <max1> ^max (compute <max1> + 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
    (modify <ff1> ^grid-y (compute <max1> + 1) ^came-from south ^can-chng-layer nil)
)

(p p139
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <ff1> (ff ^can-chng-layer no ^came-from <> south ^net-name <nn> ^grid-x <com1> ^grid-y <max1> ^grid-layer <lay> ^pin-name <pn>) }
    { <v1> (vertical ^net-name nil ^min <garb1> ^max { <max1> > <garb1> } ^com <com1> ^layer <lay> ^compo <cpo> ^commo <cmo>) }
  - (horizontal ^net-name nil ^min <= <com1> ^max >= <com1> ^com <max1> ^layer <lay>)
  - (vertical ^net-name nil ^min <max1> ^max > <max1> ^com <com1> ^layer <lay>)
  -->
    (modify <v1> ^max (compute <max1> - 1) ^max-net <nn>)
    (make vertical ^max <max1> ^min (compute <max1> - 1) ^com <com1> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^compo <cpo> ^commo <cmo>)
    (modify <ff1> ^grid-y (compute <max1> - 1) ^came-from north ^can-chng-layer nil)
)

(p p140
    (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com> ^max >= <com> ^com { >= <min> <= <max> } ^pin-name { <pn2> <> <pn1> })
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  - (included <nn> <pn1>)
    (included <nn> <pn2>)
  -->
    (make included <nn> <pn1>)
    (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
)

(p p141
    (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com> ^max >= <com> ^com { >= <min> <= <max> } ^pin-name { <pn2> <> <pn1> })
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
    (included <nn> <pn1>)
  - (included <nn> <pn2>)
  -->
    (make included <nn> <pn2>)
    (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
)

(p p142
    (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
    (included <nn> <pn1>)
  - (included <nn> <pn2>)
  -->
    (make included <nn> <pn2>)
    (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
)

(p p143
    (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <egarb4> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  - (included <nn> <pn1>)
    (included <nn> <pn2>)
  -->
    (make included <nn> <pn1>)
    (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
)

(p p144
    (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <egarb4> ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
    (included <nn> <pn1>)
  - (included <nn> <pn2>)
  -->
    (make included <nn> <pn2>)
    (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
)

(p p145
    (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^max <max> ^com <com> ^layer <egarb1> ^compo <egarb2> ^commo <egarb3> ^pin-name <pn1>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^com <com> ^pin-name { <pn2> <> <pn1> })
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
  - (included <nn> <pn1>)
    (included <nn> <pn2>)
  -->
    (make included <nn> <pn1>)
    (modify <t1> ^no-of-attached-pins (compute <nap> + 1))
)

(p p146
    { <c1> (context ^present << propagate-constraint check-for-routed-net find-no-of-pins-on-a-row-col >>) }
    { <t1> (to-be-routed ^net-name <nn> ^no-of-attached-pins <nap>) }
    { <n1> (net ^net-name <nn> ^net-no-of-pins <nap>) }
  -->
    (remove <c1> <t1>)
    (make join-routed-net <nn>)
    (modify <n1> ^net-is-routed yes)
)

(p p147
    { <c1> (context ^present check-for-routed-net) }
  -->
    (remove <c1>)
    (make context ^present move-ff)
)

(p p148
    { <con> (context ^present move-ff) }
  -->
    (modify <con> ^present set-min-max)
)

(p p149
    { <con> (context ^present set-min-max) }
  -->
    (remove <con>)
    (make context ^present propagate-constraint)
)

(p p150
    (context ^present propagate-constraint)
    { <c1> (constraint ^pin-name-2 <pn>) }
  - (ff ^pin-name <pn>)
  -->
    (remove <c1>)
)

(p p151
    (context ^present propagate-constraint)
    { <c1> (constraint ^pin-name-1 <pn>) }
  - (ff ^pin-name <pn>)
  -->
    (remove <c1>)
)

(p p152
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (context ^present << propagate-constraint extend-total-verti move-ff >>)
    { <ff2> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb2> ^pin-name <> <pn>) }
  -->
    (remove <ff1> <ff2>)
)

(p p153
    (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>) }
    { <ff2> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2> ^grid-layer <lay> ^pin-name <> <pn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy1>)
    { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1> <ff2>)
    (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <v1> ^min <gy2> ^min-net <nn>)
    (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p154
    (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <gy2> ^layer <lay> ^compo <egarb1> ^commo <gy1> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2>)
    { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1>)
    (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <v1> ^min <gy2> ^min-net <nn>)
    (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p155
    (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2> ^grid-layer <lay> ^pin-name <pn>) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <gy1> ^layer <lay> ^compo <gy2> ^commo <egarb1> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1>)
    { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1>)
    (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <v1> ^min <gy2> ^min-net <nn>)
    (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p156
    (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
    (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> > <gx1> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^pin-name <garb1>)
    { <ff2> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> <= <max> } ^grid-y <gy> ^grid-layer <lay> ^pin-name <egarb1>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx1>)
    { <h1> (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1> <ff2>)
    (make horizontal ^min <min> ^max <gx1> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <h1> ^min <gx2> ^min-net <nn>)
    (make horizontal ^min <gx1> ^max <gx2> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p157
    (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
    (vertical ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <gx2> ^layer <lay> ^compo <egarb1> ^commo <gx1> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-x <gx2> ^grid-y <gy>)
    { <h1> (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1>)
    (make horizontal ^min <min> ^max <gx1> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <h1> ^min <gx2> ^min-net <nn>)
    (make horizontal ^min <gx1> ^max <gx2> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p158
    (context ^present << propagate-constraint extend-pins find-no-of-pins-on-a-row-col check-for-routed-net >>)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx2> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
    (vertical ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gy> } ^max { <garb2> >= <gy> } ^com <gx1> ^layer <lay> ^compo <gx2> ^commo <egarb1> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy>)
    { <h1> (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1>)
    (make horizontal ^min <min> ^max <gx1> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <h1> ^min <gx2> ^min-net <nn>)
    (make horizontal ^min <gx1> ^max <gx2> ^com <gy> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p159
    (context ^present propagate-constraint)
    { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  - (vertical ^net-name nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (vertical ^net-name <> nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  - (horizontal ^net-name <> nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { >= <gy> > <vmin> } ^com <gx> ^layer { <lay2> <> <lay> })
  -->
    (modify <ff1> ^grid-layer <lay2> ^can-chng-layer no)
)

(p p160
    (context ^present propagate-constraint)
    { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  - (vertical ^net-name nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (vertical ^net-name <> nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  - (horizontal ^net-name <> nil ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { >= <gx> > <hmin> } ^com <gy> ^layer { <lay2> <> lay> })
  -->
    (modify <ff1> ^grid-layer <lay2> ^can-chng-layer no)
)

(p p161
    (context ^present propagate-constraint)
    { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
  - (horizontal ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  - (vertical ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  -->
    (modify <ff1> ^can-chng-layer no)
)

(p p162
    (context ^present << propagate-constraint move-ff >>)
    { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
    (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
  -->
    (modify <ff1> ^can-chng-layer no)
)

(p p163
    (context ^present << propagate-constraint move-ff >>)
    { <ff1> (ff ^can-chng-layer <> no ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay>) }
    (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
  -->
    (modify <ff1> ^can-chng-layer no)
)

(p p164
    (context ^present propagate-constraint)
    { <ff1> (ff ^can-chng-layer no ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay1> ^pin-name <pn>) }
    { <ff2> (ff ^can-chng-layer no ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay2> ^pin-name <garb1>) }
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx2>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy1>)
    { <h1> (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> >= <gx1> > <hmin> } ^com <gy1> ^layer <lay1> ^compo <hcpo> ^commo <gy2> ^min-net <hnn1>) }
    { <v1> (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> >= <gy1> > <vmin> } ^com <gx2> ^layer <lay2> ^compo <gx1> ^commo <vcmo> ^min-net <vnn1>) }
  -->
    (make horizontal ^min <hmin> ^max <gx2> ^com <gy1> ^commo <gy2> ^compo <hcpo> ^layer <lay1> ^min-net <hnn1> ^max-net <nn>)
    (modify <h1> ^min <gx1> ^min-net <nn>)
    (make vertical ^min <vmin> ^max <gy2> ^com <gx2> ^commo <vcmo> ^compo <gx1> ^layer <lay2> ^min-net <vnn1> ^max-net <nn>)
    (modify <v1> ^min <gy1> ^min-net <nn>)
    (remove <ff1> <ff2>)
    (make horizontal ^min <gx2> ^max <gx1> ^com <gy1> ^commo <gy2> ^compo <hcpo> ^layer <lay1> ^net-name <nn> ^pin-name <pn>)
    (make vertical ^min <gy2> ^max <gy1> ^com <gx2> ^commo <vcmo> ^compo <gx1> ^layer <lay2> ^net-name <nn> ^pin-name <pn>)
)

(p p165
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <garb1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <v1> (vertical ^net-name nil ^min <garb2> ^max { <max> > <garb2> } ^com <com> ^layer <lay> ^max-net <> <nn>) }
  -->
    (modify <v1> ^max-net <nn>)
)

(p p166
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <min> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <v1> (vertical ^net-name nil ^min <min> ^max { <garb2> > <min> } ^com <com> ^layer <lay> ^min-net <> <nn>) }
  -->
    (modify <v1> ^min-net <nn>)
)

(p p167
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <max> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <v1> (vertical ^net-name nil ^min { <garb1> < <max> } ^max <max> ^com { >= <hmin> <= <hmax> } ^layer <lay> ^max-net <> <nn>) }
  -->
    (modify <v1> ^max-net <nn>)
)

(p p168
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <min> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <v1> (vertical ^net-name nil ^min <min> ^max { <garb1> > <min> } ^com { >= <hmin> <= <hmax> } ^layer <lay> ^min-net <> <nn>) }
  -->
    (modify <v1> ^min-net <nn>)
)

(p p169
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <garb1> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <h1> (horizontal ^net-name nil ^min <garb2> ^max { <max> > <garb2> } ^com <com> ^layer <lay> ^max-net <> <nn>) }
  -->
    (modify <h1> ^max-net <nn>)
)

(p p170
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <min> ^com <com> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <h1> (horizontal ^net-name nil ^min <min> ^max { <garb2> > <min> } ^com <com> ^layer <lay> ^min-net <> <nn>) }
  -->
    (modify <h1> ^min-net <nn>)
)

(p p171
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <max> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <h1> (horizontal ^net-name nil ^min <garb1> ^max { <max> > <garb1> } ^com { >= <vmin> <= <vmax> } ^layer <lay> ^max-net <> <nn>) }
  -->
    (modify <h1> ^max-net <nn>)
)

(p p172
    (context ^present << propagate-constraint extend-pins set-min-max >>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <min> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    { <h1> (horizontal ^net-name nil ^min <min> ^max { <garb1> > <min> } ^com { >= <vmin> <= <vmax> } ^layer <lay> ^min-net <> <nn>) }
  -->
    (modify <h1> ^min-net <nn>)
)

(p p173
    (context ^present propagate-constraint)
    { <ff1> (ff ^can-chng-layer no ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb1> <= <gx> } ^max { <garb2> >= <gx> } ^com <gy2> ^layer <garb3> ^compo <garb4> ^commo <gy1> ^pin-name <> <pn>)
  - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com <gy2>)
  - (vertical ^net-name { <> nil <> <nn> } ^min <= <gy2> ^max >= <gy2> ^com <gx>)
    { <v1> (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1>) }
  -->
    (remove <ff1>)
    (make vertical ^min <min> ^max <gy1> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (modify <v1> ^min <gy2> ^min-net <nn>)
    (make vertical ^min <gy1> ^max <gy2> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <lay> ^net-name <nn> ^pin-name <pn>)
)

(p p174
    (join-routed-net <nn>)
    { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <com> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
    { <h2> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>) }
  -->
    (modify <h1> ^max <max2>)
    (remove <h2>)
)

(p p175
    (join-routed-net <nn>)
    { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <max> ^com <com> ^layer <lay> ^compo <garb2> ^commo <garb3>) }
    { <v2> (vertical ^status nil ^net-name { <nn> <> nil } ^min <max> ^max <max2> ^com <com> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
  -->
    (modify <v1> ^max <max2>)
    (remove <v2>)
)

(p p176
    { <j1> (join-routed-net <nn>) }
  -->
    (remove <j1>)
    (make move-via <nn>)
)

(p p177
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <vlayer> ^pin-name <egarb1>)
    (horizontal ^net-name nil ^min <hmin2> ^max { <gx> > <hmin2> } ^com <vmax> ^layer <vlayer> ^compo <egarb8> ^commo <egarb9>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { < <vmax> > <gy> })
    { <v1> (vertical ^net-name nil ^min { <garb1> <= <gy> } ^max { <vmax> > <garb1> > <gy> } ^com <gx> ^layer <vlayer> ^commo <cmo> ^compo <cpo> ^max-net <maxn>) }
    (horizontal ^net-name { <> <nn> <> nil } ^min { <hmin1> <= <gx> } ^max >= <gx> ^com <vmax> ^layer <> <vlayer>)
    (vertical ^net-name { <> <nn> <> nil } ^min <= <vmax> ^max >= <vmax> ^com { <vcom> < <gx> >= <hmin1> >= <hmin2> } ^layer <vlayer>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com <vmax>)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { < <vmax> > <gy> } ^max-net nil)
  - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <gx>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmax> ^max > <vmax> ^com <gx>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <gx> ^max > <gx> ^com <vmax>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { < <vmax> > <gy> } ^min-net nil)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { < <vmax> > <gy> })
  - (vertical ^net-name nil ^min < <vmax> ^max > <vmax> ^com { < <gx> > <vcom> })
  - (vertical ^net-name nil ^min < <vmax> ^max <vmax> ^com { < <gx> > <vcom> } ^max-net nil)
  - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com { < <gx> > <vcom> } ^min-net nil)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <vmax> ^max >= <vmax> ^com { < <gx> > <vcom> })
  -->
    (make vertical ^min (compute <gy> + 1) ^max <vmax> ^com <gx> ^commo <cmo> ^compo <cpo> ^layer <vlayer> ^max-net <maxn>)
    (modify <v1> ^max <gy> ^max-net <nn>)
)

(p p178
    (context ^present propagate-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <layer> ^pin-name <pn>)
    { <h1> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <gx> > <hmin> } ^com <gy> ^layer <layer> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
    (vertical ^net-name { <> <nn> <> nil } ^min <cpo> ^max { <garb2> >= <cpo> } ^com <vcom> ^layer <layer1> ^compo <vcpo> ^commo <gx>)
    (horizontal ^net-name { <> <nn> <> nil } ^min { <garb3> <= <vcom> } ^max { <garb4> >= <vcom> } ^com <cpo> ^layer <> <layer1> ^compo <garb5> ^commo <gy>)
    (vertical ^net-name { <> <nn> <> nil } ^min { <garb6> <= <cmo> } ^max <cmo> ^com <vcom> ^layer <layer2> ^compo <vcpo> ^commo <gx>)
    (horizontal ^net-name { <> <nn> <> nil } ^min { <garb7> <= <vcom> } ^max { <garb8> >= <vcom> } ^com <cmo> ^layer <> <layer2> ^compo <gy> ^commo <garb9>)
    (vertical ^net-name { <> <nn> <> nil } ^min { <garb13> <= <gy> } ^max { <garb14> >= <gy> } ^com <vcpo> ^layer <layer3> ^compo <garb10> ^commo <vcom>)
    (horizontal ^net-name { <> <nn> <> nil } ^min { <garb11> <= <vcpo> } ^max { <garb12> >= <vcpo> } ^com <gy> ^layer <> <layer3> ^compo <cpo> ^commo <cmo>)
  -->
    (make horizontal ^min (compute <gx> + 1) ^max <hmax> ^com <gy> ^compo <cpo> ^commo <cmo> ^layer <layer> ^max-net <mn>)
    (modify <h1> ^max <gx> ^max-net <nn>)
)

(p p179
    (context ^present propagate-constraint)
    { <ff1> (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <pn>) }
    (vertical ^net-name { <> <nn> <> nil } ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy> } ^com <vcom> ^layer <lay2> ^compo <garb1> ^commo <gx>)
    (vertical ^net-name { <> <nn> <> nil } ^min { <vmax2> > <gy> <= <vmax> } ^max <garb4> ^com <gx> ^layer <lay4>)
    (vertical ^net-name { <> <nn> <> nil } ^min <garb2> ^max { <vmin2> < <gy> >= <vmin> } ^com <gx> ^layer <lay3>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmin2> < <gy> })
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmin2> < <gy> } ^layer <> <lay2> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmin2> < <gy> } ^max-net nil)
  - (horizontal ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { > <vmin2> < <gy> })
    (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <vmin2> ^layer <> <lay3>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmax2> })
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmax2> } ^layer <> <lay2> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmax2> } ^max-net nil)
  - (horizontal ^net-name <nn> ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmax2> })
    (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <vmax2> ^layer <> <lay4>)
    { <h1> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> >= <vcom> > <hmin> } ^com <gy> ^layer { <lay5> <> <lay2> } ^compo <hcpo> ^commo <hcmo> ^max-net <mn>) }
  -->
    (make horizontal ^layer <lay5> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <nn> ^max-net <mn> ^min <vcom> ^max <hmax>)
    (modify <h1> ^max <gx> ^max-net <nn>)
    (make horizontal ^layer <lay5> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <vcom>)
    (modify <ff1> ^grid-x <vcom> ^grid-layer <lay5> ^can-chng-layer no)
)

(p p180
    (context ^present propagate-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <vmax> ^com <vcom> ^layer <lay1> ^compo <cpo> ^commo <cmo>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <garb2> <= <vcom> } ^max { <garb3> >= <vcom> } ^com <vmax> ^layer { <garb4> <> <lay1> })
    (vertical ^net-name { <nn1> <> <nn> <> nil } ^min { <vmin> > <vmax> } ^max <garb5> ^com <vcom> ^layer <lay2>)
    (horizontal ^net-name { <nn1> <> nil } ^min { <garb6> <= <vcom> } ^max { <garb7> >= <vcom> } ^com <vmin> ^layer { <garb8> <> <lay2> })
    (vertical ^net-name { <> <nn> <> nil } ^min { <vmin2> <= <vmax> } ^max { <vmax2> >= <vmin> } ^com <cpo> ^layer <lay3>)
    { <v1> (vertical ^net-name nil ^min <vmax> ^max { <vmax3> > <vmax> } ^com <vcom> ^layer <lay3>) }
  - (vertical ^net-name nil ^min <vmax3> ^com <vcom>)
  - (horizontal ^net-name nil ^min < <vcom> ^max > <vcom> ^com { > <vmax> <= <vmax3> })
  - (horizontal ^net-name nil ^min <vcom> ^max > <vcom> ^com { > <vmax> <= <vmax3> } ^layer <> <lay3> ^min-net nil)
  - (horizontal ^net-name nil ^min < <vcom> ^max <vcom> ^com { > <vmax> <= <vmax3> } ^max-net nil)
  - (horizontal ^net-name { <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com { > <vmax> <= <vmax3> })
  -->
    (modify <v1> ^min (compute <vmax> + 1) ^min-net nil)
)

(p p181
    (context ^present propagate-constraint)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>) }
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <garb1> ^grid-layer <lay> ^pin-name <> <pn>)
  - (vertical ^com { > <gx> < <gx2> })
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { <egarb1> > <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
  - (vertical ^net-name nil ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2>)
  -->
    (modify <h1> ^min (compute <gx> + 1) ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^com <gy> ^max (compute <gx> + 1) ^commo <hcmo> ^compo <hcpo> ^layer <lay>)
    (modify <ff1> ^grid-x (compute <gx> + 1) ^came-from west)
)

(p p182
    (context ^present propagate-constraint)
    { <v3> (vertical ^net-name nil ^min <vmin2> ^max { <vmax2> > <vmin2> } ^com <vcom> ^layer <garb1> ^compo <vcpo> ^commo <egarb1>) }
    (congestion ^direction row ^coordinate <vmax2> ^como <vmin2>)
  - (horizontal ^status nil ^min < <vcom> ^max >= <vcom> ^com { <= <vmax2> >= <vmin2> })
  - (vertical ^status nil ^min <vmax2> ^max > <vmax2> ^com <vcom>)
  - (vertical ^status nil ^max <vmin2> ^min < <vmin2> ^com <vcom>)
    (vertical ^net-name nil ^min { <vmin> <= <vmin2> } ^max { > <vmin> >= <vmax2> } ^com <vcpo> ^layer <lay>)
    (horizontal ^net-name nil ^min <vcom> ^max { <egarb2> > <vcom> } ^com <vmax2> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
    (horizontal ^net-name nil ^min <vcom> ^max { <egarb5> > <vcom> } ^com <vmin2> ^layer <lay> ^compo <egarb6> ^commo <egarb7>)
  -->
    (remove <v3>)
)

(p p183
    (context ^present propagate-constraint)
    { <v3> (vertical ^net-name nil ^min <vmin2> ^max { <vmax2> > <vmin2> } ^com <vcom> ^layer <garb1> ^compo <garb2> ^commo <vcmo>) }
    (congestion ^direction row ^coordinate <vmax2> ^como <vmin2>)
  - (horizontal ^status nil ^min <= <vcom> ^max > <vcom> ^com { <= <vmax2> >= <vmin2> })
  - (vertical ^status nil ^min <vmax2> ^max > <vmax2> ^com <vcom>)
  - (vertical ^status nil ^max <vmin2> ^min < <vmin2> ^com <vcom>)
    (vertical ^net-name nil ^min { <vmin> <= <vmin2> } ^max { > <vmin> >= <vmax2> } ^com <vcmo> ^layer <lay>)
    (horizontal ^net-name nil ^min <egarb1> ^max { <vcom> > <egarb1> } ^com <vmax2> ^layer <lay> ^compo <egarb2> ^commo <egarb3>)
    (horizontal ^net-name nil ^min <egarb6> ^max { <vcom> > <egarb6> } ^com <vmin2> ^layer <lay> ^compo <egarb4> ^commo <egarb5>)
  -->
    (remove <v3>)
)

(p p184
    (context ^present propagate-constraint)
    { <h3> (horizontal ^net-name nil ^min <hmin2> ^max { <hmax2> > <hmin2> } ^com <hcom> ^layer <garb1> ^compo <hcpo> ^commo <egarb1>) }
    (congestion ^direction col ^coordinate <hmax2> ^como <hmin2>)
  - (vertical ^status nil ^min < <hcom> ^max >= <hcom> ^com { <= <hmax2> >= <hmin2> })
  - (horizontal ^status nil ^min <hmax2> ^max > <hmax2> ^com <hcom>)
  - (horizontal ^status nil ^max <hmin2> ^min < <hmin2> ^com <hcom>)
    (horizontal ^net-name nil ^min { <hmin> <= <hmin2> } ^max { > <hmin> >= <hmax2> } ^com <hcpo> ^layer <lay>)
    (vertical ^net-name nil ^min <hcom> ^max { <egarb2> > <hcom> } ^com <hmax2> ^layer <lay> ^compo <egarb3> ^commo <egarb4>)
    (vertical ^net-name nil ^min <hcom> ^max { <egarb5> > <hcom> } ^com <hmin2> ^layer <lay> ^compo <egarb6> ^commo <egarb7>)
  -->
    (remove <h3>)
)

(p p185
    (context ^present propagate-constraint)
    { <h3> (horizontal ^net-name nil ^min <hmin2> ^max { <hmax2> > <hmin2> } ^com <hcom> ^layer <garb1> ^compo <garb2> ^commo <hcmo>) }
    (congestion ^direction col ^coordinate <hmax2> ^como <hmin2>)
  - (vertical ^status nil ^min <= <hcom> ^max > <hcom> ^com { <= <hmax2> >= <hmin2> })
  - (horizontal ^status nil ^min <hmax2> ^max > <hmax2> ^com <hcom>)
  - (horizontal ^status nil ^max <hmin2> ^min < <hmin2> ^com <hcom>)
    (horizontal ^net-name nil ^min { <hmin> <= <hmin2> } ^max { > <hmin> >= <hmax2> } ^com <hcmo> ^layer <lay>)
    (vertical ^net-name nil ^min <egarb1> ^max { <hcom> > <egarb1> } ^com <hmax2> ^layer <lay> ^compo <egarb3> ^compo <egarb4>)
    (vertical ^net-name nil ^min <egarb5> ^max { <hcom> > <egarb5> } ^com <hmin2> ^layer <lay> ^compo <egarb6> ^commo <egarb7>)
  -->
    (remove <h3>)
)

(p p538
    (finally-routed <nn>)
    { <i1> (included <nn>) }
  -->
    (remove <i1>)
)

(p p539
    (finally-routed <nn>)
    { <ff1> (ff ^net-name <nn>) }
  -->
    (remove <ff1>)
)

(p p540
    (finally-routed <nn>)
    { <c1> (constraint ^constraint-type << vertical horizontal >> ^net-name-1 <nn>) }
  -->
    (remove <c1>)
)

(p p541
    (finally-routed <nn>)
    { <c1> (constraint ^constraint-type << vertical horizontal >> ^net-name-2 <nn>) }
  -->
    (remove <c1>)
)

(p p542
    (finally-routed <nn>)
    { <c> (<< horizontal-cycle vertical-cycle >> <nn>) }
  -->
    (remove <c>)
)

(p p543
    (finally-routed <nn>)
    { <c1> (constraint ^constraint-type << vertical horizontal >> ^net-name-2 <nn>) }
  -->
    (remove <c1>)
)

(p p544
    (finally-routed <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <garb1> ^commo <garb2>)
    { <h1> (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { <hmax> > <hmin> >= <vcom> } ^com { <hcom> >= <vmin> <= <vmax> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <nn1>) }
  -->
    (make horizontal ^min <hmin> ^max (compute <vcom> - 1) ^com <hcom> ^compo <hcpo> ^commo <hcmo> ^layer <lay> ^min-net <nn1>)
    (modify <h1> ^min (compute <vcom> + 1) ^min-net nil)
)

(p p545
    (finally-routed <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <garb1> ^commo <garb2>)
    { <v1> (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { <vmax> > <vmin> >= <hcom> } ^com { <vcom> >= <hmin> <= <hmax> } ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <nn1>) }
  -->
    (make vertical ^min <vmin> ^max (compute <hcom> - 1) ^com <vcom> ^compo <vcpo> ^commo <vcmo> ^layer <lay> ^min-net <nn1>)
    (modify <v1> ^min (compute <hcom> + 1) ^min-net nil)
)

(p p546
    (finally-routed <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <rmax> ^com <com> ^layer <lay> ^compo <garb4> ^commo <garb3>)
    { <v1> (vertical ^net-name nil ^min <rmax> ^max { <garb2> > <rmax> } ^com <com> ^layer <lay> ^compo <garb6> ^commo <garb5>) }
  -->
    (modify <v1> ^min (compute <rmax> + 1) ^min-net nil)
)

(p p547
    (finally-routed <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <rmin> ^max <garb1> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>)
    { <v1> (vertical ^net-name nil ^min <garb2> ^max { <rmin> > <garb2> } ^com <com> ^layer <lay> ^compo <garb5> ^commo <garb6>) }
  -->
    (modify <v1> ^max (compute <rmin> - 1) ^max-net nil)
)

(p p548
    (finally-routed <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max <rmax> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>)
    { <h1> (horizontal ^net-name nil ^min <rmax> ^max { <garb2> > <rmax> } ^com <com> ^layer <lay> ^compo <garb5> ^commo <garb6>) }
  -->
    (modify <h1> ^min (compute <rmax> + 1) ^min-net nil)
)

(p p549
    (finally-routed <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <rmin> ^max <garb1> ^com <com> ^layer <lay> ^compo <garb3> ^commo <garb4>)
    { <h1> (horizontal ^net-name nil ^min <garb2> ^max { <rmin> > <garb2> } ^com <com> ^layer <lay> ^compo <garb5> ^commo <garb6>) }
  -->
    (modify <h1> ^max (compute <rmin> - 1) ^max-net nil)
)

(p p550
    { <f1> (finally-routed <nn>) }
  -->
    (remove <f1>)
    (make context ^present remove-routed-net-segments <nn>)
)

(p p551
    (context ^present remove-routed-net-segments <nn>)
    { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <c> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  -->
    (modify <h1> ^status routed)
    (write (crlf) |hor | <nn> <min> <max> <c> <lay>)
)

(p p552
    (context ^present remove-routed-net-segments <nn>)
    { <v1> (vertical ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <c> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
  -->
    (modify <v1> ^status routed)
    (write (crlf) |ver | <nn> <min> <max> <c> <lay>)
)

(p p553
    (context ^present remove-routed-net-segments <nn>)
    { <h> (horizontal-s ^net-name <nn>) }
  -->
    (remove <h>)
)

(p p554
    (context ^present remove-routed-net-segments <nn>)
    { <v> (vertical-s ^net-name <nn>) }
  -->
    (remove <v>)
)

(p p555
    (context ^present remove-routed-net-segments <nn>)
    { <p> (pin ^net-name <nn>) }
  -->
    (remove <p>)
)

(p p556
    (context ^present remove-routed-net-segments <nn>)
    { <n> (net ^net-name <nn>) }
  -->
    (remove <n>)
)

(p p557
    { <c1> (context ^present remove-routed-net-segments) }
  -->
    (remove <c1>)
    (make context ^present check-for-routed-net)
)

(p p32
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
    { <v> (vertical ^net-name nil ^min <gy2> ^max > <gy2> ^com <gx2> ^layer <lay> ^commo <cmo> ^compo <gx1> ^min-net <garb2>) }
  - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com <gy2> ^layer <lay>)
    (congestion ^direction row ^coordinate <gy3> ^como <gy2>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx2> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy3> ^layer <lay>)
  -->
    (modify <v> ^min <gy3> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn2> ^min <gy2> ^max <gy3> ^com <gx2> ^compo <gx1> ^commo <cmo> ^layer <lay>)
    (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from south)
)

(p p33
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
    { <v> (vertical ^net-name nil ^min < <gy1> ^max <gy1> ^com <gx1> ^layer <lay> ^commo <gx2> ^compo <cpo> ^min-net <garb2>) }
  - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com <gy1> ^layer <lay>)
    (congestion ^direction row ^coordinate <gy1> ^como <gy3>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx1> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy3> ^layer <lay>)
  -->
    (modify <v> ^max <gy3> ^max-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn1> ^min <gy3> ^max <gy1> ^com <gx1> ^compo <cpo> ^commo <gx2> ^layer <lay>)
    (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from north)
)

(p p34
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
    { <v> (vertical ^net-name nil ^min <gy2> ^max > <gy2> ^com <gx2> ^layer <lay> ^commo <gx1> ^compo <cpo> ^min-net <garb2>) }
  - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com <gy2> ^layer <lay>)
    (congestion ^direction row ^coordinate <gy3> ^como <gy2>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx2> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy3> ^layer <lay>)
  -->
    (modify <v> ^min <gy3> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn2> ^min <gy2> ^max <gy3> ^com <gx2> ^compo <cpo> ^commo <gx1> ^layer <lay>)
    (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from south)
)

(p p35
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-top-pins 1 ^no-of-bottom-pins 1)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
    { <v> (vertical ^net-name nil ^min < <gy1> ^max <gy1> ^com <gx1> ^layer <lay> ^commo <cmo> ^compo <gx2> ^min-net <garb2>) }
  - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com <gy1> ^layer <lay>)
    (congestion ^direction row ^coordinate <gy1> ^como <gy3>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy3> ^max >= <gy3> ^com <gx1> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy3> ^layer <lay>)
  -->
    (modify <v> ^max <gy3> ^max-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn1> ^min <gy3> ^max <gy1> ^com <gx1> ^compo <gx2> ^commo <cmo> ^layer <lay>)
    (modify <ff> ^grid-y <gy3> ^can-chng-layer nil ^came-from north)
)

(p p36
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
    { <v> (horizontal ^net-name nil ^min <gx2> ^max > <gx2> ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gy1> ^min-net <garb2>) }
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx2> ^layer <lay>)
    (congestion ^direction col ^coordinate <gx3> ^como <gx2>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy2> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx3> ^layer <lay>)
  -->
    (modify <v> ^min <gx3> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn2> ^min <gx2> ^max <gx3> ^com <gy2> ^compo <gy1> ^commo <cmo> ^layer <lay>)
    (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from west)
)

(p p37
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
    { <v> (horizontal ^net-name nil ^min < <gx1> ^max <gx1> ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^min-net <garb2>) }
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx1> ^layer <lay>)
    (congestion ^direction col ^coordinate <gx1> ^como <gx3>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy1> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx3> ^layer <lay>)
  -->
    (modify <v> ^max <gx3> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn1> ^min <gx3> ^max <gx1> ^com <gy1> ^compo <cpo> ^commo <gy2> ^layer <lay>)
    (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from east)
)

(p p38
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
    { <v> (horizontal ^net-name nil ^min < <gx2> ^max <gx2> ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gx1> ^min-net <garb2>) }
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx2> ^layer <lay>)
    (congestion ^direction col ^coordinate <gx2> ^como <gx3>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy2> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx3> ^layer <lay>)
  -->
    (modify <v> ^max <gx3> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn2> ^min <gx3> ^max <gx2> ^com <gy2> ^compo <gy1> ^commo <cmo> ^layer <lay>)
    (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from east)
)

(p p39
    (context ^present propagate-constraint)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes ^no-of-right-pins 1 ^no-of-left-pins 1)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
    { <v> (horizontal ^net-name nil ^min <gx1> ^max > <gx1> ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^min-net <garb2>) }
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com <gx1> ^layer <lay>)
    (congestion ^direction col ^coordinate <gx3> ^como <gx1>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx3> ^max >= <gx3> ^com <gy1> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx3> ^layer <lay>)
  -->
    (modify <v> ^min <gx3> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn1> ^min <gx1> ^max <gx3> ^com <gy1> ^compo <cpo> ^commo <gy2> ^layer <lay>)
    (modify <ff> ^grid-x <gx3> ^can-chng-layer nil ^came-from west)
)

(p p40
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
    (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^max <hmax2> ^max-net nil)
)

(p p41
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
    (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^min <hmax2> ^min-net nil)
)

(p p42
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
    (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
    (last-row <gy>)
  -->
    (modify <h1> ^max <hmax2> ^max-net nil)
)

(p p43
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
    (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
    (last-row <gy>)
  -->
    (modify <h1> ^min <hmax2> ^min-net nil)
)

(p p44
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay> ^commo 0) }
    (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
    (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^max <hmax2> ^max-net nil)
)

(p p45
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay> ^commo 0) }
    (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
    (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^min <hmax2> ^min-net nil)
)

(p p46
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
    { <h1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
    (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^max <vmax2> ^max-net nil)
)

(p p47
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
    (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <v1> ^min <vmax2> ^min-net nil)
)

(p p48
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
    (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
    (last-col <gx>)
  -->
    (modify <v1> ^max <vmax2> ^max-net nil)
)

(p p49
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
    (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
    (last-col <gx>)
  -->
    (modify <v1> ^min <vmax2> ^min-net nil)
)

(p p50
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay> ^commo 0) }
    (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
    (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <v1> ^max <vmax2> ^max-net nil)
)

(p p51
    (context ^present propagate-constraint)
    (ff ^can-chng-layer <> no ^net-name <nn1> ^grid-x <gx> ^grid-y <gy> ^grid-layer <ttgarb>)
    (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay> ^commo 0) }
    (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
    (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <v1> ^min <vmax2> ^min-net nil)
)

(p p52
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <gx> ^max <ppgarb> ^com <gy>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
    (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^max <hmax2> ^max-net nil)
)

(p p53
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gx> ^com <gy>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
    (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^min <hmax2> ^min-net nil)
)

(p p54
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <gx> ^max <ppgarb> ^com <gy>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
    (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cmo> ^layer <lay>)
    (last-row <gy>)
  -->
    (modify <h1> ^max <hmax2> ^max-net nil)
)

(p p55
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gx> ^com <gy>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cmo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay>) }
    (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
    (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cmo> ^layer <lay>)
    (last-row <gy>)
  -->
    (modify <h1> ^min <hmax2> ^min-net nil)
)

(p p56
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <gx> ^max <ppgarb> ^com <gy>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <hmax1> < <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <gx> ^max >= <hmax1> ^com <cpo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <hmax1> < <gx> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min { < <gx> >= <hmax1> } ^max <gx> ^com <gy> ^layer <lay> ^commo 0) }
    (vertical ^com <hmin2> ^compo <garb10> ^commo <hmax1>)
    (vertical ^com <hmax2> ^compo <gx> ^commo <garb11>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin2> ^max >= <hmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^max <hmax2> ^max-net nil)
)

(p p57
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gx> ^com <gy>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min { <hmin1> > <gx> } ^max <garb1> ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <> <lay>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmin1> ^max >= <gx> ^com <cpo> ^layer <lay>)
  - (vertical ^status nil ^net-name { <nn1> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay>)
  - (vertical ^net-name nil ^min <gy> ^max > <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^min-net nil)
  - (vertical ^net-name nil ^min < <gy> ^max <gy> ^com { > <gx> < <hmin1> } ^layer <> <lay> ^max-net nil)
    { <h1> (horizontal ^net-name nil ^min <gx> ^max { > <gx> <= <hmin1> } ^com <gy> ^layer <lay> ^commo 0) }
    (vertical ^com <hmin2> ^compo <hmin1> ^commo <garb10>)
    (vertical ^com <hmax2> ^compo <garb11> ^commo <gx>)
    (horizontal ^net-name { <> nil <> <nn1> } ^min <= <hmax2> ^max >= <hmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^min <hmax2> ^min-net nil)
)

(p p58
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <gy> ^max <ppgarb> ^com <gx>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
    { <h1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
    (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <h1> ^max <vmax2> ^max-net nil)
)

(p p59
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gy> ^com <gx>)
    (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
    (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <v1> ^min <vmax2> ^min-net nil)
)

(p p60
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <gy> ^max <ppgarb> ^com <gx>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
    (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cmo> ^layer <lay>)
    (last-col <gx>)
  -->
    (modify <v1> ^max <vmax2> ^max-net nil)
)

(p p61
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gy> ^com <gx>)
    (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cmo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay>) }
    (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
    (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cmo> ^layer <lay>)
    (last-col <gx>)
  -->
    (modify <v1> ^min <vmax2> ^min-net nil)
)

(p p62
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <gy> ^max <ppgarb> ^com <gx>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <garb1> ^max { <vmax1> < <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <gy> ^max >= <vmax1> ^com <cpo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <vmax1> < <gy> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min { < <gy> >= <vmax1> } ^max <gy> ^com <gx> ^layer <lay> ^commo 0) }
    (horizontal ^com <vmin2> ^compo <garb10> ^commo <vmax1>)
    (horizontal ^com <vmax2> ^compo <gy> ^commo <garb11>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin2> ^max >= <vmax2> ^com <cpo> ^layer <lay>)
  -->
    (modify <v1> ^max <vmax2> ^max-net nil)
)

(p p63
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <ppgarb> ^max <gy> ^com <gx>)
    (vertical ^net-name { <> nil <> <nn1> } ^min { <vmin1> > <gy> } ^max <garb1> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <> <lay>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmin1> ^max >= <gy> ^com <cpo> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <nn1> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <gx> ^max > <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^min-net nil)
  - (horizontal ^net-name nil ^min < <gx> ^max <gx> ^com { > <gy> < <vmin1> } ^layer <> <lay> ^max-net nil)
    { <v1> (vertical ^net-name nil ^min <gy> ^max { > <gy> <= <vmin1> } ^com <gx> ^layer <lay> ^commo 0) }
    (horizontal ^com <vmin2> ^compo <vmin1> ^commo <garb10>)
    (horizontal ^com <vmax2> ^compo <garb11> ^commo <gy>)
    (vertical ^net-name { <> nil <> <nn1> } ^min <= <vmax2> ^max >= <vmin2> ^com <cpo> ^layer <lay>)
  -->
    (modify <v1> ^min <vmax2> ^min-net nil)
)

(p p64
    (context ^present propagate-constraint)
    { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max { <hmax> > <vcom> } ^com <vmax> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    (vertical ^net-name { <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
    (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcpo> ^layer <lay> ^compo <garb2> ^commo <vcom>)
    (horizontal ^net-name nil ^min < <vcom> ^max > <vcom> ^com <hcmo> ^layer <lay>)
  - (vertical ^status nil ^min <vmax> ^max > <vmax> ^com <vcom>)
  - (horizontal ^status nil ^min { <temp> <= <vcom> } ^max { > <temp> >= <vcom> } ^com <vmax> ^layer <> <lay>)
  -->
    (modify <v> ^max <hcmo> ^max-net nil)
    (make (substr <h> 1 inf) ^max <vcmo> ^max-net <nn1>)
    (modify <h> ^min <vcpo> ^min-net <nn2>)
)

(p p65
    (context ^present propagate-constraint)
    { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max { <hmax> > <vcom> } ^com <vmin> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    (vertical ^net-name { <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
    (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcpo> ^layer <lay> ^compo <garb2> ^commo <vcom>)
    (horizontal ^net-name nil ^min < <vcom> ^max > <vcom> ^com <hcpo> ^layer <lay>)
  - (vertical ^status nil ^min < <vmin> ^max <vmin> ^com <vcom>)
  - (horizontal ^status nil ^min { <temp> <= <vcom> } ^max { > <temp> >= <vcom> } ^com <vmin> ^layer <> <lay>)
  -->
    (modify <v> ^min <hcpo> ^min-net nil)
    (make (substr <h> 1 inf) ^max <vcmo> ^max-net <nn1>)
    (modify <h> ^min <vcpo> ^min-net <nn2>)
)

(p p66
    (context ^present propagate-constraint)
    { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max { <vmax> > <hcom> } ^com <hmax> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    (horizontal ^net-name { <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
    (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcpo> ^layer <lay> ^compo <garb2> ^commo <hcom>)
    (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com <vcmo> ^layer <lay>)
  - (horizontal ^status nil ^min <hmax> ^max > <hmax> ^com <hcom>)
  - (vertical ^status nil ^min { <temp> <= <hcom> } ^max { > <temp> >= <hcom> } ^com <hmax> ^layer <> <lay>)
  -->
    (modify <h> ^max <vcmo> ^max-net nil)
    (make (substr <v> 1 inf) ^max <hcmo> ^max-net <nn1>)
    (modify <v> ^min <hcpo> ^min-net <nn2>)
)

(p p67
    (context ^present propagate-constraint)
    { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max { <vmax> > <hcom> } ^com <hmin> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    (horizontal ^net-name { <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
    (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcpo> ^layer <lay> ^compo <garb2> ^commo <hcom>)
    (vertical ^net-name nil ^min < <hcom> ^max > <hcom> ^com <vcpo> ^layer <lay>)
  - (horizontal ^status nil ^min < <hmin> ^max <hmin> ^com <hcom>)
  - (vertical ^status nil ^min { <temp> <= <hcom> } ^max { > <temp> >= <hcom> } ^com <hmin> ^layer <> <lay>)
  -->
    (modify <h> ^min <vcpo> ^min-net nil)
    (make (substr <v> 1 inf) ^max <hcmo> ^max-net <nn1>)
    (modify <v> ^min <hcpo> ^min-net <nn2>)
)

(p p68
    (context ^present propagate-constraint)
    { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com <vmax> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    (vertical ^net-name { <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
    (horizontal ^net-name nil ^min < <vcom> ^max >= <vcom> ^com <hcmo> ^layer <lay>)
  - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <vcom> ^max > <vcom> ^com <vmax> ^layer <> <lay>)
  -->
    (modify <h> ^max <vcmo> ^max-net <nn1>)
)

(p p69
    (context ^present propagate-constraint)
    { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    { <h> (horizontal ^net-name nil ^min <vcom> ^max { <hmax> > <vcom> } ^com <vmax> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    (vertical ^net-name { <nn1> <> nil } ^min < <vmax> ^max >= <vmax> ^com <vcpo> ^layer <lay> ^compo <garb1> ^commo <vcom>)
    (horizontal ^net-name nil ^min <= <vcom> ^max > <vcom> ^com <hcmo> ^layer <lay>)
  - (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <vcom> ^max <vcom> ^com <vmax> ^layer <> <lay>)
  -->
    (modify <h> ^min <vcpo> ^min-net <nn1>)
)

(p p70
    (context ^present propagate-constraint)
    { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com <vmin> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    (vertical ^net-name { <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcmo> ^layer <lay> ^compo <vcom> ^commo <garb1>)
    (horizontal ^net-name nil ^min < <vcom> ^max >= <vcom> ^com <hcpo> ^layer <lay>)
  - (vertical ^net-name nil ^min < <vmin> ^max <vmin> ^com <vcom> ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <vcom> ^max > <vcom> ^com <vmin> ^layer <> <lay>)
  -->
    (modify <h> ^max <vcmo> ^max-net <nn1>)
)

(p p71
    (context ^present propagate-constraint)
    { <v> (vertical ^net-name nil ^min <vmin> ^max <vmax> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    { <h> (horizontal ^net-name nil ^min <vcom> ^max { <hmax> > <vcom> } ^com <vmin> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    (vertical ^net-name { <nn1> <> nil } ^min <= <vmin> ^max > <vmin> ^com <vcpo> ^layer <lay> ^compo <garb1> ^commo <vcom>)
    (horizontal ^net-name nil ^min <= <vcom> ^max > <vcom> ^com <hcpo> ^layer <lay>)
  - (vertical ^net-name nil ^min < <vmin> ^max <vmin> ^com <vcom> ^layer <> <lay>)
  - (horizontal ^net-name nil ^min < <vcom> ^max <vcom> ^com <vmin> ^layer <> <lay>)
  -->
    (modify <h> ^min <vcpo> ^min-net <nn1>)
)

(p p72
    (context ^present propagate-constraint)
    { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    { <v> (vertical ^net-name nil ^min <hcom> ^max { <vmax> > <hcom> } ^com <hmax> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    (horizontal ^net-name { <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcpo> ^layer <lay> ^compo <garb1> ^commo <hcom>)
    (vertical ^net-name nil ^min <= <hcom> ^max > <hcom> ^com <vcmo> ^layer <lay>)
  - (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com <hmax> ^layer <> <lay>)
  -->
    (modify <v> ^min <hcpo> ^min-net <nn1>)
)

(p p73
    (context ^present propagate-constraint)
    { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max <hcom> ^com <hmax> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    (horizontal ^net-name { <nn1> <> nil } ^min < <hmax> ^max >= <hmax> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
    (vertical ^net-name nil ^min < <hcom> ^max >= <hcom> ^com <vcmo> ^layer <lay>)
  - (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <> <lay>)
  - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com <hmax> ^layer <> <lay>)
  -->
    (modify <v> ^max <hcmo> ^max-net <nn1>)
)

(p p74
    (context ^present propagate-constraint)
    { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    { <v> (vertical ^net-name nil ^min <hcom> ^max { <vmax> > <hcom> } ^com <hmin> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    (horizontal ^net-name { <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcpo> ^layer <lay> ^compo <garb1> ^commo <hcom>)
    (vertical ^net-name nil ^min <= <hcom> ^max > <hcom> ^com <vcpo> ^layer <lay>)
  - (horizontal ^net-name nil ^min < <hmin> ^max <hmin> ^com <hcom> ^layer <> <lay>)
  - (vertical ^net-name nil ^min < <hcom> ^max <hcom> ^com <hmin> ^layer <> <lay>)
  -->
    (modify <v> ^min <hcpo> ^min-net <nn1>)
)

(p p75
    (context ^present propagate-constraint)
    { <h> (horizontal ^net-name nil ^min <hmin> ^max <hmax> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo>) }
    { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max <hcom> ^com <hmin> ^layer <lay> ^compo <vcpo> ^commo <vcmo>) }
    (horizontal ^net-name { <nn1> <> nil } ^min <= <hmin> ^max > <hmin> ^com <hcmo> ^layer <lay> ^compo <hcom> ^commo <garb1>)
    (vertical ^net-name nil ^min < <hcom> ^max >= <hcom> ^com <vcpo> ^layer <lay>)
  - (horizontal ^net-name nil ^min < <hmin> ^max <hmin> ^com <hcom> ^layer <> <lay>)
  - (vertical ^net-name nil ^min <hcom> ^max > <hcom> ^com <hmin> ^layer <> <lay>)
  -->
    (modify <v> ^max <hcmo> ^max-net <nn1>)
)

(p p76
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay>)
    (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <vlay>)
    (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer { <hlay> <> <vlay> } ^compo <hcpo> ^commo <vmax>)
  - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmax>)
    { <v> (vertical ^net-name nil ^min <vmax> ^max > <vmax> ^com <vcom> ^layer <hlay>) }
  -->
    (modify <v> ^min <hcom> ^min-net <nn2>)
)

(p p77
    (context ^present propagate-constraint)
    (vertical ^net-name { <nn1> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay>)
    (vertical ^net-name nil ^min <garb1> ^max { <vmin> > <garb1> } ^com <vcom> ^layer <vlay>)
    (horizontal ^net-name { <nn2> <> <nn1> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer { <hlay> <> <vlay> } ^compo <vmin> ^commo <hcmo>)
  - (horizontal ^status nil ^min <= <vcom> ^max >= <vcom> ^com <vmin>)
    { <v> (vertical ^net-name nil ^min <garb2> ^max { <vmin> > <garb2> } ^com <vcom> ^layer <hlay>) }
  -->
    (modify <v> ^max <hcom> ^max-net <nn2>)
)

(p p78
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay>)
    (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <hlay>)
    (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer { <vlay> <> <hlay> } ^compo <vcpo> ^commo <hmax>)
  - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmax>)
    { <h> (horizontal ^net-name nil ^min <hmax> ^max > <hmax> ^com <hcom> ^layer <vlay>) }
  -->
    (modify <h> ^min <vcom> ^min-net <nn2>)
)

(p p79
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn1> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay>)
    (horizontal ^net-name nil ^min <garb1> ^max { <hmin> > <garb1> } ^com <hcom> ^layer <hlay>)
    (vertical ^net-name { <nn2> <> <nn1> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer { <vlay> <> <hlay> } ^compo <hmin> ^commo <vcmo>)
  - (vertical ^status nil ^min <= <hcom> ^max >= <hcom> ^com <hmin>)
    { <h> (horizontal ^net-name nil ^min <garb2> ^max { <hmin> > <garb2> } ^com <hcom> ^layer <vlay>) }
  -->
    (modify <h> ^max <vcom> ^max-net <nn2>)
)

(p p80
    (context ^present propagate-constraint)
    (last-col <lc>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> <= 1 } ^max <vmax> ^com <vcom> ^layer <vlay> ^pin-name <pn> ^commo <vcmo>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max { <hmax> >= <lc> } ^com <vmax> ^layer <hlay>)
    { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com { <hcom> >= <vmin> <= <vmax> } ^layer <lay>) }
  - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  - (vertical ^net-name <nn> ^min <= <vmax> ^max >= <vmax> ^com { > <vcom> <= <hmax> })
  - (vertical ^net-name nil ^min <= <vmax> ^max >= <vmax> ^com { > <vcom> <= <hmax> })
  - (vertical ^net-name nil ^min <= <vmax> ^max >= <vmax> ^com <vcom>)
  - (vertical ^net-name <nn> ^min <vmax> ^max > <vmax> ^com <vcom>)
  - (vertical ^net-name nil ^min <= <vmin> ^max >= <vmin> ^com <vcom>)
  - (vertical ^net-name <nn> ^min < <vmin> ^max <vmin> ^com <vcom>)
  -->
    (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <vcmo>)
    (modify <h> ^max <vcmo> ^max-net <nn>)
    (make ff ^grid-x <vcmo> ^grid-y <hcom> ^grid-layer <lay> ^net-name <nn> ^pin-name <pn> ^came-from east)
)

(p p81
    (context ^present propagate-constraint)
    (last-row <lr>)
    (last-col <lc>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max { <vmax> >= <lr> } ^com <vcom> ^layer <vlay> ^pin-name <pn> ^commo <vcmo>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max { <hmax> >= <lc> } ^com <vmin> ^layer <hlay>)
    { <h> (horizontal ^net-name nil ^min { <hmin> < <vcom> } ^max <vcom> ^com { <hcom> >= <vmin> <= <vmax> } ^layer <lay>) }
  - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { > <hcom> <= <vmax> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com { < <hcom> >= <vmin> })
  - (horizontal ^net-name <nn> ^min < <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <> <lay>)
  - (vertical ^net-name <nn> ^min <= <vmin> ^max >= <vmin> ^com { > <vcom> <= <hmax> })
  - (vertical ^net-name nil ^min <= <vmin> ^max >= <vmin> ^com { > <vcom> <= <hmax> })
  - (vertical ^net-name nil ^min <= <vmin> ^max >= <vmin> ^com <vcom>)
  - (vertical ^net-name <nn> ^min < <vmin> ^max <vmin> ^com <vcom>)
  - (vertical ^net-name nil ^min <= <vmax> ^max >= <vmax> ^com <vcom>)
  - (vertical ^net-name <nn> ^min <vmax> ^max > <vmax> ^com <vcom>)
  -->
    (make (substr <h> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <vcmo>)
    (modify <h> ^max <vcmo> ^max-net <nn>)
    (make ff ^grid-x <vcmo> ^grid-y <hcom> ^grid-layer <lay> ^net-name <nn> ^pin-name <pn> ^came-from east)
)

(p p82
    (context ^present propagate-constraint)
    (horizontal ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^pin-name <pn> ^commo <hcmo>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max <vmax1> ^com <hmin> ^layer <vlay1>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max <vmax2> ^com <hmax> ^layer <vlay2>)
    { <v> (vertical ^net-name nil ^min { <vmin> < <hcom> } ^max <hcom> ^com { <vcom> >= <hmin> <= <hmax> } ^layer <lay>) }
  - (vertical ^net-name <nn> ^min < <hcom> ^max >= <hcom> ^com { > <vcom> <= <hmax> })
  - (vertical ^net-name <nn> ^min < <hcom> ^max >= <hcom> ^com { < <vcom> >= <hmin> })
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <hcom> ^com { > <vcom> <= <hmax> })
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <hcom> ^com { < <vcom> >= <hmin> })
  - (vertical ^net-name <nn> ^min < <hcom> ^max >= <hcom> ^com <vcom> ^layer <> <lay>)
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <> <lay>)
  - (horizontal ^net-name <nn> ^min <= <hmax> ^max >= <hmax> ^com { > <hcom> <= <vmax2> })
  - (horizontal ^net-name <nn> ^min <= <hmin> ^max >= <hmin> ^com { > <hcom> <= <vmax1> })
  - (horizontal ^net-name nil ^min <= <hmax> ^max >= <hmax> ^com { > <hcom> <= <vmax2> })
  - (horizontal ^net-name nil ^min <= <hmin> ^max >= <hmin> ^com { > <hcom> <= <vmax1> })
  - (horizontal ^net-name nil ^min <= <hmax> ^max >= <hmax> ^com <hcom>)
  - (horizontal ^net-name <nn> ^min <hmax> ^max > <hmax> ^com <hcom>)
  - (horizontal ^net-name nil ^min <= <hmin> ^max >= <hmin> ^com <hcom>)
  - (horizontal ^net-name <nn> ^min < <hmin> ^max <hmin> ^com <hcom>)
  -->
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <hcmo>)
    (modify <v> ^max <hcmo> ^max-net <nn>)
    (make ff ^grid-x <vcom> ^grid-y <hcmo> ^grid-layer <lay> ^net-name <nn> ^pin-name <pn> ^came-from north)
)

(p p377
    (context ^present find-no-of-pins-on-a-row-col)
    (horizontal ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gy> ^layer <lay> ^compo <egarb1> ^commo <egabr2>)
    (ff ^net-name <nn> ^grid-x { <fx> >= <min> <= <max> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn1>)
    (ff ^net-name <nn> ^grid-y <gy> ^pin-name { <pn2> <> <pn1> } ^grid-x { <gx> > <fx> <= <max> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <fx> ^max >= <gx> ^com <gy>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <fx> <= <gx> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <fx> ^max >= <fx> ^com <gy> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
    (net ^net-name <nn> ^net-no-of-pins <np>)
  - (total ^net-name <nn> ^row-col row ^coor <gy>)
  -->
    (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins 1 ^total-pins <np> ^min-xy <fx> ^max-xy <gx> ^last-pin <pn1> ^last-xy <fx>)
)

(p p378
    (context ^present find-no-of-pins-on-a-row-col)
    (horizontal ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gy> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (ff ^net-name <nn> ^grid-x { <fx> >= <min> <= <max> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn1>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx> > <fx> <= <max> } ^pin-name { <pn2> <> <pn1> })
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <fx> ^max >= <gx> ^com <gy>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <fx> <= <gx> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <fx> ^max >= <fx> ^com <gy> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
    (net ^net-name <nn> ^net-no-of-pins <np>)
  - (total ^net-name <nn> ^row-col row ^coor <gy>)
  -->
    (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins 1 ^total-pins <np> ^min-xy <fx> ^max-xy <gx> ^last-pin <pn1> ^last-xy <fx>)
)

(p p379
    (context ^present find-no-of-pins-on-a-row-col)
    (horizontal ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gy> ^layer <lay>)
    (ff ^net-name <nn> ^grid-x { <fx> >= <min> <= <max> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn1>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx> < <fx> >= <min> } ^pin-name { <pn2> <> <pn1> })
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <fx> ^com <gy>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <fx> >= <gx> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <fx> ^max >= <fx> ^com <gy> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
    (net ^net-name <nn> ^net-no-of-pins <np>)
  - (total ^net-name <nn> ^row-col row ^coor <gy>)
  -->
    (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins 1 ^total-pins <np> ^min-xy <gx> ^max-xy <fx> ^last-pin <pn2> ^last-xy <gx>)
)

(p p380
    (context ^present find-no-of-pins-on-a-row-col)
    (vertical ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gx> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <fy> >= <min> <= <max> } ^grid-layer <garb1> ^pin-name <pn1>)
    (ff ^net-name <nn> ^grid-x <gx> ^pin-name { <pn2> <> <pn1> } ^grid-y { <gy> > <fy> <= <max> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <fy> ^max >= <gy> ^com <gx>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <fy> <= <gy> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <fy> ^max >= <fy> ^com <gx> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
    (net ^net-name <nn> ^net-no-of-pins <np>)
  - (total ^net-name <nn> ^row-col col ^coor <gx>)
  -->
    (make total ^net-name <nn> ^row-col col ^coor <gx> ^level-pins 1 ^total-pins <np> ^min-xy <fy> ^max-xy <gy> ^last-pin <pn1> ^last-xy <fy>)
)

(p p381
    (context ^present find-no-of-pins-on-a-row-col)
    (vertical ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gx> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <fy> >= <min> <= <max> } ^grid-layer <garb1> ^pin-name <pn1>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy> > <fy> <= <max> } ^pin-name { <pn2> <> <pn1> })
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <fy> ^max >= <gy> ^com <gx>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <fy> <= <gy> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <fy> ^max >= <fy> ^com <gx> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
    (net ^net-name <nn> ^net-no-of-pins <np>)
  - (total ^net-name <nn> ^row-col col ^coor <gx>)
  -->
    (make total ^net-name <nn> ^row-col col ^coor <gx> ^level-pins 1 ^total-pins <np> ^min-xy <fy> ^max-xy <gy> ^last-pin <pn1> ^last-xy <fy>)
)

(p p382
    (context ^present find-no-of-pins-on-a-row-col)
    (vertical ^net-name nil ^min <min> ^max { <max> > <min> } ^com <gx> ^layer <lay> ^compo <egarb1> ^commo <egarb2>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <fy> >= <min> <= <max> } ^grid-layer <garb1> ^pin-name <pn1>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy> < <fy> >= <min> } ^pin-name { <pn2> <> <pn1> })
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^pin-name <> <pn1>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <fy> ^com <gx>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <gy> <= <fy> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <fy> ^max >= <fy> ^com <gx> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
    (net ^net-name <nn> ^net-no-of-pins <np>)
  - (total ^net-name <nn> ^row-col col ^coor <gx>)
  -->
    (make total ^net-name <nn> ^row-col col ^coor <gx> ^level-pins 1 ^total-pins <np> ^min-xy <gy> ^max-xy <fy> ^last-pin <pn2> ^last-xy <gy>)
)

(p p383
    (context ^present find-no-of-pins-on-a-row-col)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <gy> ^grid-layer <garb2> ^pin-name <pn>)
    (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <np> ^no-of-bottom-pins <garb3>)
  - (ff ^net-name <nn> ^grid-y <= <gy> ^pin-name <> <pn>)
  - (total ^net-name <nn>)
  -->
    (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins <np> ^total-pins <np>)
)

(p p384
    (context ^present find-no-of-pins-on-a-row-col)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <gy> ^grid-layer <garb2> ^pin-name <pn>)
    (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <garb3> ^no-of-bottom-pins <np>)
  - (ff ^net-name <nn> ^grid-y >= <gy> ^pin-name <> <pn>)
  - (total ^net-name <nn>)
  -->
    (make total ^net-name <nn> ^row-col row ^coor <gy> ^level-pins <np> ^total-pins <np>)
)

(p p385
    (context ^present find-no-of-pins-on-a-row-col)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <np> ^no-of-bottom-pins <garb2>)
  - (total ^net-name <nn>)
    (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn> ^grid-x { <fx> > <gx> })
  - (ff ^net-name <nn> ^grid-y < <gy>)
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <fx> ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <fx> ^com <gy>)
    { <v1> (vertical ^net-name nil ^min { <min> < <gy> } ^max >= <gy> ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <mn>) }
  - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
    (congestion ^direction row ^coordinate <gy> ^como <hcmo>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <hcmo> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
    (modify <v1> ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff1> ^grid-y <hcmo> ^can-chng-layer nil)
    (make total ^net-name <nn> ^row-col row ^coor <hcmo> ^level-pins <np> ^total-pins <np>)
)

(p p386
    (context ^present find-no-of-pins-on-a-row-col)
    { <ff1> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <garb2> ^no-of-bottom-pins <np>)
  - (total ^net-name <nn>)
    (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn> ^grid-x { <fx> > <gx> })
  - (ff ^net-name <nn> ^grid-y > <gy>)
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <fx> ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <fx> ^com <gy>)
    { <v1> (vertical ^net-name nil ^min <= <gy> ^max { <max> > <gy> } ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <mn>) }
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
    (congestion ^direction row ^coordinate <hcmo> ^como <gy>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <max> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <nn> ^max-net <mn>)
    (modify <v1> ^max <gy> ^max-net <nn>)
    (make vertical ^net-name <nn> ^min <gy> ^max <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify <ff1> ^grid-y <hcmo> ^can-chng-layer nil)
    (make total ^net-name <nn> ^row-col row ^coor <hcmo> ^level-pins <np> ^total-pins <np>)
)

(p p387
    { <t1> (total ^net-name <nn> ^row-col row ^coor <y> ^level-pins <np> ^total-pins <np> ^min-xy nil ^max-xy nil) }
    (pin ^net-name <nn> ^pin-x <px1>)
  - (pin ^net-name <nn> ^pin-x < <px1>)
    (pin ^net-name <nn> ^pin-x { <px2> > <px1> })
  - (pin ^net-name <nn> ^pin-x > <px2>)
  -->
    (modify <t1> ^min-xy <px1> ^max-xy <px2>)
)

(p p388
    (context ^present find-no-of-pins-on-a-row-col)
  -->
    (make context ^previous find-no-of-pins-on-a-row-col)
    (remove 1)
)

(p p389
    (context ^previous find-no-of-pins-on-a-row-col)
    (total)
  -->
    (remove 1)
    (make context ^present modify-total)
)

(p p390
    (context ^present delete-totals)
  -->
    (modify 1 ^present choose-between-nets-on-the-same-row-col)
)

(p p391
    { <c1> (context ^present << choose-between-nets-on-the-same-row-col choose-between-nets-on-the-same-row-col-con >>) }
    { <t1> (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <xy> ^level-pins <cou> ^total-pins <garb1>) }
  - (total ^net-name <> <nn> ^level-pins >= <cou>)
  - (total ^net-name <nn> ^row-col <> <rc> ^level-pins >= <cou>)
  -->
    (remove <c1> <t1>)
    (make change-priority)
    (make tran-total <rc> <xy> (substr <t1> nets inf))
)

(p p392
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <garb1> ^row-col { << row col >> <garb2> } ^coor <garb3> ^level-pins <cou> ^total-pins <cou>)
    { <t1> (total ^level-pins < <cou>) }
  -->
    (remove <t1>)
)

(p p393
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <garb1> ^row-col { << row col >> <garb2> } ^coor <garb3> ^level-pins <cou> ^total-pins <garb4>)
    { <t1> (total ^level-pins <cou1> ^total-pins { < <cou> <> <cou1> }) }
  -->
    (remove <t1>)
)

(p p394
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <garb1> ^level-pins <cou>)
    { <t1> (total ^net-name <nn> ^row-col <> <rc> ^level-pins <cou>) }
  -->
    (remove <t1>)
)

(p p395
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <xy> ^level-pins <cou> ^total-pins <garb1>)
    { <t1> (total ^net-name <nn> ^row-col <rc> ^coor <> <xy> ^level-pins <cou>) }
  -->
    (remove <t1>)
)

(p p396
    { <c1> (context ^present << choose-between-nets-on-the-same-row-col choose-between-nets-on-the-same-row-col-con >>) }
    { <t1> (total ^net-name <nn> ^row-col { << row col >> <rc> } ^coor <xy> ^level-pins <cou> ^total-pins <cou>) }
  - (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou>)
  -->
    (remove <c1> <t1>)
    (make change-priority)
    (make tran-total <rc> <xy> (substr <t1> nets inf))
)

(p p397
    { <t1> (tran-total <rc> <xy> { <nn> <> nil <> end } <min> <max>) }
  -->
    (write (crlf) |***** next net to be routed is| <nn> *****)
    (make next-segment <nn> <rc> <xy> useless <min> <max>)
    (remove <t1>)
    (make tran-total <rc> <xy> (substr <t1> 7 inf))
)

(p p398
    { <t1> (tran-total <rc> <xy> nil) }
  -->
    (make dominant-layer)
    (remove <t1>)
    (make goal cleanup total-verti)
    (make goal cleanup counted-verti)
    (make goal cleanup total)
    (make goal cleanup extend-ff-tried)
)

(p p399
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <nn> ^row-col { << row col >> <garb1> } ^coor <garb2> ^level-pins <cou> ^total-pins <cou>)
    { <t1> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins > <cou>) }
  -->
    (remove <t1>)
)

(p p400
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <nn> ^row-col { << row col >> <garb1> } ^coor <garb2> ^level-pins <cou> ^total-pins <cou1>)
    { <t1> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins > <cou1>) }
  - (total ^net-name <garb3> ^row-col <garb4> ^coor <garb5> ^level-pins <cou2> ^total-pins <cou2>)
  -->
    (remove <t1>)
)

(p p401
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <garb1> ^row-col <garb2> ^coor <garb3> ^level-pins <cou1> ^total-pins <cou2>)
    { <t1> (total ^net-name <garb4> ^row-col <garb5> ^coor <garb6> ^level-pins < <cou1> ^total-pins < <cou2>) }
  -->
    (remove <t1>)
)

(p p402
    (context ^present choose-between-nets-on-the-same-row-col)
  -->
    (modify 1 ^present choose-between-nets-on-the-same-row-col-con)
)

(p p403
    (context ^present choose-between-nets-on-the-same-row-col-con)
    { <t1> (total ^net-name <nn> ^row-col row ^level-pins <cou> ^total-pins <cou2> ^cong nil) }
    (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2>)
    (pin ^net-name <nn> ^pin-x <px1>)
  - (pin ^net-name <nn> ^pin-x < <px1>)
    (pin ^net-name <nn> ^pin-x { <px2> > <px1> })
  - (pin ^net-name <nn> ^pin-x > <px2>)
    (congestion ^direction col ^coordinate { >= <px1> <= <px2> } ^no-of-nets <non>)
  - (congestion ^direction col ^coordinate { >= <px1> <= <px2> } ^no-of-nets > <non>)
  -->
    (modify <t1> ^cong <non>)
)

(p p404
    (context ^present choose-between-nets-on-the-same-row-col-con)
    { <t1> (total ^net-name <nn> ^row-col col ^level-pins <cou> ^total-pins <cou2> ^cong nil) }
    (total <> <nn> { } { } <cou> <cou2>)
    (pin ^net-name <nn> ^pin-y <py1>)
  - (pin ^net-name <nn> ^pin-y < <py1>)
    (pin ^net-name <nn> ^pin-y { <py2> > <py1> })
  - (pin ^net-name <nn> ^pin-y > <py2>)
    (congestion ^direction row ^coordinate { >= <py1> <= <py2> } ^no-of-nets <non>)
  - (congestion ^direction row ^coordinate { >= <py1> <= <py2> } ^no-of-nets > <non>)
  -->
    (modify <t1> ^cong <non>)
)

(p p405
    (context ^present choose-between-nets-on-the-same-row-col-con)
    (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy <min1> ^max-xy <max1>)
    (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy { <min2> > <max1> } ^max-xy <max2>)
    { <t> (total ^net-name <nn1> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy <= <max1> ^max-xy >= <min2>) }
  -->
    (remove <t>)
)

(p p406
    (context ^present choose-between-nets-on-the-same-row-col-con)
    (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy <min1> ^max-xy <max1>)
    { <t> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil } ^min-xy >= <min1> ^max-xy <= <max1>) }
  -->
    (remove <t>)
)

(p p407
    (context ^present choose-between-nets-on-the-same-row-col-con)
    (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil })
    { <t> (total ^net-name { <nn1> <> <nn> } ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil }) }
    (<< vertical-cycle horizontal-cycle >> <nn1>)
  -->
    (remove <t>)
)

(p p408
    (context ^present choose-between-nets-on-the-same-row-col-con)
    (total ^net-name <nn> ^row-col row ^coor <y> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil })
    { <t> (total ^net-name { <nn1> <> <nn> } ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil }) }
    (pin ^net-name <nn1> ^pin-y { <py> < <y> } ^pin-channel-side << left right >>)
  - (pin ^net-name <nn> ^pin-y { > <py> < <y> } ^pin-channel-side << left right >>)
  -->
    (remove <t>)
)

(p p409
    (context ^present choose-between-nets-on-the-same-row-col-con)
    (total ^net-name <nn> ^row-col row ^coor <y> ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil })
    { <t> (total ^net-name { <nn1> <> <nn> } ^level-pins <cou> ^total-pins <cou2> ^cong { <non> <> nil }) }
    (pin ^net-name <nn1> ^pin-y { <py> > <y> } ^pin-channel-side << left right >>)
  - (pin ^net-name <nn> ^pin-y { > <y> < <py> } ^pin-channel-side << left right >>)
  -->
    (remove <t>)
)

(p p410
    (context ^present choose-between-nets-on-the-same-row-col-con)
    (total ^net-name <nn> ^level-pins <cou> ^total-pins <cou2> ^cong <non>)
  - (total ^cong nil)
    { <t> (total ^net-name <> <nn> ^level-pins <cou> ^total-pins <cou2> ^cong <= <non>) }
  -->
    (remove <t>)
)

(p p411
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <nn1> ^row-col <rc1> ^coor <xy1> ^level-pins <cou> ^total-pins > <cou>)
    { <t1> (total ^net-name <nn2> ^row-col { <rc2> <> <rc1> } ^coor <xy2> ^level-pins <cou> ^total-pins > <cou>) }
    { <t2> (total ^net-name <> <nn2> ^row-col <rc2> ^coor <xy2> ^level-pins <cou> ^total-pins > <cou>) }
  -->
    (remove <t1> <t2>)
)

(p p412
    (context ^present choose-between-nets-on-the-same-row-col)
    (total ^net-name <nn1> ^row-col <rc1> ^coor <xy1> ^level-pins <cou> ^total-pins > <cou>)
    { <t1> (total ^net-name <nn2> ^row-col <rc2> ^coor { <xy2> <> <xy1> } ^level-pins <cou> ^total-pins > <cou>) }
    { <t2> (total ^net-name <> <nn2> ^row-col <rc2> ^coor <xy2> ^level-pins <cou> ^total-pins > <cou>) }
  -->
    (remove <t1> <t2>)
)

(p p413
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-bottom-pins { <np> > 1 } ^net-is-routed <> yes)
  - (total-verti <nn> bottom)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
  -->
    (make total-verti <nn> bottom 0 <np>)
)

(p p414
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-bottom-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> bottom)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  -->
    (make total-verti <nn> bottom 0 <np>)
)

(p p415
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-bottom-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> bottom)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  -->
    (make total-verti <nn> bottom 0 <np>)
)

(p p416
    (context ^present find-no-of-vcg-hcg)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <garb1>)
    (pin ^net-name <nn> ^pin-x <gx> ^pin-channel-side top ^pin-name <pn1>)
    (net ^net-name { <nn1> <> <nn> } ^no-of-bottom-pins { <np> > 0 } ^net-is-routed <> yes)
    (pin ^net-name <nn1> ^pin-x <gx> ^pin-channel-side bottom ^pin-name <pn2>)
  - (total-verti <nn1> bottom)
  - (constraint ^constraint-type vertical ^net-name-1 <nn> ^net-name-2 <nn1> ^pin-name-1 <pn1> ^pin-name-2 <pn2>)
  -->
    (make counted-verti <nn1> bottom <nn> <pn1> <pn2>)
    (make total-verti <nn1> bottom 1 <np>)
)

(p p417
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-left-pins { <np> > 1 } ^net-is-routed <> yes)
  - (total-verti <nn> left)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side left)
  -->
    (make total-verti <nn> left 0 <np>)
)

(p p418
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-left-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> left)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side left)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  -->
    (make total-verti <nn> left 0 <np>)
)

(p p419
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-left-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> left)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side left)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  -->
    (make total-verti <nn> left 0 <np>)
)

(p p420
    (context ^present find-no-of-vcg-hcg)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <gy> ^grid-layer <garb3> ^pin-name <garb2>)
    (pin ^net-name <nn> ^pin-y <gy> ^pin-channel-side right ^pin-name <pn1>)
    (net ^net-name { <nn1> <> <nn> } ^no-of-left-pins { <np> > 0 } ^net-is-routed <> yes)
    (pin ^net-name <nn1> ^pin-y <gy> ^pin-channel-side left ^pin-name <pn2>)
  - (total-verti <nn1> left)
  - (constraint ^constraint-type horizontal ^net-name-1 <nn> ^net-name-2 <nn1> ^pin-name-1 <pn1> ^pin-name-2 <pn2>)
  -->
    (make counted-verti <nn1> left <nn> <pn1> <pn2>)
    (make total-verti <nn1> left 1 <np>)
)

(p p421
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-top-pins { <np> > 1 } ^net-is-routed <> yes)
  - (total-verti <nn> top)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
  -->
    (make total-verti <nn> top 0 <np>)
)

(p p422
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-top-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> top)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  -->
    (make total-verti <nn> top 0 <np>)
)

(p p423
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-top-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> top)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  -->
    (make total-verti <nn> top 0 <np>)
)

(p p424
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-right-pins { <np> > 1 } ^net-is-routed <> yes)
  - (total-verti <nn> right)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side right)
  -->
    (make total-verti <nn> right 0 <np>)
)

(p p425
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-right-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> right)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side right)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-1 <nn>)
  -->
    (make total-verti <nn> right 0 <np>)
)

(p p426
    (context ^present find-no-of-vcg-hcg)
    (net ^net-name <nn> ^no-of-right-pins { <np> > 0 } ^net-is-routed <> yes)
  - (total-verti <nn> right)
    (ff ^net-name <nn> ^grid-x <garb1> ^grid-y <garb2> ^grid-layer <garb3> ^pin-name <pn>)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side right)
    (constraint ^constraint-type << horizontal vertical >> ^net-name-2 <nn>)
  -->
    (make total-verti <nn> right 0 <np>)
)

(p p427
    (context ^present find-no-of-vcg-hcg)
    (total-verti <nn> bottom <ntc>)
    (constraint ^constraint-type vertical ^net-name-1 <tn> ^net-name-2 <nn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  - (counted-verti <nn> bottom <tn> <tpn> <bpn>)
  -->
    (make counted-verti <nn> bottom <tn> <tpn> <bpn>)
    (modify 2 ^4 (compute <ntc> + 1))
)

(p p428
    (context ^present find-no-of-vcg-hcg)
    (total-verti <nn> left <ntc>)
    (constraint ^constraint-type horizontal ^net-name-1 <tn> ^net-name-2 <nn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  - (counted-verti <nn> left <tn> <tpn> <bpn>)
  -->
    (make counted-verti <nn> left <tn> <tpn> <bpn>)
    (modify 2 ^4 (compute <ntc> + 1))
)

(p p429
    (context ^present find-no-of-vcg-hcg)
    (total-verti <nn> top <ntc>)
    (constraint ^constraint-type vertical ^net-name-1 <nn> ^net-name-2 <bn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  - (counted-verti <nn> top <bn> <tpn> <bpn>)
  -->
    (make counted-verti <nn> top <bn> <tpn> <bpn>)
    (modify 2 ^4 (compute <ntc> + 1))
)

(p p430
    (context ^present find-no-of-vcg-hcg)
    (total-verti <nn> right <ntc>)
    (constraint ^constraint-type horizontal ^net-name-1 <nn> ^net-name-2 <bn> ^pin-name-1 <tpn> ^pin-name-2 <bpn>)
  - (counted-verti <nn> right <bn> <tpn> <bpn>)
  -->
    (make counted-verti <nn> right <bn> <tpn> <bpn>)
    (modify 2 ^4 (compute <ntc> + 1))
)

(p p431
    (context ^present find-no-of-vcg-hcg)
  -->
    (remove 1)
    (make context ^previous find-no-of-vcg-hcg)
)

(p p432
    (context ^previous find-no-of-vcg-hcg)
    (total-verti)
  -->
    (remove 1)
    (make context ^present choose-between-total-verti)
    (make context ^present choose-between-total-verti-0)
)

(p p433
    (context ^present choose-between-total-verti)
  - (total-verti ^4 0)
    { <t> (total-verti <nn> bottom <garb> > 1) }
  - (ff ^net-name <nn> ^came-from south)
  -->
    (remove <t>)
)

(p p434
    (context ^present choose-between-total-verti)
  - (total-verti ^4 0)
    { <t> (total-verti <nn> top <garb> > 1) }
  - (ff ^net-name <nn> ^came-from north)
  -->
    (remove <t>)
)

(p p435
    (context ^present choose-between-total-verti)
  - (total-verti ^4 0)
    { <t> (total-verti <nn> left <garb> > 1) }
  - (ff ^net-name <nn> ^came-from west)
  -->
    (remove <t>)
)

(p p436
    (context ^present choose-between-total-verti)
  - (total-verti ^4 0)
    { <t> (total-verti <nn> right <garb> > 1) }
  - (ff ^net-name <nn> ^came-from east)
  -->
    (remove <t>)
)

(p p437
    (context ^present choose-between-total-verti)
  -->
    (modify 1 ^present extend-total-verti)
)

(p p438
    (context ^present choose-between-total-verti)
    (total-verti ^4 > 0)
    (total-verti ^4 0)
  -->
    (remove 3)
)

(p p439
    (context ^present choose-between-total-verti)
    (total-verti <nn> { << top bottom >> <tb> } > 0)
    (total-verti <nn> { << top bottom >> <> <tb> } 0)
  -->
    (remove 3)
)

(p p440
    (context ^present choose-between-total-verti)
    (total-verti <nn> { << left right >> <tb> } > 0)
    (total-verti <nn> { << left right >> <> <tb> } 0)
  -->
    (remove 3)
)

(p p441
    (context ^present choose-between-total-verti-0)
    (total-verti <nn> { << top bottom >> <tb> } > 0)
    (total-verti <nn> { << top bottom >> <> <tb> } > 0)
  -->
    (remove 2 3)
)

(p p442
    (context ^present choose-between-total-verti-0)
    (total-verti <nn> { << left right >> <tb> } > 0)
    (total-verti <nn> { << left right >> <> <tb> } > 0)
  -->
    (remove 2 3)
)

(p p443
    (context ^present choose-between-total-verti-0)
  -->
    (remove 1)
)

(p p444
    (context ^present extend-total-verti)
    (total-verti <nn> bottom ^5 > 1)
  - (total-verti ^5 1)
    (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy> ^com <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy> } ^max { > <min> > <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
    (congestion ^direction row ^coordinate <como> ^como <gy>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <como> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^min <min> ^max <gy> ^min-net <mn> ^max-net <nn> ^commo <vcmo> ^compo <vcpo> ^com <gx> ^layer <lay>)
    (modify 4 ^min <como> ^min-net <nn>)
    (make vertical ^net-name <nn> ^min <gy> ^max <como> ^layer <lay> ^commo <vcmo> ^compo <vcpo> ^pin-name <pn> ^com <gx>)
    (modify 3 ^grid-y <como> ^can-chng-layer nil)
    (remove 2)
)

(p p445
    (context ^present extend-total-verti)
    (total-verti <nn> left ^5 > 1)
  - (total-verti ^5 1)
    (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  - (ff ^net-name <nn> ^grid-x < <gx>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx> ^com <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { > <min> > <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
    (congestion ^direction col ^coordinate <como> ^como <gx>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gy> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <como> ^layer <lay>)
  -->
    (make horizontal ^net-name nil ^min <min> ^max <gx> ^min-net <mn> ^max-net <nn> ^commo <hcmo> ^compo <hcpo> ^com <gy> ^layer <lay>)
    (modify 4 ^min <como> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^min <gx> ^max <como> ^layer <lay> ^commo <hcmo> ^compo <hcpo> ^pin-name <pn> ^com <gy>)
    (modify 3 ^grid-x <como> ^can-chng-layer nil)
    (remove 2)
)

(p p446
    (context ^present extend-total-verti)
    (total-verti <nn> top ^5 > 1)
  - (total-verti ^5 1)
    (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy> ^com <gx>)
    (vertical ^net-name nil ^max { <max> >= <gy> } ^min { < <max> < <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^max-net <mn>)
    (congestion ^direction row ^coordinate <gy> ^como <como>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <como> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^min <gy> ^max <max> ^max-net <mn> ^min-net <nn> ^commo <vcmo> ^compo <vcpo> ^com <gx> ^layer <lay>)
    (modify 4 ^max <como> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <como> ^layer <lay> ^commo <vcmo> ^compo <vcpo> ^pin-name <pn> ^com <gx>)
    (modify 3 ^grid-y <como> ^can-chng-layer nil)
    (remove 2)
)

(p p447
    (context ^present extend-total-verti)
    (total-verti <nn> right ^5 > 1)
  - (total-verti ^5 1)
    (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn>)
  - (ff ^net-name <nn> ^grid-x > <gx>)
  - (horizontal ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx> ^status nil ^com <gy>)
    (horizontal ^net-name nil ^max { <max> >= <gx> } ^min { < <max> < <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^max-net <mn>)
    (congestion ^direction col ^coordinate <gx> ^como <como>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <como> ^max >= <como> ^com <gy> ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <como> ^layer <lay>)
  -->
    (make horizontal ^net-name nil ^min <gx> ^max <max> ^max-net <mn> ^min-net <nn> ^commo <hcmo> ^compo <hcpo> ^com <gy> ^layer <lay>)
    (modify 4 ^max <como> ^max-net <nn>)
    (make horizontal ^net-name <nn> ^max <gx> ^min <como> ^layer <lay> ^commo <hcmo> ^compo <hcpo> ^pin-name <pn> ^com <gy>)
    (modify 3 ^grid-x <como> ^can-chng-layer nil)
    (remove 2)
)

(p p448
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> bottom ^5 1) }
    (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
  - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin>)
    { <c6> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
    (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> >= <vvmin> < <vmin> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { >= <vvmin> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c6> ^max <hcom> ^max-net <nn>)
    (modify <c4> ^min <hcom>)
    (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from north)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p449
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> bottom ^5 1) }
    (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin> ^grid-layer <garb1> ^pin-name <garb2>) }
    { <c7> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay> ^compo <garb3> ^commo <garb4>) }
    (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> >= <vvmin> < <vmin> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { >= <vvmin> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c7> ^max <hcom> ^max-net <nn>)
    (modify <c4> ^min <hcom>)
    (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
    (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p450
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> bottom ^5 1) }
    (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
    { <c6> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay> ^compo <garb1> ^commo <garb2>) }
    (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> >= <vvmin> < <vmin> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { >= <vvmin> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
    { <c41> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin1> > <gy> } ^com { <vcom1> > <gx> } ^layer <lay> ^pin-name <pn1>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom1>)
    { <c61> (vertical ^net-name nil ^min <vvmin1> ^max { <vmin1> > <vvmin1> } ^com <vcom1> ^layer <lay>) }
    (horizontal ^net-name nil ^min { <hmin1> <= <gx> } ^max { > <hmin1> >= <vcom1> } ^com { <hcom1> >= <vvmin1> < <vmin1> <= <hcom> })
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom1> ^com { >= <vvmin1> < <hcom1> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom1> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin1> > <hcom1> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom1> ^max >= <vcom1> ^com <hcom1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom1> ^max >= <hcom1> ^com <vcom> ^layer <lay>)
  -->
    (modify <c61> ^max <hcom1> ^max-net <nn>)
    (modify <c41> ^min <hcom1>)
    (make pull-ff north <nn> <gx> <gy> <gx> <hcom1>)
    (make ff ^net-name <nn> ^pin-name <pn1> ^grid-layer <lay> ^grid-x <vcom1> ^grid-y <hcom1> ^came-from north)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p451
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> bottom ^5 1) }
    (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
  - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin>)
    { <c6> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay>) }
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> >= <vvmin> < <vmin> })
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { >= <vvmin> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c6> ^max <hcom> ^max-net <nn>)
    (modify <c4> ^min <hcom>)
    (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from north)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p452
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> bottom ^5 1) }
    (ff ^came-from south ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min { <vmin> > <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmin> ^grid-layer <garb1> ^pin-name <garb2>) }
    { <c7> (vertical ^net-name nil ^min <vvmin> ^max { <vmin> > <vvmin> } ^com <vcom> ^layer <lay>) }
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> >= <vvmin> < <vmin> })
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { >= <vvmin> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <vmin> > <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c7> ^max <hcom> ^max-net <nn>)
    (modify <c4> ^min <hcom>)
    (make pull-ff north <nn> <gx> <gy> <gx> <hcom>)
    (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p453
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> top ^5 1) }
    (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
  - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax>)
    { <c6> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> <= <vvmax> > <vmax> })
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { <= <vvmax> > <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c6> ^min <hcom> ^min-net <nn>)
    (modify <c4> ^max <hcom>)
    (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from south)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p454
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> top ^5 1) }
    (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> > <gx> } ^layer <lay> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax> ^grid-layer <garb2> ^pin-name <garb3>) }
    { <c7> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom> } ^com { <hcom> <= <vvmax> > <vmax> })
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com { <= <vvmax> > <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <gx> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c7> ^min <hcom> ^min-net <nn>)
    (modify <c4> ^max <hcom>)
    (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
    (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p455
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> top ^5 1) }
    (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
  - (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax>)
    { <c6> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
    (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> <= <vvmax> > <vmax> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { <= <vvmax> > <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c6> ^min <hcom> ^min-net <nn>)
    (modify <c4> ^max <hcom>)
    (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from south)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p456
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> top ^5 1) }
    (ff ^came-from north ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <vmax> < <gy> } ^com { <vcom> < <gx> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (vertical-s ^net-name <> <nn> ^com <vcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <vcom> ^grid-y <vmax> ^grid-layer <garb4> ^pin-name <garb5>) }
    { <c7> (vertical ^net-name nil ^min <vmax> ^max { <vvmax> > <vmax> } ^com <vcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
    (horizontal ^net-name nil ^min { <hmin> <= <vcom> } ^max { > <hmin> >= <gx> } ^com { <hcom> <= <vvmax> > <vmax> })
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com { <= <vvmax> > <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <vcom> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <vmax> < <hcom> })
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  -->
    (modify <c7> ^min <hcom> ^min-net <nn>)
    (modify <c4> ^max <hcom>)
    (make pull-ff south <nn> <gx> <gy> <gx> <hcom>)
    (modify <c5> ^grid-y <hcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p457
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> left ^5 1) }
    (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  - (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom>)
    { <c6> (horizontal ^net-name nil ^min <hhmin> ^max { <hmin> > <hhmin> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
    (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> >= <hhmin> < <hmin> })
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { >= <hhmin> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c6> ^max <vcom> ^max-net <nn>)
    (modify <c4> ^min <vcom>)
    (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from east)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p458
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> left ^5 1) }
    (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
    { <c7> (horizontal ^net-name nil ^min <hhmin> ^max { <hmin> > <hhmin> } ^com <hcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
    (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> >= <hhmin> < <hmin> })
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { >= <hhmin> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c7> ^max <vcom> ^max-net <nn>)
    (modify <c4> ^min <vcom>)
    (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
    (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p459
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> left ^5 1) }
    (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  - (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom>)
    { <c6> (horizontal ^net-name nil ^max <hmin> ^min { <hhmin> < <hmin> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> >= <hhmin> < <hmin> })
  - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { >= <hhmin> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c6> ^max <vcom> ^max-net <nn>)
    (modify <c4> ^min <vcom>)
    (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from east)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p460
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> left ^5 1) }
    (ff ^came-from west ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <hmin> > <gx> } ^max <garb1> ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <hmin> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
    { <c7> (horizontal ^net-name nil ^min <hhmin> ^max { <hmin> > <hhmin> } ^com <hcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> >= <hhmin> < <hmin> })
  - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { >= <hhmin> < <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { < <hmin> > <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c7> ^max <vcom> ^max-net <nn>)
    (modify <c4> ^min <vcom>)
    (make pull-ff east <nn> <gx> <gy> <gy> <vcom>)
    (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p461
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> right ^5 1) }
    (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  - (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom>)
    { <c6> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <garb5>) }
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> <= <hhmax> > <hmax> })
  - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { <= <hhmax> > <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c6> ^min <vcom> ^min-net <nn>)
    (modify <c4> ^max <vcom>)
    (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from west)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p462
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> right ^5 1) }
    (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> > <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
    { <c7> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <gabr6> ^commo <garb7>) }
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom> } ^com { <vcom> <= <hhmax> > <hmax> })
  - (vertical ^net-name nil ^min <= <gy> ^max >= <hcom> ^com { <= <hhmax> > <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <gy> < <hcom> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c7> ^min <vcom> ^min-net <nn>)
    (modify <c4> ^max <vcom>)
    (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
    (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p463
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> right ^5 1) }
    (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
  - (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom>)
    { <c6> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <garb4> ^commo <gabr5>) }
    (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> <= <hhmax> > <hmax> })
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { <= <hhmax> > <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c6> ^min <vcom> ^min-net <nn>)
    (modify <c4> ^max <vcom>)
    (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-layer <lay> ^grid-x <vcom> ^grid-y <hcom> ^came-from west)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p464
    (context ^present extend-total-verti)
    { <c2> (total-verti <nn> right ^5 1) }
    (ff ^came-from east ^net-name <nn> ^grid-x <gx> ^grid-y <gy>)
    { <c4> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <hmax> < <gx> } ^com { <hcom> < <gy> } ^layer <lay> ^compo <garb2> ^commo <garb3> ^pin-name <pn>) }
  - (horizontal-s ^net-name <> <nn> ^com <hcom>)
    { <c5> (ff ^net-name <nn> ^grid-x <hmax> ^grid-y <hcom> ^grid-layer <garb4> ^pin-name <garb5>) }
    { <c7> (horizontal ^net-name nil ^min <hmax> ^max { <hhmax> > <hmax> } ^com <hcom> ^layer <lay> ^compo <garb6> ^commo <garb7>) }
    (vertical ^net-name nil ^min { <vmin> <= <hcom> } ^max { > <vmin> >= <gy> } ^com { <vcom> <= <hhmax> > <hmax> })
  - (vertical ^net-name nil ^min <= <hcom> ^max >= <gy> ^com { <= <hhmax> > <vcom> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom> < <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { > <hmax> < <vcom> })
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <vcom> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom> ^max >= <vcom> ^com <hcom> ^layer <lay>)
  -->
    (modify <c7> ^min <vcom> ^min-net <nn>)
    (modify <c4> ^max <vcom>)
    (make pull-ff west <nn> <gx> <gy> <gy> <vcom>)
    (modify <c5> ^grid-x <vcom> ^grid-layer <lay>)
    (modify 1 ^present find-no-of-pins-on-a-row-col)
)

(p p465
    { <c1> (context ^present remove-total-verti-gt1) }
  -->
    (modify <c1> ^present find-no-of-pins-on-a-row-col)
)

(p p466
    { <c1> (context ^present extend-total-verti) }
  -->
    (modify <c1> ^present remove-total-verti-gt1)
)

(p p467
    (context ^present remove-total-verti-gt1)
    (total-verti ^5 > 1)
    { <t> (total-verti ^5 1) }
  -->
    (remove <t>)
)

(p p468
    { <c1> (context ^present remove-total-verti-gt1) }
    (total-verti ^5 > 1)
  - (total-verti ^5 1)
  -->
    (make remove-all-total-vertis)
    (modify <c1> ^present extend-total-verti)
)

(p p469
    { <c1> (context ^present remove-total-verti-gt1) }
    { <c> (remove-all-total-vertis) }
  - (total-verti)
  -->
    (remove <c>)
    (modify <c1> ^present propagate-constraint)
)

(p p470
    { <c1> (context ^present remove-total-verti-gt1) }
    { <c> (remove-all-total-vertis) }
  -->
    (remove <c>)
    (modify <c1> ^present find-no-of-pins-on-a-row-col)
)

(p p471
    { <c1> (context ^present << extend-total-verti remove-total-verti-gt1 >>) }
  - (total-verti)
  -->
    (modify <c1> ^present propagate-constraint)
)

(p p515
    { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  - (total)
    { <p> (pull-ff north <nn> <gx> <gy1> <gx> <gy2>) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from south ^pin-name <pn>) }
    { <v> (vertical ^net-name nil ^min <gy1> ^max >= <gy2> ^com <gx> ^layer <lay>) }
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  -->
    (remove <p> <c>)
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <gy2>)
    (modify <v> ^min <gy2> ^min-net <nn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p516
    { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  - (total)
    { <p> (pull-ff south <nn> <gx> <gy1> <gx> <gy2>) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from north ^pin-name <pn>) }
    { <v> (vertical ^net-name nil ^min <= <gy2> ^max <gy1> ^com <gx> ^layer <lay>) }
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  -->
    (remove <p> <c>)
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <gy2>)
    (modify <v> ^max <gy2> ^max-net <nn>)
    (modify <ff> ^grid-y <gy2> ^can-chng-layer nil)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p517
    { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  - (total)
    { <p> (pull-ff east <nn> <gx1> <gy> <gx2> <gy>) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from west ^pin-name <pn>) }
    { <v> (horizontal ^net-name nil ^min <gx1> ^max >= <gx2> ^com <gy> ^layer <lay>) }
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove <p> <c>)
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^max <gx2>)
    (modify <v> ^min <gx2> ^min-net <nn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p518
    { <c> (context ^previous find-no-of-pins-on-a-row-col) }
  - (total)
    { <p> (pull-ff west <nn> <gx1> <gy> <gx2> <gy>) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy1> ^grid-layer <lay> ^came-from east ^pin-name <pn>) }
    { <v> (horizontal ^net-name nil ^min <= <gx2> ^max <gx1> ^com <gy> ^layer <lay>) }
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove <p> <c>)
    (make (substr <v> 1 inf) ^net-name <nn> ^pin-name <pn> ^min <gx2>)
    (modify <v> ^max <gx2> ^max-net <nn>)
    (modify <ff> ^grid-x <gx2> ^can-chng-layer nil)
    (make context ^present find-no-of-pins-on-a-row-col)
)

(p p293
    (eliminate-total)
    (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
    { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy <min2> ^max-xy { <max2> > <max1> } ^level-pins < <p1>) }
  - (total ^row-col <rc> ^coor <xy> ^max-xy < <min2>)
  - (total ^row-col <rc> ^coor <xy> ^min-xy { > <max1> < <max2> })
  -->
    (remove <t1>)
)

(p p294
    (eliminate-total)
    (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
    { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy <min2> ^max-xy { <max2> < <max1> } ^level-pins < <p1>) }
  - (total ^row-col <rc> ^coor <xy> ^max-xy < <min2>)
  - (total ^row-col <rc> ^coor <xy> ^min-xy { > <max2> < <max1> })
  -->
    (remove <t1>)
)

(p p295
    (eliminate-total)
    (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
    { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy { <min2> < <min1> } ^max-xy <max2> ^level-pins < <p1>) }
  - (total ^row-col <rc> ^coor <xy> ^min-xy > <max2>)
  - (total ^row-col <rc> ^coor <xy> ^max-xy { > <min2> < <min1> })
  -->
    (remove <t1>)
)

(p p296
    (eliminate-total)
    (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^min-xy <min1> ^max-xy <max1> ^level-pins <p1>)
    { <t1> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy { <min2> > <min1> } ^max-xy <max2> ^level-pins < <p1>) }
  - (total ^row-col <rc> ^coor <xy> ^min-xy > <max2>)
  - (total ^row-col <rc> ^coor <xy> ^max-xy { > <min1> < <min2> })
  -->
    (remove <t1>)
)

(p p297
    (context ^present merge)
    { <m> (merge-direction left) }
    { <t1> (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^level-pins <lcou> ^total-pins <tcou> ^min-xy <min> ^max-xy <max>) }
  - (rmerge)
  - (total ^net-name <> <nn1> ^row-col <rc> ^coor <xy> ^max-xy < <max>)
    (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^min-xy > <max>)
  -->
    (remove <m>)
    (make merge-direction right)
    (make lmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou> (substr <t1> nets inf))
)

(p p298
    (context ^present merge)
    { <m> (merge-direction right) }
    { <t1> (total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^level-pins <lcou> ^total-pins <tcou> ^min-xy <min> ^max-xy <max>) }
  - (lmerge)
  - (total ^net-name <> <nn1> ^row-col <rc> ^coor <xy> ^min-xy > <min>)
    (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^max-xy < <min>)
  -->
    (remove <m>)
    (make merge-direction left)
    (make rmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou> (substr <t1> nets inf))
)

(p p299
    { <c> (lmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou>) }
    { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy { <min1> > <max> } ^max-xy <max1>) }
  - (total ^row-col <rc> ^coor <xy> ^min-xy > <max> ^max-xy < <min1>)
  - (place-holder <rc> <xy> > <max> < <min1>)
  -->
    (make total ^net-name <nn1> ^row-col <rc> ^coor <xy> ^level-pins (compute <lcou> + <cou3>) ^total-pins (compute <tcou> + <cou4>) ^min-xy <min> ^max-xy <max1> ^nets (substr <c> 9 inf) (substr <t2> nets inf))
    (make delete-merged <nn2> <rc> <xy> <min1> <max1> (genatom))
)

(p p300
    { <c> (rmerge <nn1> <rc> <xy> <min> <max> <lcou> <tcou>) }
    { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy <min1> ^max-xy { <max1> < <min> }) }
  - (total ^row-col <rc> ^coor <xy> ^min-xy > <max1> ^max-xy < <min>)
  - (place-holder <rc> <xy> > <max1> < <min>)
  -->
    (make total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins (compute <lcou> + <cou3>) ^total-pins (compute <tcou> + <cou4>) ^min-xy <min1> ^max-xy <max> ^nets (substr <c> 9 inf) (substr <t2> nets inf))
    (make rdelete-merged <nn2> <rc> <xy> <min1> <max1> (genatom))
)

(p p301
    { <d> (delete-merged <nn> <rc> <xy> <min> <max> <id>) }
    (delete-merged <nn> <rc> <xy> <min> <max> <> <id>)
  -->
    (remove <d>)
)

(p p302
    { <d> (rdelete-merged <nn> <rc> <xy> <min> <max> <id>) }
    (rdelete-merged <nn> <rc> <xy> <min> <max> <> <id>)
  -->
    (remove <d>)
)

(p p303
    (delete-merged <nn> <rc> <xy> <min> <max>)
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  - (lmerge)
  -->
    (remove <t>)
)

(p p304
    (rdelete-merged <nn> <rc> <xy> <min> <max>)
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  - (rmerge)
  -->
    (remove <t>)
)

(p p305
    { <d> (<< delete-merged rdelete-merged >>) }
  - (<< lmerge rmerge >>)
  -->
    (remove <d>)
)

(p p306
    (delete-merged <nn> <rc> <xy> <min> <max>)
    { <t1> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max> ^level-pins <cou1> ^total-pins <cou2>) }
    { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy <min1> ^max-xy { <max1> < <min> }) }
  - (lmerge)
  -->
    (make place-holder <rc> <xy> <min> <max> (genatom))
    (make total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins (compute <cou1> + <cou3>) ^total-pins (compute <cou2> + <cou4>) ^min-xy <min1> ^max-xy <max> ^nets (substr <t1> nets inf) (substr <t2> nets inf))
)

(p p307
    (rdelete-merged <nn> <rc> <xy> <min> <max>)
    { <t1> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max> ^level-pins <cou1> ^total-pins <cou2>) }
    { <t2> (total ^net-name <nn2> ^row-col <rc> ^coor <xy> ^level-pins <cou3> ^total-pins <cou4> ^min-xy { <min1> > <max> } ^max-xy <max1>) }
  - (rmerge)
  -->
    (make place-holder <rc> <xy> <min> <max> (genatom))
    (make total ^net-name <nn> ^row-col <rc> ^coor <xy> ^level-pins (compute <cou1> + <cou3>) ^total-pins (compute <cou2> + <cou4>) ^min-xy <min> ^max-xy <max1> ^nets (substr <t1> nets inf) (substr <t2> nets inf))
)

(p p308
    { <p> (place-holder <rc> <xy> <min> <max> <id>) }
    (place-holder <rc> <xy> <min> <max> <> <id>)
  -->
    (remove <p>)
)

(p p309
    (<< lmerge rmerge >>)
    { <p> (place-holder <rc> <xy> <min> <max> <id>) }
  - (total ^row-col <rc> ^coor <xy> ^max-xy < <min>)
  -->
    (remove <p>)
)

(p p310
    (<< lmerge rmerge >>)
    { <p> (place-holder <rc> <xy> <min> <max> <id>) }
  - (total ^row-col <rc> ^coor <xy> ^min-xy > <max>)
  -->
    (remove <p>)
)

(p p311
    (context ^present merge)
    { <l> (lmerge <nn> <rc> <xy> <min> <max>) }
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  -->
    (remove <l> <t>)
)

(p p312
    (context ^present merge)
    { <l> (rmerge <nn> <rc> <xy> <min> <max>) }
    { <t> (total ^net-name <nn> ^row-col <rc> ^coor <xy> ^min-xy <min> ^max-xy <max>) }
  -->
    (remove <l> <t>)
)

(p p313
    (context ^present merge)
    (total ^level-pins <cou> ^total-pins <cou>)
  - (total ^level-pins { <cou1> > <cou> } ^total-pins <cou1>)
    { <m> (maximum-total < <cou>) }
  -->
    (modify <m> ^2 <cou>)
)

(p p314
    (context ^present merge)
    (total ^row-col row ^coor 1 ^level-pins <cou> ^total-pins <cou>)
  - (total ^row-col row ^coor 1 ^level-pins { <cou1> > <cou> } ^total-pins <cou1>)
    { <m> (maximum-total ^5 1 < <cou>) }
  -->
    (modify <m> ^6 <cou>)
)

(p p315
    (context ^present merge)
    (last-row <lr>)
    (total ^row-col row ^coor <lr> ^level-pins <cou> ^total-pins <cou>)
  - (total ^row-col row ^coor <lr> ^level-pins { <cou1> > <cou> } ^total-pins <cou1>)
    { <m> (maximum-total ^7 <lr> < <cou>) }
  -->
    (modify <m> ^8 <cou>)
)

(p p316
    (context ^present merge)
    (total ^level-pins <cou1> ^total-pins <cou2>)
  - (total ^level-pins > <cou1> ^total-pins > <cou2>)
    { <m> (maximum-total <garb4> { <min1> < <cou1> }) }
  -->
    (modify <m> ^3 <cou1> ^4 <cou2>)
)

(p p317
    { <con> (context ^present merge) }
  -->
    (modify <con> ^present delete-totals)
    (make goal cleanup eliminate-total)
    (make goal cleanup merge-direction)
)

(p p318
    (context ^present delete-totals)
    (maximum-total <max> <garb1> <garb2>)
    { <t> (total ^level-pins { <cou> < <max> } ^total-pins <> <cou>) }
  -->
    (remove <t>)
)

(p p319
    (context ^present delete-totals)
    (maximum-total ^5 1 ^6 <cou>)
    { <t> (total ^row-col row ^coor 1 ^level-pins { <cou1> < <cou> } ^total-pins <cou1>) }
  -->
    (remove <t>)
)

(p p320
    (context ^present delete-totals)
    (maximum-total ^7 <lr> ^8 <cou>)
    { <t> (total ^row-col row ^coor <lr> ^level-pins { <cou1> < <cou> } ^total-pins <cou1>) }
  -->
    (remove <t>)
)

(p p321
    (context ^present delete-totals)
    (maximum-total <garb1> <min> <max>)
    { <t> (total ^level-pins { <cou> < <min> }) }
    (last-row <lr>)
    (total ^row-col row ^coor { <> 1 <> <lr> })
  -->
    (remove <t>)
)

(p p322
    (context ^present delete-totals)
    (total ^row-col <rc> ^coor <xy> ^level-pins <min> ^total-pins <max>)
    { <t1> (total ^row-col <rc> ^coor <xy> ^level-pins { <cou> <= <min> } ^total-pins > <max>) }
  -->
    (remove <t1>)
)

(p p323
    (context ^present delete-totals)
    { <m> (maximum-total <garb1> <garb2> <garb3>) }
  -->
    (remove <m>)
)

(p p324
    { <c1> (context ^present delete-totals) }
  - (maximum-total)
    { <t1> (total ^net-name <nn1> ^row-col row ^coor 1) }
    { <t2> (total ^net-name <nn2> ^row-col row ^coor <lr>) }
  - (total ^row-col row ^coor { <> 1 <> <lr> })
    (last-row <lr>)
  -->
    (remove <c1> <t1> <t2>)
    (make change-priority)
    (make tran-total row 1 (substr <t1> nets inf) end)
    (make tran-total row <lr> (substr <t2> nets inf) end)
    (make goal cleanup total)
)

(p p325
    (context ^present delete-totals)
  - (maximum-total)
    (total ^net-name <nn1> ^row-col row ^coor 1)
    (total ^net-name <nn2> ^row-col row ^coor <lr>)
    { <t1> (total ^net-name <> <nn1> ^row-col row ^coor 1) }
    (last-row <lr>)
  -->
    (remove <t1>)
)

(p p326
    { <t1> (tran-total <rc> <xy1> end) }
    { <t2> (tran-total <rc> <> <xy1> end) }
  -->
    (remove <t2>)
    (modify <t1> ^4 nil)
)

(p p519
    (context ^present random1)
    (net ^net-name <nn> ^net-no-of-pins 2)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>)
    (vertical-layer <lay>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> <= <gy1> } ^grid-layer <lay>)
    (vertical ^net-name nil ^min { <vmin1> <= <gy1> } ^max { <vmax1> > <vmin1> >= <gy1> } ^com <gx1> ^layer <lay> ^compo <gx2> ^commo <cmo> ^min-net <vnn1>)
    (vertical ^net-name nil ^min { <vmin2> <= <gy2> } ^max { <vmax2> > <vmin2> >= <gy2> >= <vmin1> } ^com <gx2> ^layer <lay> ^compo <cpo> ^commo <garb1> ^max-net <vnn2>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> >= <gx2> > <hmin> } ^com { <hcom> <= <vmax1> >= <vmin1> <= <vmax2> >= <vmin2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
  - (horizontal ^net-name <> nil ^com <hcom>)
  -->
    (remove 1 3 5)
    (make vertical ^com <gx1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <gx2> ^commo <cmo> ^min-net <vnn1> ^max-net <nn>)
    (modify 6 ^min <gy1> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <lay> ^min <hcom> ^max <vmax2> ^compo <cpo> ^commo <gx1> ^min-net <nn> ^max-net <vnn2>)
    (modify 7 ^max <gy2> ^max-net <nn>)
    (make horizontal ^min <hmin> ^max <gx1> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 8 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <lay> ^min <hcom> ^max <gy1> ^commo <cmo> ^compo <gx2> ^net-name <nn> ^pin-name <pn>)
    (make vertical ^com <gx2> ^layer <lay> ^max <hcom> ^min <gy2> ^commo <gx1> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <hcom> ^layer <lay> ^min <gx1> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p520
    (context ^present random1)
    (net ^net-name <nn> ^net-no-of-pins 2)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn>)
    (horizontal-layer <lay>)
    (ff ^net-name <nn> ^grid-x { <gx2> >= <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <lay>)
    (horizontal ^net-name nil ^min { <hmin1> <= <gx1> } ^max { <hmax1> > <hmin1> >= <gx1> } ^com <gy1> ^layer <lay> ^compo <gy2> ^commo <cmo> ^max-net <hnn1>)
    (horizontal ^net-name nil ^min { <hmin2> <= <gx2> } ^max { <hmax2> > <hmin2> >= <gx2> >= <hmax1> } ^com <gy2> ^layer <lay> ^compo <cpo> ^commo <garb1> ^min-net <hnn2>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> >= <gy2> > <vmin> } ^com { <vcom> <= <hmax1> >= <hmin1> <= <hmax2> >= <hmin2> } ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
  - (vertical ^net-name <> nil ^com <vcom>)
  -->
    (remove 1 3 5)
    (make horizontal ^com <gy1> ^layer <lay> ^min <vcom> ^max <hmax1> ^compo <gy2> ^commo <cmo> ^min-net <nn> ^max-net <hnn1>)
    (modify 6 ^max <gx1> ^max-net <nn>)
    (make horizontal ^com <gy2> ^layer <lay> ^min <hmin2> ^max <vcom> ^compo <cpo> ^commo <gy1> ^min-net <hnn2> ^max-net <nn>)
    (modify 7 ^min <gx2> ^min-net <nn>)
    (make vertical ^min <vmin> ^max <gy1> ^com <vcom> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 8 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <lay> ^min <gx1> ^max <vcom> ^commo <cmo> ^compo <gy2> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <lay> ^min <vcom> ^max <gx2> ^commo <gy1> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (make vertical ^com <vcom> ^layer <lay> ^min <gy1> ^max <gy2> ^commo <vcmo> ^compo <vcpo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p521
    (context ^present random1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> > <gx> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { >= <gx> < <vcom1> })
    (vertical ^com { <vcom2> <= <vcom1> > <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom2>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom2> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom2> ^max >= <vcom2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <vcom2> >= <gx> } ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x < <gx>)
  - (ff ^grid-x <vcom2> ^grid-y <gy>)
  -->
    (make made-random-move)
    (make horizontal ^min <hmin> ^layer <lay> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <vcom2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <vcom2> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify 2 ^grid-x <vcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from west)
)

(p p522
    (context ^present random1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> < <gx> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { <= <gx> > <vcom1> })
    (vertical ^com { <vcom2> >= <vcom1> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom2> ^max >= <gx>)
    (horizontal ^net-name nil ^min { <hmin> <= <vcom2> } ^max { > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom2> ^max >= <vcom2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <gx> >= <vcom2> } ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x > <gx>)
  - (ff ^grid-x <vcom2> ^grid-y <gy>)
  -->
    (make made-random-move)
    (make horizontal ^min <hmin> ^layer <lay> ^max <vcom2> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <gx> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <vcom2> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify 2 ^grid-x <vcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
)

(p p523
    (context ^present random1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <vcom1> < <gx> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { <= <gx> > <vcom1> })
    (vertical ^com { <vcom2> >= <vcom1> < <gx> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom2> ^max >= <gx>)
    (horizontal ^net-name nil ^min { <hmin> <= <vcom2> } ^max { > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom2> ^max >= <vcom2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <= <gx> >= <vcom2> } ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x > <gx>)
  - (ff ^grid-x <vcom2> ^grid-y <gy>)
  -->
    (make made-random-move)
    (make horizontal ^min <hmin> ^layer <lay> ^max <vcom2> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <gx> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <vcom2> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify 2 ^grid-x <vcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
)

(p p524
    (context ^present random1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> < <gy> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom1> <= <gy> })
    (horizontal ^com { <hcom2> >= <hcom1> < <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcom2> ^max >= <gy>)
    (vertical ^net-name nil ^min { <vmin> <= <hcom2> } ^max { > <vmin> >= <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <hcom2> <= <gy> } ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom2> ^max >= <hcom2> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  - (ff ^grid-x <gx> ^grid-y <hcom2>)
  -->
    (make made-random-move)
    (make vertical ^min <vmin> ^layer <lay> ^max <hcom2> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^min <hcom2> ^max <gy> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
    (modify 2 ^grid-y <hcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from north)
)

(p p525
    (context ^present random1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> > <gy> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <hcom1> >= <gy> })
    (horizontal ^com { <hcom2> <= <hcom1> > <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <hcom2>)
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom2> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <gy> <= <hcom2> } ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom2> ^max >= <hcom2> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  - (ff ^grid-x <gx> ^grid-y <hcom2>)
  -->
    (make made-random-move)
    (make vertical ^min <vmin> ^layer <lay> ^max <gy> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <hcom2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy> ^max <hcom2> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
    (modify 2 ^grid-y <hcom2> ^grid-layer <lay> ^can-chng-layer nil ^came-from south)
)

(p p526
    (context ^present random1)
  -->
    (remove 1)
    (make context ^present check-random-move)
)

(p p527
    { <c> (context ^present check-random-move) }
    { <m> (made-random-move) }
  -->
    (remove <c> <m>)
    (make context ^present check-for-routed-net)
    (make goal cleanup made-random-move)
)

(p p528
    { <c> (context ^present check-random-move) }
  - (made-random-move)
  -->
    (remove <c>)
    (make context ^present random2)
)

(p p529
    (context ^present random2)
  -->
    (write (crlf) |Sorry, I can not proceed anymore because of my ignorance.|)
    (halt)
)

(p p530
    (context ^present random0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  - (ff ^net-name <nn> ^pin-name <> <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> < <gy> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { > <hcom1> <= <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcom1> ^max >= <gy>)
    (vertical ^net-name nil ^min { <vmin> <= <hcom1> } ^max { > <vmin> >= <gy> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
    (vertical-layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <hcom1> <= <gy> } ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom1> ^max >= <hcom1> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  -->
    (remove 1)
    (make vertical ^min <vmin> ^layer <lay> ^max <hcom1> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
    (modify 4 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^min <hcom1> ^max <gy> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
    (modify 2 ^grid-y <hcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from north)
    (make context ^present propagate-constraint)
)

(p p531
    (context ^present random0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  - (ff ^net-name <nn> ^pin-name <> <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^com { <hcom1> > <gy> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^com { < <hcom1> >= <gy> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <hcom1>)
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { > <vmin> >= <hcom1> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
    (vertical-layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { >= <gy> <= <hcom1> } ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <hcom1> ^max >= <hcom1> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  -->
    (remove 1)
    (make vertical ^min <vmin> ^layer <lay> ^max <gy> ^com <gx> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn>)
    (modify 4 ^min <hcom1> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy> ^max <hcom1> ^commo <vcmo> ^compo <vcpo> ^layer <lay> ^com <gx>)
    (modify 2 ^grid-y <hcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from south)
    (make context ^present propagate-constraint)
)

(p p532
    (context ^present random0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  - (ff ^net-name <nn> ^pin-name <> <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> < <gx> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { <= <gx> > <vcom1> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom1> ^max >= <gx>)
    (horizontal ^net-name nil ^min { <hmin> <= <vcom1> } ^max { > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
    (horizontal-layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom1> ^max >= <vcom1> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <vcom1> <= <gx> } ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x > <gx>)
  -->
    (remove 1)
    (make horizontal ^min <hmin> ^layer <lay> ^max <vcom1> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify 4 ^min <gx> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <vcom1> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify 2 ^grid-x <vcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
    (make context ^present propagate-constraint)
)

(p p533
    (context ^present random0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
  - (ff ^net-name <nn> ^pin-name <> <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^com { <vcom1> > <gx> })
  - (vertical ^status nil ^net-name { <nn> <> nil } ^com { >= <gx> < <vcom1> })
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom1>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { > <hmin> >= <vcom1> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
    (horizontal-layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <vcom1> ^max >= <vcom1> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { >= <gx> <= <vcom1> } ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x < <gx>)
  -->
    (remove 1)
    (make horizontal ^min <hmin> ^layer <lay> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify 4 ^min <vcom1> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <vcom1> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify 2 ^grid-x <vcom1> ^grid-layer <lay> ^can-chng-layer nil ^came-from west)
    (make context ^present propagate-constraint)
)

(p p534
    { <c> (context ^present random2) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (vertical ^status nil ^net-name { <nn> <> nil } ^com > <gx>)
    { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
    (congestion ^direction col ^coordinate <gx2> ^como <gx>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  -->
    (make horizontal ^min <hmin> ^layer <lay> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify <h> ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify <ff> ^grid-x <gx2> ^grid-layer <lay> ^can-chng-layer nil ^came-from west)
    (remove <c>)
    (make context ^present check-for-routed-net)
)

(p p535
    { <c> (context ^present random2) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (vertical ^status nil ^net-name { <nn> <> nil } ^com < <gx>)
    { <h> (horizontal ^net-name nil ^min { <hmin> < <gx> } ^max { <hmax> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
    (congestion ^direction col ^coordinate <gx> ^como <gx2>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  -->
    (make horizontal ^min <hmin> ^layer <lay> ^max <gx2> ^com <gy> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify <h> ^min <gx> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^min <gx2> ^max <gx> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gy>)
    (modify <ff> ^grid-x <gx2> ^grid-layer <lay> ^can-chng-layer nil ^came-from east)
    (remove <c>)
    (make context ^present check-for-routed-net)
)

(p p536
    { <c> (context ^present random2) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^com > <gy>)
    { <h> (vertical ^net-name nil ^min { <hmin> <= <gy> } ^max { <hmax> > <gy> } ^com <gx> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
    (congestion ^direction row ^coordinate <gy2> ^como <gy>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  -->
    (make vertical ^min <hmin> ^layer <lay> ^max <gy> ^com <gx> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify <h> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy> ^max <gy2> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gx>)
    (modify <ff> ^grid-y <gy2> ^grid-layer <lay> ^can-chng-layer nil ^came-from south)
    (remove <c>)
    (make context ^present check-for-routed-net)
)

(p p537
    { <c> (context ^present random2) }
    { <ff> (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>) }
    (horizontal ^status nil ^net-name { <nn> <> nil } ^com < <gy>)
    { <h> (vertical ^net-name nil ^min { <hmin> < <gy> } ^max { <hmax> >= <gy> } ^com <gx> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>) }
    (congestion ^direction row ^coordinate <gy> ^como <gy2>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  -->
    (make vertical ^min <hmin> ^layer <lay> ^max <gy2> ^com <gx> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn>)
    (modify <h> ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^min <gy2> ^max <gy> ^commo <hcmo> ^compo <hcpo> ^layer <lay> ^com <gx>)
    (modify <ff> ^grid-y <gy2> ^grid-layer <lay> ^can-chng-layer nil ^came-from north)
    (remove <c>)
    (make context ^present check-for-routed-net)
)

(p p558
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> <= <nmax> } ^grid-y <gy>)
  - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com <gy> ^layer <> <lay>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove 2 3)
    (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
)

(p p559
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> > <gx1> <= <nmax> })
  - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx1> < <gx2> })
    (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove 2)
    (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
)

(p p560
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> < <gx1> >= <nmin> })
  - (ff ^net-name <nn> ^grid-x { < <gx1> > <gx2> } ^grid-y <gy>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { < <gx1> > <gx2> })
    (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> >= <gx1> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx2> ^max >= <gx1> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove 2)
    (make horizontal ^com <gy> ^min <min> ^max <gx2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make horizontal ^com <gy> ^min <gx1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gx2> ^max <gx1> ^net-name <nn> ^pin-name <pn>)
)

(p p561
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> > <gx1> <= <nmax> })
  - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { > <gx1> < <gx2> })
    (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
    (horizontal-layer <lay>)
    (dominant-layer)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove 2)
    (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
)

(p p562
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { <gx2> < <gx1> >= <nmin> })
  - (ff ^net-name <nn> ^grid-x { < <gx1> > <gx2> } ^grid-y <gy>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com { < <gx1> > <gx2> })
    (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> >= <gx1> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
    (horizontal-layer <lay>)
    (dominant-layer)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx2> ^max >= <gx1> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove 2)
    (make horizontal ^com <gy> ^min <min> ^max <gx2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make horizontal ^com <gy> ^min <gx1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gx2> ^max <gx1> ^net-name <nn> ^pin-name <pn>)
)

(p p563
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x { <gx1> >= <nmin> <= <nmax> } ^grid-y <gy> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> <= <nmax> } ^grid-y <gy>)
  - (ff ^net-name <nn> ^grid-x { > <gx1> < <gx2> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx1> } ^max { <max> >= <gx2> } ^max { <max> >= <gx2> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
    (horizontal-layer <lay>)
    (dominant-layer)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx1> ^max >= <gx2> ^com <gy>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <gy> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx1> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  -->
    (remove 2 3)
    (make horizontal ^com <gy> ^min <min> ^max <gx1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make horizontal ^com <gy> ^min <gx2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gx1> ^max <gx2> ^net-name <nn> ^pin-name <pn>)
)

(p p564
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-y { <gy2> > <gy1> <= <nmax> } ^grid-x <gx>)
  - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  - (vertical ^net-name nil ^min <= <gy1> ^max >= <gy2> ^com <gx> ^layer <> <lay>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (remove 2 3)
    (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
)

(p p565
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> > <gy1> <= <nmax> })
  - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy1> < <gy2> })
    (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (remove 2)
    (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
)

(p p566
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> < <gy1> >= <nmin> })
  - (ff ^net-name <nn> ^grid-y { > <gy2> < <gy1> } ^grid-x <gx>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy2> < <gy1> })
    (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> >= <gy1> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy2> ^max >= <gy1> ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (remove 2)
    (make vertical ^com <gx> ^min <min> ^max <gy2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make vertical ^com <gx> ^min <gy1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gy2> ^max <gy1> ^net-name <nn> ^pin-name <pn>)
)

(p p567
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> > <gy1> <= <nmax> })
  - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy1> < <gy2> })
    (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
    (vertical-layer <lay>)
    (dominant-layer)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (remove 2)
    (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
)

(p p568
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { <gy2> < <gy1> >= <nmin> })
  - (ff ^net-name <nn> ^grid-y { > <gy2> < <gy1> } ^grid-x <gx>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com { > <gy2> < <gy1> })
    (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> >= <gy1> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
    (vertical-layer <lay>)
    (dominant-layer)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy2> ^max >= <gy1> ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (remove 2)
    (make vertical ^com <gx> ^min <min> ^max <gy2> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make vertical ^com <gx> ^min <gy1> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gy2> ^max <gy1> ^net-name <nn> ^pin-name <pn>)
)

(p p569
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy1> >= <nmin> <= <nmax> } ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-y { <gy2> > <gy1> <= <nmax> } ^grid-x <gx>)
  - (ff ^net-name <nn> ^grid-y { > <gy1> < <gy2> } ^grid-x <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy1> } ^max { <max> >= <gy2> > <min> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <nn1> ^max-net <nn2>)
    (vertical-layer <lay>)
    (dominant-layer)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy1> ^max >= <gy2> ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy1> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <gx> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (remove 2 3)
    (make vertical ^com <gx> ^min <min> ^max <gy1> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn1> ^max-net <nn>)
    (make vertical ^com <gx> ^min <gy2> ^max <max> ^compo <cpo> ^commo <cmo> ^layer <lay> ^min-net <nn> ^max-net <nn2>)
    (modify 4 ^min <gy1> ^max <gy2> ^net-name <nn> ^pin-name <pn>)
)

(p p570
    (next-segment <nn> row <gy> nil <nmin> <nmax>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <max> >= <nmin> <= <nmax> } ^com <gy> ^layer <garb2> ^compo <garb3> ^commo <garb4> ^pin-name <pn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <max> ^max > <max> ^com <gy>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min { <min> > <max> <= <nmax> } ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <min> ^max >= <min> ^com <gy>)
    (horizontal ^net-name nil ^min <max> ^max { <min> > <max> } ^com <gy> ^layer <garb5> ^compo <garb6> ^commo <garb7>)
  -->
    (modify 4 ^net-name <nn> ^pin-name <pn> ^max-net nil ^min-net nil)
)

(p p571
    (next-segment <nn> col <gx> nil <nmin> <nmax>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <garb1> ^max { <max> >= <nmin> <= <nmax> } ^com <gx> ^layer <garb2> ^compo <garb3> ^commo <garb4> ^pin-name <pn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <max> ^max > <max> ^com <gx>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min { <min> > <max> <= <nmax> } ^com <gx>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <min> ^max >= <min> ^com <gx>)
    (vertical ^net-name nil ^min <max> ^max { <min> > <max> } ^com <gx> ^layer <garb5> ^compo <garb6> ^commo <garb7>)
  -->
    (modify 4 ^net-name <nn> ^pin-name <pn> ^max-net nil ^min-net nil)
)

(p p572
    { <next> (next-segment <nn> row <gy>) }
    (ff ^net-name <nn> ^grid-y <gy> ^pin-name <pn> ^came-from north)
    (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <np> ^no-of-bottom-pins <garb1>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
    { <ff> (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^pin-name <pn2> ^grid-x <gx> ^grid-layer <lay> ^came-from north) }
    { <v1> (vertical ^net-name nil ^min { <min> <= <gy> } ^max { > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>) }
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com { < <gy2> >= <gy> } ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <gy> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
    (modify <v1> ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn2>)
    (modify <ff> ^grid-y <gy> ^can-chng-layer nil)
    (modify <next> ^5 useless)
)

(p p573
    { <next> (next-segment <nn> row <gy>) }
    (ff ^came-from south ^net-name <nn> ^grid-y <gy> ^pin-name <pn>)
    (net ^net-name <nn> ^net-no-of-pins <np> ^no-of-top-pins <garb1> ^no-of-bottom-pins <np>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
    { <ff> (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^pin-name <pn2> ^grid-x <gx> ^grid-layer <lay> ^came-from south) }
    { <v1> (vertical ^net-name nil ^max { <max> >= <gy> } ^min { < <max> <= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>) }
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com { > <gy2> <= <gy> } ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <max> ^min <gy> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <nn> ^max-net <mn>)
    (modify <v1> ^max <gy2> ^max-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn2>)
    (modify <ff> ^grid-y <gy> ^can-chng-layer nil)
    (modify <v1> ^5 useless)
)

(p p574
    (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^grid-x { <gx> >= <nmin> <= <nmax> } ^grid-layer <lay> ^pin-name <pn>)
    (vertical ^net-name nil ^min { <min> <= <gy> } ^max { > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
    (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy2> ^com <gx>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <gy> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
    (modify 3 ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy2> ^min <gy> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify 2 ^grid-y <gy> ^can-chng-layer nil)
    (modify 1 ^2 <nn>)
)

(p p575
    (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
    (vertical ^net-name { <nn> <> nil } ^min { <gy2> > <gy> } ^com { <gx> >= <nmin> <= <nmax> } ^layer <lay> ^pin-name <pn>)
    (vertical ^net-name nil ^min { < <gy2> <= <gy> } ^max <gy2> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
    (vertical-s ^net-name <nn> ^min <= <gy> ^max >= <gy2> ^com <gx>)
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2>)
  - (vertical ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy2> ^com <gx>)
  - (ff ^net-name <> <nn> ^grid-x <gx>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  -->
    (modify 3 ^max <gy> ^max-net <nn>)
    (modify 2 ^min <gy>)
    (make ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
    (modify 1 ^2 <nn>)
)

(p p576
    (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
    (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^grid-x { <gx> >= <nmin> <= <nmax> } ^grid-layer <lay> ^pin-name <pn>)
    (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
    (vertical-s ^net-name <nn> ^min <= <gy2> ^max >= <gy> ^com <gx>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <gy2> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
    (modify 3 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <gy2> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify 2 ^grid-y <gy> ^can-chng-layer nil)
    (modify 1 ^2 <nn>)
)

(p p577
    (next-segment <nn> row <gy> <gg1> <nmin> <nmax>)
    (vertical ^net-name { <nn> <> nil } ^min { <gy2> < <gy> } ^com { <gx> >= <nmin> <= <nmax> } ^layer <lay> ^pin-name <pn>)
    (vertical ^net-name nil ^min <gy2> ^max { > <gy2> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo>)
    (vertical-s ^net-name <nn> ^min <= <gy2> ^max >= <gy> ^com <gx>)
  - (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy2>)
  - (vertical ^net-name { <nn> <> nil } ^min <= <gy2> ^max >= <gy> ^com <gx>)
  - (ff ^net-name <> <nn> ^grid-x <gx>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^com <gx>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  -->
    (modify 3 ^min <gy> ^min-net <nn>)
    (modify 2 ^max <gy>)
    (make ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from south)
    (modify 1 ^2 <nn>)
)

(p p578
    (next-segment <nn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <garb2>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy> ^layer <garb3> ^compo <garb4> ^commo <garb5>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx> ^layer <garb6> ^compo <garb7> ^commo <garb8>)
  -->
    (remove 2)
)

(p p579
    (next-segment <nn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <garb1> ^pin-name <garb2>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max <gx> ^com <gy>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <gx> ^max > <gx> ^com <gy>)
  -->
    (remove 2)
)

(p p580
    (change-priority)
    { <n> (next-segment ^5 useless) }
  -->
    (modify <n> ^5 nil)
)

(p p581
    (change-priority)
    { <n> (next-segment <nn> col <x> useless <min> <max>) }
    (vertical-s ^net-name <nn> ^com <x> ^sum 2 ^difference 0)
    (last-row <lr>)
  -->
    (modify <n> ^5 nil 1 <lr>)
)

(p p582
    (change-priority)
    { <n> (next-segment <nn> row <y> useless <min> <max>) }
    (horizontal-s ^net-name <nn> ^com <x> ^sum 2 ^difference 0)
    (last-col <lc>)
  -->
    (modify <n> ^5 nil 1 <lc>)
)

(p p583
    { <n> (next-segment <nn> <rc> <xy> nil) }
  - (next-segment ^5 <> nil)
  -->
    (remove <n>)
    (make move-ff <nn> <rc> <xy>)
)

(p p584
    { <c> (change-priority) }
  -->
    (remove <c>)
    (make end-of-specialized-move-ff)
)

(p p585
    (move-ff <nn> row <xy>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <xy> ^layer <lay> ^compo <cpo> ^commo <garb1>)
    { <ff> (ff ^came-from south ^net-name { <nn1> <> <nn> } ^grid-x { <gx> >= <min> <= <max> } ^grid-y <xy> ^grid-layer { <flay> <> <lay> }) }
    { <v1> (vertical ^status nil ^net-name <nn1> ^min < <xy> ^max <xy> ^com <gx> ^layer <flay>) }
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <xy> ^layer <flay>)
    { <v2> (vertical ^net-name nil ^min <xy> ^max { <garb4> > <xy> } ^com <gx> ^layer <flay> ^compo <garb2> ^commo <garb3>) }
  -->
    (modify <v2> ^min <cpo> ^min-net <nn1>)
    (modify <v1> ^max <cpo>)
    (modify <ff> ^grid-y <cpo> ^can-chng-layer nil)
)

(p p586
    (move-ff <nn> row <xy>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min> ^max <max> ^com <xy> ^layer <lay> ^compo <garb1> ^commo <cmo>)
    { <ff> (ff ^came-from north ^net-name { <nn1> <> <nn> } ^grid-x { <gx> >= <min> <= <max> } ^grid-y <xy> ^grid-layer { <flay> <> <lay> }) }
    { <v1> (vertical ^status nil ^net-name <nn1> ^min <xy> ^max > <xy> ^com <gx> ^layer <flay>) }
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <gx> ^com <xy> ^layer <flay>)
    { <v2> (vertical ^net-name nil ^min <vmin> ^max { <xy> > <vmin> } ^com <gx> ^layer <flay> ^compo <garb2> ^commo <garb3>) }
  -->
    (modify <v2> ^max <cmo> ^max-net <nn1>)
    (modify <v1> ^min <cmo>)
    (modify <ff> ^grid-y <cmo> ^can-chng-layer nil)
)

(p p587
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <min> ^max <max>)
    { <h> (horizontal-s ^net-name <nn> ^min <min> ^max <max>) }
  -->
    (remove <h>)
)

(p p588
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <min> ^max <max>)
    { <v> (vertical-s ^net-name <nn> ^min <min> ^max <max>) }
  -->
    (remove <v>)
)

(p p589
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <min> ^max <max> ^com <com>)
    (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> < <com> })
    { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <gy> } ^max { <vmax> >= <com> } ^com <gx> ^id <id>) }
    (vertical ^net-name nil ^min <= <gy> ^max >= <com> ^com <gx>)
  - (vertical-s ^net-name <> <nn> ^com <gx>)
  -->
    (remove <v>)
    (make next-segment <nn> col <gx> nil <vmin> <vmax>)
)

(p p590
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <min> ^max <max> ^com <com>)
    (ff ^net-name <nn> ^grid-x { <gx> >= <min> <= <max> } ^grid-y { <gy> > <com> })
    { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <com> } ^max { <vmax> >= <gy> } ^com <gx> ^id <id>) }
    (vertical ^net-name nil ^min <= <com> ^max >= <gy> ^com <gx>)
  - (vertical-s ^net-name <> <nn> ^com <gx>)
  -->
    (remove <v>)
    (make next-segment <nn> col <gx> nil <vmin> <vmax>)
)

(p p591
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> < <hcom1> })
    { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
    (vertical ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
)

(p p592
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> > <hcom1> })
    { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
    (vertical ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
)

(p p593
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> < <hcom1> })
    { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
    (vertical ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
)

(p p594
    (move-ff <nn>)
    (horizontal ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (horizontal ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> > <hcom1> })
    { <v> (vertical-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
    (vertical ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  - (vertical-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> col <vcom2> nil <vmin> <vmax>)
)

(p p595
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <min> ^max <max> ^com <com>)
    (ff ^net-name <nn> ^grid-x { <gx> < <com> } ^grid-y { <gy> >= <min> <= <max> })
    { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <gx> } ^max { <vmax> >= <com> } ^com <gy> ^id <id>) }
    (horizontal ^net-name nil ^min <= <gx> ^max >= <com> ^com <gy>)
  - (horizontal-s ^net-name <> <nn> ^com <gy>)
  -->
    (remove <v>)
    (make next-segment <nn> row <gy> nil <vmin> <vmax>)
)

(p p596
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <min> ^max <max> ^com <com>)
    (ff ^net-name <nn> ^grid-x { <gx> > <com> } ^grid-y { <gy> >= <min> <= <max> })
    { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <com> } ^max { <vmax> >= <gx> } ^com <gy> ^id <id>) }
    (horizontal ^net-name nil ^min <= <com> ^max >= <gx> ^com <gy>)
  - (horizontal-s ^net-name <> <nn> ^com <gy>)
  -->
    (remove <v>)
    (make next-segment <nn> row <gy> nil <vmin> <vmax>)
)

(p p597
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> < <hcom1> })
    { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
    (horizontal ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
)

(p p598
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> } ^max { <hmax2> <= <hmax1> } ^com { <hcom2> > <hcom1> })
    { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax2> } ^id <id>) }
    (horizontal ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax2> })
  - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
)

(p p599
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> < <hcom1> })
    { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom2> } ^max { <vmax> >= <hcom1> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
    (horizontal ^net-name nil ^min <= <hcom2> ^max >= <hcom1> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
)

(p p600
    (move-ff <nn>)
    (vertical ^net-name <nn> ^min <hmin1> ^max <hmax1> ^com <hcom1>)
    (vertical ^net-name <nn> ^min { <hmin2> >= <hmin1> <= <hmax1> } ^max { <hmax2> >= <hmax1> } ^com { <hcom2> > <hcom1> })
    { <v> (horizontal-s ^net-name <nn> ^min { <vmin> <= <hcom1> } ^max { <vmax> >= <hcom2> } ^com { <vcom> >= <hmin2> <= <hmax1> } ^id <id>) }
    (horizontal ^net-name nil ^min <= <hcom1> ^max >= <hcom2> ^com { <vcom2> >= <hmin2> <= <hmax1> })
  - (horizontal-s ^net-name <> <nn> ^com <vcom2>)
  -->
    (remove <v>)
    (make next-segment <nn> row <vcom2> nil <vmin> <vmax>)
)

(p p601
    { <m> (move-ff) }
  -->
    (remove <m>)
)

(p p602
    { <e> (end-of-specialized-move-ff) }
  - (next-segment)
  -->
    (remove <e>)
    (make context ^present check-for-routed-net)
)

(p p603
    (context ^present << check-for-routed-net propagate-constraint >>)
    (<< dominant-layer change-priority next-segment >>)
  -->
    (remove 2)
)

(p p244
    (context ^present lshape1)
    (<< total-verti counted-verti total counted >>)
  -->
    (remove 2)
)

(p p245
    (context ^present lshape1)
    (last-row <gy>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  - (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <gy2>)
  - (vertical ^com { > <gx> < <gx2> })
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy> ^layer <lay> ^commo <hcmo> ^compo <hcpo> ^min-net <mn>)
  - (pin ^pin-x <gx2> ^pin-y <hcpo>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> nil <> <nn> } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  -->
    (make horizontal ^layer <lay> ^min <hmin> ^max <gx> ^min-net <mn> ^max-net <nn> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
    (modify 5 ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx> ^max <gx2> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
    (modify 3 ^grid-x <gx2> ^came-from west)
)

(p p246
    (context ^present lshape1)
    (last-row <gy>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
  - (ff ^net-name <nn> ^grid-y <gy> ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y <gy2>)
  - (vertical ^com { > <gx2> < <gx> })
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx> } ^com <gy> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (pin ^pin-x <gx2> ^pin-y <hcpo>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy> ^max >= <gy> ^com <gx2> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <gy> ^layer <lay>)
  -->
    (make horizontal ^layer <lay> ^min <hmin> ^max <gx2> ^min-net <mn> ^max-net <nn> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
    (modify 5 ^min <gx> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx2> ^max <gx> ^com <gy> ^commo <hcmo> ^compo <hcpo>)
    (modify 3 ^grid-x <gx2> ^came-from east)
)

(p p247
    (context ^present lshape1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y 1 ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  - (ff ^net-name <nn> ^grid-y 1 ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <gy2>)
  - (vertical ^com { > <gx> < <gx2> })
    (horizontal ^net-name nil ^min { <hmin> <= <gx> } ^max { <hmax> > <hmin> >= <gx2> } ^com 1 ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (pin ^pin-x <gx2> ^pin-y 0)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gx2> ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com 1 ^layer <lay>)
  -->
    (make horizontal ^layer <lay> ^min <hmin> ^max <gx> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <hcmo> ^compo <hcpo>)
    (modify 4 ^min <gx2> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx> ^max <gx2> ^com 1 ^commo <hcmo> ^compo <hcpo>)
    (modify 2 ^grid-x <gx2> ^came-from west)
)

(p p248
    (context ^present lshape1)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y 1 ^grid-layer <lay> ^pin-name <pn> ^came-from south)
  - (ff ^net-name <nn> ^grid-y 1 ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y <gy2>)
  - (vertical ^com { > <gx2> < <gx> })
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx> } ^com 1 ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (pin ^pin-x <gx2> ^pin-y 0)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gx2> ^layer <lay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com 1 ^layer <lay>)
  -->
    (make horizontal ^layer <lay> ^min <hmin> ^max <gx2> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <hcmo> ^compo <hcpo>)
    (modify 4 ^min <gx> ^min-net <nn>)
    (make horizontal ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gx2> ^max <gx> ^com 1 ^commo <hcmo> ^compo <hcpo>)
    (modify 2 ^grid-x <gx2> ^came-from east)
)

(p p249
    (context ^present lshape1)
    (last-col <gx>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from east)
  - (ff ^net-name <nn> ^grid-x <gx> ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> > <gy> })
  - (horizontal ^com { > <gy> < <gy2> })
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { <vmax> >= <gy2> > <vmin> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (pin ^pin-x <vcpo> ^pin-y <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^layer <lay> ^min <vmin> ^max <gy> ^min-net <mn> ^max-net <nn> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy> ^max <gy2> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
    (modify 3 ^grid-y <gy2> ^came-from south)
)

(p p250
    (context ^present lshape1)
    (last-col <gx>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from east)
  - (ff ^net-name <nn> ^grid-x <gx> ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> < <gy> })
  - (horizontal ^com { > <gy2> < <gy> })
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> >= <gy> > <vmin> } ^com <gx> ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (pin ^pin-x <vcpo> ^pin-y <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= <gx> ^max >= <gx> ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^layer <lay> ^min <vmin> ^max <gy2> ^min-net <mn> ^max-net <nn> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
    (modify 5 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy2> ^max <gy> ^com <gx> ^commo <vcmo> ^compo <vcpo>)
    (modify 3 ^grid-y <gy2> ^came-from north)
)

(p p251
    (context ^present lshape1)
    (ff ^net-name <nn> ^grid-x 1 ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from west)
  - (ff ^net-name <nn> ^grid-x 1 ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> > <gy> })
  - (horizontal ^com { > <gy> < <gy2> })
    (vertical ^net-name nil ^min { <vmin> <= <gy> } ^max { <vmax> > <vmin> >= <gy2> } ^com 1 ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (pin ^pin-x 0 ^pin-y <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com 1 ^layer <lay>)
  -->
    (make vertical ^layer <lay> ^min <vmin> ^max <gy> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <vcmo> ^compo <vcpo>)
    (modify 4 ^min <gy2> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy> ^max <gy2> ^com 1 ^commo <vcmo> ^compo <vcpo>)
    (modify 2 ^grid-y <gy2> ^came-from south)
)

(p p252
    (context ^present lshape1)
    (ff ^net-name <nn> ^grid-x 1 ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from west)
  - (ff ^net-name <nn> ^grid-x 1 ^pin-name <> <pn>)
    (ff ^net-name <nn> ^grid-x <gx2> ^grid-y { <gy2> < <gy> })
  - (horizontal ^com { > <gy2> < <gy> })
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy> } ^com 1 ^layer <lay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (pin ^pin-x 0 ^pin-y <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min <= 1 ^max >= 1 ^com <gy2> ^layer <lay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com 1 ^layer <lay>)
  -->
    (make vertical ^layer <lay> ^min <vmin> ^max <gy2> ^min-net <mn> ^max-net <nn> ^com 1 ^commo <vcmo> ^compo <vcpo>)
    (modify 4 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <lay> ^min <gy2> ^max <gy> ^com 1 ^commo <vcmo> ^compo <vcpo>)
    (modify 2 ^grid-y <gy2> ^came-from north)
)

(p p253
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> >= <gy1> > <vmin> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> >= <gx2> > <hmin> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p254
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p255
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p256
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p257
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  - (pin ^net-name <nn1> ^pin-x >= <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p258
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy2> ^grid-x > <gx1>)
  - (pin ^net-name <nn1> ^pin-x <= <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p259
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  - (pin ^net-name <nn1> ^pin-x >= <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p260
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-y <gy1> ^grid-x > <gx2>)
  - (pin ^net-name <nn1> ^pin-x <= <gx2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p261
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  - (pin ^net-name <nn1> ^pin-y >= <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p262
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  - (pin ^net-name <nn1> ^pin-y >= <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p263
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y > <gy2>)
  - (pin ^net-name <nn1> ^pin-y <= <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p264
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx2> ^grid-y > <gy1>)
  - (pin ^net-name <nn1> ^pin-y <= <gy1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p265
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  - (pin ^net-name <nn1> ^pin-y >= <gy2>)
    (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  - (pin ^net-name <nn2> ^pin-x >= <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p266
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y < <gy2>)
  - (pin ^net-name <nn1> ^pin-y >= <gy2>)
    (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy2> ^grid-x > <gx1>)
  - (pin ^net-name <nn2> ^pin-x <= <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p267
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx1> ^grid-y > <gy2>)
  - (pin ^net-name <nn1> ^pin-y <= <gy2>)
    (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy2> ^grid-x < <gx1>)
  - (pin ^net-name <nn2> ^pin-x >= <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p268
    (context ^present lshape1)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
    (ff ^net-name { <nn1> <> <nn> } ^grid-x <gx2> ^grid-y > <gy1>)
  - (pin ^net-name <nn1> ^pin-y <= <gy1>)
    (ff ^net-name { <nn2> <> <nn> } ^grid-y <gy1> ^grid-x > <gx2>)
  - (pin ^net-name <nn2> ^pin-x <= <gx2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p269
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p270
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p271
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p272
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p273
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p274
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p275
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p276
    (context ^present lshape2)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p277
    (context ^present lshape3)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p278
    (context ^present lshape3)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p279
    (context ^present lshape3)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <vlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <hlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p280
    (context ^present lshape3)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <hlay> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <vlay>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p281
    (context ^present lshape4)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <garb2>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p282
    (context ^present lshape4)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <garb2>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx2> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p283
    (context ^present lshape4)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> > <gy1> } ^grid-layer <garb2>)
    (vertical ^net-name nil ^min { <vmin> <= <gy1> } ^max { <vmax> > <vmin> >= <gy2> } ^com <gx1> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy2> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx1>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy2>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx1> ^layer <vlay> ^min <vmin> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy2> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <vlay> ^min <gy1> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy2> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p284
    (context ^present lshape4)
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <garb1> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <garb2>)
    (vertical ^net-name nil ^min { <vmin> <= <gy2> } ^max { <vmax> > <vmin> >= <gy1> } ^com <gx2> ^layer <vlay> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn>)
    (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com <gy1> ^layer <hlay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>)
    (vertical-layer <vlay>)
    (horizontal-layer <hlay>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^max <= <vmin> ^com <gx2>)
  - (vertical ^status nil ^net-name { <> <nn> <> nil } ^min >= <vmax> ^com <gx2>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^max <= <hmin> ^com <gy1>)
  - (horizontal ^status nil ^net-name { <> <nn> <> nil } ^min >= <hmax> ^com <gy1>)
  -->
    (remove 1 3 4)
    (make vertical ^com <gx2> ^layer <vlay> ^min <vmin> ^max <gy2> ^compo <vcpo> ^commo <vcmo> ^min-net <vnn> ^max-net <nn>)
    (modify 5 ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <hmin> ^max <gx1> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify 6 ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <vlay> ^min <gy2> ^max <gy1> ^compo <vcpo> ^commo <vcmo> ^net-name <nn> ^pin-name <pn>)
    (make horizontal ^com <gy1> ^layer <hlay> ^min <gx1> ^max <gx2> ^compo <hcpo> ^commo <hcmo> ^net-name <nn> ^pin-name <pn>)
    (make context ^present check-for-routed-net)
)

(p p285
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  - (ff ^grid-x <gx1> ^net-name <> <nn>)
    { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy1> } ^max { <vmax1> > <vmin1> >= <gy1> } ^com <gx1> ^layer <lay> ^commo <gx2> ^compo <cpo> ^min-net <vnn1>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com { <hcom> >= <vmin1> < <gy1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (vertical-layer <lay>)
    (ff ^grid-x <gx2> ^net-name <> <nn>)
  - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  -->
    (remove <c>)
    (make vertical ^com <gx1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <cpo> ^commo <gx2> ^min-net <vnn1> ^max-net <nn>)
    (modify <v> ^min <gy1> ^min-net <nn>)
    (make horizontal ^min <hmin> ^max <gx2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <lay> ^min <hcom> ^max <gy1> ^commo <gx2> ^compo <cpo> ^net-name <nn> ^pin-name <pn1>)
    (make horizontal ^com <hcom> ^layer <lay> ^min <gx2> ^max <gx1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
    (modify <ff> ^grid-x <gx2> ^grid-y <hcom> ^can-chng-layer nil ^came-from east)
    (make context ^present check-for-routed-net)
)

(p p286
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  - (ff ^grid-x <gx2> ^net-name <> <nn>)
    { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy2> } ^max { <vmax1> > <vmin1> >= <gy2> } ^com <gx2> ^layer <lay> ^commo <cmo> ^compo <gx1> ^max-net <vnn1>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx2> } ^max { <hmax> > <hmin> >= <gx1> } ^com { <hcom> <= <vmax1> > <gy2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (vertical-layer <lay>)
    (ff ^grid-x <gx1> ^net-name <> <nn>)
  - (horizontal ^net-name nil ^min <= <gx2> ^max >= <gx1> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  -->
    (remove <c>)
    (make vertical ^com <gx2> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <gx1> ^commo <cmo> ^max-net <vnn1> ^min-net <nn>)
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make horizontal ^min <hmin> ^max <gx2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gx1> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <lay> ^max <hcom> ^min <gy2> ^commo <cmo> ^compo <gx1> ^net-name <nn> ^pin-name <pn2>)
    (make horizontal ^com <hcom> ^layer <lay> ^min <gx2> ^max <gx1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
    (modify <ff> ^grid-x <gx1> ^grid-y <hcom> ^can-chng-layer nil ^came-from west)
    (make context ^present check-for-routed-net)
)

(p p287
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  - (ff ^grid-x <gx1> ^net-name <> <nn>)
    { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy1> } ^max { <vmax1> > <vmin1> >= <gy1> } ^com <gx1> ^layer <lay> ^commo <cmo> ^compo <gx2> ^min-net <vnn1>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com { <hcom> >= <vmin1> < <gy1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (vertical-layer <lay>)
    (ff ^grid-x <gx2> ^net-name <> <nn>)
  - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  -->
    (remove <c>)
    (make vertical ^com <gx1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <gx2> ^commo <cmo> ^min-net <vnn1> ^max-net <nn>)
    (modify <v> ^min <gy1> ^min-net <nn>)
    (make horizontal ^min <hmin> ^max <gx1> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx1> ^layer <lay> ^min <hcom> ^max <gy1> ^commo <cmo> ^compo <gx2> ^net-name <nn> ^pin-name <pn1>)
    (make horizontal ^com <hcom> ^layer <lay> ^min <gx1> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
    (modify <ff> ^grid-x <gx2> ^grid-y <hcom> ^can-chng-layer nil ^came-from west)
    (make context ^present check-for-routed-net)
)

(p p288
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  - (ff ^grid-x <gx2> ^net-name <> <nn>)
    { <v> (vertical ^net-name nil ^min { <vmin1> <= <gy2> } ^max { <vmax1> > <vmin1> >= <gy2> } ^com <gx2> ^layer <lay> ^commo <gx1> ^compo <cpo> ^max-net <vnn1>) }
    { <h> (horizontal ^net-name nil ^min { <hmin> <= <gx1> } ^max { <hmax> > <hmin> >= <gx2> } ^com { <hcom> <= <vmax1> > <gy2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (vertical-layer <lay>)
    (ff ^grid-x <gx1> ^net-name <> <nn>)
  - (horizontal ^net-name nil ^min <= <gx1> ^max >= <gx2> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx2> ^max >= <gx2> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx2>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <gx1> ^max >= <gx1> ^com <hcom>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gx1>)
  -->
    (remove <c>)
    (make vertical ^com <gx2> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <cpo> ^commo <gx1> ^max-net <vnn1> ^min-net <nn>)
    (modify <v> ^max <gy2> ^max-net <nn>)
    (make horizontal ^min <hmin> ^max <gx1> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gx2> ^min-net <nn>)
    (make vertical ^com <gx2> ^layer <lay> ^max <hcom> ^min <gy2> ^commo <gx1> ^compo <cpo> ^net-name <nn> ^pin-name <pn2>)
    (make horizontal ^com <hcom> ^layer <lay> ^min <gx1> ^max <gx2> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
    (modify <ff> ^grid-x <gx1> ^grid-y <hcom> ^can-chng-layer nil ^came-from east)
    (make context ^present check-for-routed-net)
)

(p p289
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  - (ff ^grid-y <gy1> ^net-name <> <nn>)
    { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx1> } ^max { <vmax1> > <vmin1> >= <gx1> } ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^min-net <vnn1>) }
    { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> >= <vmin1> < <gx1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (horizontal-layer <lay>)
    (ff ^grid-y <gy2> ^net-name <> <nn>)
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  -->
    (remove <c>)
    (make horizontal ^com <gy1> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <cpo> ^commo <gy2> ^min-net <vnn1> ^max-net <nn>)
    (modify <v> ^min <gx1> ^min-net <nn>)
    (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <lay> ^min <hcom> ^max <gx1> ^commo <gy2> ^compo <cpo> ^net-name <nn> ^pin-name <pn1>)
    (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
    (modify <ff> ^grid-y <gy2> ^grid-x <hcom> ^can-chng-layer nil ^came-from north)
    (make context ^present check-for-routed-net)
)

(p p290
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> < <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  - (ff ^grid-y <gy2> ^net-name <> <nn>)
    { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx2> } ^max { <vmax1> > <vmin1> >= <gx2> } ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gy1> ^max-net <vnn1>) }
    { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> <= <vmax1> > <gx2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (horizontal-layer <lay>)
    (ff ^grid-y <gy1> ^net-name <> <nn>)
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  -->
    (remove <c>)
    (make horizontal ^com <gy2> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <gy1> ^commo <cmo> ^max-net <vnn1> ^min-net <nn>)
    (modify <v> ^max <gx2> ^max-net <nn>)
    (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <lay> ^max <hcom> ^min <gx2> ^commo <cmo> ^compo <gy1> ^net-name <nn> ^pin-name <pn2>)
    (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
    (modify <ff> ^grid-y <gy1> ^grid-x <hcom> ^can-chng-layer nil ^came-from south)
    (make context ^present check-for-routed-net)
)

(p p291
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    { <ff> (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>) }
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>)
  - (ff ^grid-y <gy1> ^net-name <> <nn>)
    { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx1> } ^max { <vmax1> > <vmin1> >= <gx1> } ^com <gy1> ^layer <lay> ^commo <gy2> ^compo <cpo> ^max-net <vnn1>) }
    { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> <= <vmax1> > <gx1> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (horizontal-layer <lay>)
    (ff ^grid-y <gy2> ^net-name <> <nn>)
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { <= <vmax1> > <hcom> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  -->
    (remove <c>)
    (make horizontal ^com <gy1> ^layer <lay> ^min <hcom> ^max <vmax1> ^compo <cpo> ^commo <gy2> ^max-net <vnn1> ^min-net <nn>)
    (modify <v> ^max <gx1> ^max-net <nn>)
    (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy1> ^layer <lay> ^min <gx1> ^max <hcom> ^commo <gy2> ^compo <cpo> ^net-name <nn> ^pin-name <pn1>)
    (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn1>)
    (modify <ff> ^grid-y <gy2> ^grid-x <hcom> ^can-chng-layer nil ^came-from north)
    (make context ^present check-for-routed-net)
)

(p p292
    { <c> (context ^present lshape1) }
    (net ^net-name <nn> ^net-no-of-pins 2 ^net-is-routed <> yes)
    (ff ^net-name <nn> ^grid-x <gx1> ^grid-y <gy1> ^grid-layer <lay> ^pin-name <pn1>)
    { <ff> (ff ^net-name <nn> ^grid-x { <gx2> > <gx1> } ^grid-y { <gy2> < <gy1> } ^grid-layer <lay> ^pin-name <pn2>) }
  - (ff ^grid-y <gy2> ^net-name <> <nn>)
    { <v> (horizontal ^net-name nil ^min { <vmin1> <= <gx2> } ^max { <vmax1> > <vmin1> >= <gx2> } ^com <gy2> ^layer <lay> ^commo <cmo> ^compo <gy1> ^min-net <vnn1>) }
    { <h> (vertical ^net-name nil ^min { <hmin> <= <gy2> } ^max { <hmax> > <hmin> >= <gy1> } ^com { <hcom> >= <vmin1> < <gx2> } ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn>) }
    (horizontal-layer <lay>)
    (ff ^grid-y <gy1> ^net-name <> <nn>)
  - (vertical ^net-name nil ^min <= <gy2> ^max >= <gy1> ^com { >= <vmin1> < <hcom> } ^layer <lay>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy2> ^max >= <gy2> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy2>)
  - (vertical ^net-name { <> <nn> <> nil } ^min <= <gy1> ^max >= <gy1> ^com <hcom>)
  - (horizontal ^net-name { <> <nn> <> nil } ^min <= <hcom> ^max >= <hcom> ^com <gy1>)
  -->
    (remove <c>)
    (make horizontal ^com <gy2> ^layer <lay> ^min <vmin1> ^max <hcom> ^compo <gy1> ^commo <cmo> ^min-net <vnn1> ^max-net <nn>)
    (modify <v> ^min <gx2> ^min-net <nn>)
    (make vertical ^min <hmin> ^max <gy2> ^com <hcom> ^layer <lay> ^compo <hcpo> ^commo <hcmo> ^min-net <hnn> ^max-net <nn>)
    (modify <h> ^min <gy1> ^min-net <nn>)
    (make horizontal ^com <gy2> ^layer <lay> ^max <gx2> ^min <hcom> ^commo <cmo> ^compo <gy1> ^net-name <nn> ^pin-name <pn2>)
    (make vertical ^com <hcom> ^layer <lay> ^min <gy2> ^max <gy1> ^commo <hcmo> ^compo <hcpo> ^net-name <nn> ^pin-name <pn2>)
    (modify <ff> ^grid-y <gy1> ^grid-x <hcom> ^can-chng-layer nil ^came-from south)
    (make context ^present check-for-routed-net)
)

(p p211
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> west ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx> })
    (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> >= <gx> > <min> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x >= <gx> ^grid-y < <gy>)
  - (ff ^net-name <nn> ^grid-x >= <gx> ^grid-y > <gy>)
  -->
    (make horizontal ^min <min> ^max (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min <gx> ^min-net <nn>)
    (make horizontal ^max <gx> ^min (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-x (compute <gx> - 1) ^came-from east ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p212
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> south ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-y { <gy2> < <gy> })
    (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x < <gx> ^grid-y >= <gy>)
  - (ff ^net-name <nn> ^grid-x > <gx> ^grid-y >= <gy>)
  -->
    (make vertical ^min <min> ^max (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min <gy> ^min-net <nn>)
    (make vertical ^max <gy> ^min (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-y (compute <gy> - 1) ^came-from north ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p213
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> east ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx> })
    (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { <max> > <min> >= <gx2> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <= <gx> ^grid-y < <gy>)
  - (ff ^net-name <nn> ^grid-x <= <gx> ^grid-y > <gy>)
  -->
    (make horizontal ^max <max> ^min (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max <gx> ^max-net <nn>)
    (make horizontal ^min <gx> ^max (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-x (compute <gx> + 1) ^came-from west ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p214
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-y { <gy2> > <gy> })
    (vertical ^net-name nil ^min { <min> <= <gy> } ^max { <max> > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x < <gx> ^grid-y <= <gy>)
  - (ff ^net-name <nn> ^grid-x > <gx> ^grid-y <= <gy>)
  -->
    (make vertical ^max <max> ^min (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max <gy> ^max-net <nn>)
    (make vertical ^min <gy> ^max (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-y (compute <gy> + 1) ^came-from south ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p215
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> west ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y <= <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> > <min> >= <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  -->
    (make horizontal ^min <min> ^max (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min <gx> ^min-net <nn>)
    (make horizontal ^max <gx> ^min (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-x (compute <gx> - 1) ^came-from east ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p216
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> west ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-x { <gx2> < <gx> } ^grid-y >= <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx2> } ^max { <max> > <min> >= <gx> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <gx> ^max >= <gx>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  -->
    (make horizontal ^min <min> ^max (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min <gx> ^min-net <nn>)
    (make horizontal ^max <gx> ^min (compute <gx> - 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-x (compute <gx> - 1) ^came-from east ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p217
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> east ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y <= <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { <max> > <min> >= <gx2> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx>)
  - (vertical ^net-name nil ^min < <gy> ^max >= <gy> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  -->
    (make horizontal ^max <max> ^min (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max <gx> ^max-net <nn>)
    (make horizontal ^min <gx> ^max (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-x (compute <gx> + 1) ^came-from west ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p218
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> east ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-x { <gx2> > <gx> } ^grid-y >= <gy>)
    (horizontal ^net-name nil ^min { <min> <= <gx> } ^max { <max> > <min> >= <gx2> } ^com <gy> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max > <gx>)
  - (vertical ^net-name nil ^min <= <gy> ^max > <gy> ^com <gx> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  -->
    (make horizontal ^max <max> ^min (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max <gx> ^max-net <nn>)
    (make horizontal ^min <gx> ^max (compute <gx> + 1) ^com <gy> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-x (compute <gx> + 1) ^came-from west ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p219
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^grid-x >= <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy> } ^max { <max> > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x < <gx>)
  -->
    (make vertical ^max <max> ^min (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
    (modify 4 ^max <gy> ^max-net <nn>)
    (make vertical ^min <gy> ^max (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-y (compute <gy> + 1) ^came-from south ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p220
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-y { <gy2> > <gy> } ^grid-x <= <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy> } ^max { <max> > <min> >= <gy2> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x > <gx>)
  -->
    (make vertical ^max <max> ^min (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
    (modify 4 ^max <gy> ^max-net <nn>)
    (make vertical ^min <gy> ^max (compute <gy> + 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-y (compute <gy> + 1) ^came-from south ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p221
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> south ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^grid-x <= <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy>)
  - (horizontal ^net-name nil ^min < <gx> ^max >= <gx> ^com <gy> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x > <gx>)
  -->
    (make vertical ^min <min> ^max (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
    (modify 4 ^min <gy> ^min-net <nn>)
    (make vertical ^max <gy> ^min (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-y (compute <gy> - 1) ^came-from north ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p222
    (context ^present loose-constraint)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from <> north ^can-chng-layer no)
    (ff ^net-name <nn> ^grid-y { <gy2> < <gy> } ^grid-x >= <gx>)
    (vertical ^net-name nil ^min { <min> <= <gy2> } ^max { <max> > <min> >= <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <vnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy>)
  - (horizontal ^net-name nil ^min <= <gx> ^max > <gx> ^com <gy> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x < <gx>)
  -->
    (make vertical ^min <min> ^max (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^max-net <vnn> ^min-net <nn>)
    (modify 4 ^min <gy> ^min-net <nn>)
    (make vertical ^max <gy> ^min (compute <gy> - 1) ^com <gx> ^layer <lay> ^commo <cmo> ^compo <cpo> ^net-name <nn> ^pin-name <pn>)
    (modify 2 ^grid-y (compute <gy> - 1) ^came-from north ^can-chng-layer nil)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p223
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  -->
    (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p224
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-y { <gy2> > <com1> } ^grid-x <gx>)
    (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  -->
    (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p225
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  -->
    (make horizontal ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p226
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-y { <gy2> < <com1> } ^grid-x <gx>)
    (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  -->
    (make vertical ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p227
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  -->
    (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p228
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-y { <gy2> > <com1> } ^grid-x <gx>)
    (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  -->
    (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p229
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  -->
    (make horizontal ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p230
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> < <com1> })
    (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^max-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^layer <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  -->
    (make vertical ^max <max2> ^min <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^max-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p231
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (vertical ^net-name nil ^max <min1> ^com <com1>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p232
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> > <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gx2> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (vertical ^net-name nil ^max <min1> ^com <com1>)
  - (horizontal ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make horizontal ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make horizontal ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> + 1) ^grid-y <com2> ^grid-layer <lay> ^came-from west)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p233
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (vertical ^net-name nil ^max <min1> ^com <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make horizontal ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p234
    (context ^present loose-constraint)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x { <gx2> < <com1> } ^grid-y <gy>)
    (horizontal ^net-name nil ^min { <min2> <= <gx2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gy> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (vertical ^net-name nil ^max <min1> ^com <com1>)
  - (horizontal ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-x <com1>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make horizontal ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make horizontal ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-x (compute <com1> - 1) ^grid-y <com2> ^grid-layer <lay> ^came-from east)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p235
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> > <com1> })
    (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p236
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> > <com1> })
    (vertical ^net-name nil ^min { <min2> <= <com1> } ^max { <max2> > <min2> >= <gy2> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <com1> ^max > <com1>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  - (vertical ^net-name nil ^min <= <com1> ^max > <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make vertical ^min <min2> ^max <com1> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^max-net <nn>)
    (modify 4 ^min (compute <com1> + 1) ^min-net <nn>)
    (make vertical ^min <com1> ^max (compute <com1> + 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> + 1) ^grid-x <com2> ^grid-layer <lay> ^came-from south)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p237
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> < <com1> })
    (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> >= <gx> } ^layer <lay> ^compo <cpo2> ^commo <cmo2> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { < <com2> >= <min1> } ^layer <lay>)
  - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make vertical ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p238
    (context ^present loose-constraint)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <min1> ^max <max1> ^com <com1> ^layer <lay> ^compo <garb1> ^commo <garb2> ^pin-name <pn>)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y { <gy2> < <com1> })
    (vertical ^net-name nil ^min { <min2> <= <gy2> } ^max { <max2> > <min2> >= <com1> } ^com { <com2> >= <min1> <= <max1> <= <gx> } ^layer <lay> ^commo <cmo2> ^compo <cpo2> ^min-net <hnn>)
  - (vertical ^status nil ^net-name { <nn> <> nil } ^min < <com1> ^max >= <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com { > <com2> <= <max1> } ^layer <lay>)
  - (horizontal ^net-name nil ^max <min1> ^com <com1>)
  - (vertical ^net-name nil ^min < <com1> ^max >= <com1> ^com <com2> ^layer <> <lay>)
  - (ff ^net-name <nn> ^grid-y <com1>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^max <min1> ^com <com1> ^layer <lay>)
  -->
    (make vertical ^min <com1> ^max <max2> ^commo <cmo2> ^compo <cpo2> ^layer <lay> ^com <com2> ^min-net <hnn> ^min-net <nn>)
    (modify 4 ^max (compute <com1> - 1) ^max-net <nn>)
    (make vertical ^max <com1> ^min (compute <com1> - 1) ^com <com2> ^layer <lay> ^net-name <nn> ^pin-name <pn> ^commo <cmo2> ^compo <cpo2>)
    (make ff ^net-name <nn> ^pin-name <pn> ^grid-y (compute <com1> - 1) ^grid-x <com2> ^grid-layer <lay> ^came-from north)
    (remove 1)
    (make context ^present propagate-constraint)
)

(p p239
    (context ^present loose-constraint0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
    (vertical ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy> ^com { <vcom> > <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom> ^com <gy>)
    (vertical ^net-name nil ^min { <min> < <gy> } ^max >= <gy> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
  - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
    (congestion ^direction row ^coordinate <gy> ^como <hcmo>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <hcmo> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
    (modify 1 ^present propagate-constraint)
)

(p p240
    (context ^present loose-constraint0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from north)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side top)
    (vertical ^net-name { <nn> <> nil } ^min < <gy> ^max >= <gy> ^com { <vcom> < <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-y > <gy>)
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom> ^max >= <gx> ^com <gy>)
    (vertical ^net-name nil ^min { <min> < <gy> } ^max >= <gy> ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^min-net <mn>)
  - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
    (congestion ^direction row ^coordinate <gy> ^como <hcmo>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <hcmo> ^min <min> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^min-net <mn> ^max-net <nn>)
    (modify 5 ^min <gy> ^min-net <nn>)
    (make vertical ^net-name <nn> ^max <gy> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
    (modify 1 ^present propagate-constraint)
)

(p p241
    (context ^present loose-constraint0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from south)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
    (vertical ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy> ^com { <vcom> > <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  - (horizontal ^net-name nil ^min <= <gx> ^max >= <vcom> ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <gx> ^max >= <vcom> ^com <gy>)
    (vertical ^net-name nil ^min <= <gy> ^max { <max> > <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>)
  - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
    (congestion ^direction row ^coordinate <hcmo> ^como <gy>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <max> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^max-net <mn> ^min-net <nn>)
    (modify 5 ^max <gy> ^max-net <nn>)
    (make vertical ^net-name <nn> ^min <gy> ^max <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
    (modify 1 ^present propagate-constraint)
)

(p p242
    (context ^present loose-constraint0)
    (ff ^net-name <nn> ^grid-x <gx> ^grid-y <gy> ^grid-layer <lay> ^pin-name <pn> ^came-from south)
    (pin ^net-name <nn> ^pin-name <pn> ^pin-channel-side bottom)
    (vertical ^net-name { <nn> <> nil } ^min <= <gy> ^max > <gy> ^com { <vcom> < <gx> } ^layer <garb1> ^compo <garb2> ^commo <garb3> ^pin-name <> <pn>)
  - (ff ^net-name <nn> ^grid-y < <gy>)
  - (horizontal ^net-name nil ^min <= <vcom> ^max >= <gx> ^com <gy>)
  - (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcom> ^max >= <gx> ^com <gy>)
    (vertical ^net-name nil ^min <= <gy> ^max { <max> > <gy> } ^com <gx> ^layer <lay> ^compo <cpo> ^commo <cmo> ^max-net <mn>)
  - (horizontal ^net-name { <> nil <> <nn> } ^min <= <gx> ^max >= <gx> ^layer <lay> ^compo <gy>)
    (congestion ^direction row ^coordinate <hcmo> ^como <gy>)
  - (vertical ^status nil ^net-name { <> nil <> <nn> } ^min <= <hcmo> ^max >= <hcmo> ^com <gx> ^layer <lay>)
  -->
    (make vertical ^net-name nil ^max <max> ^min <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^max-net <mn> ^min-net <nn>)
    (modify 5 ^max <gy> ^max-net <nn>)
    (make vertical ^net-name <nn> ^min <gy> ^max <hcmo> ^layer <lay> ^com <gx> ^commo <cmo> ^compo <cpo> ^pin-name <pn>)
    (modify 2 ^grid-y <hcmo> ^can-chng-layer nil)
    (modify 1 ^present propagate-constraint)
)

(p p243
    (context ^present loose-constraint0)
  -->
    (modify 1 ^present loose-constraint)
)

(p p363
    (move-via <nn>)
  -->
    (remove 1)
    (make finally-routed <nn>)
)

(p p364
    (move-via <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <garb1> ^commo <hcmo> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcmo> ^max <hcom> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
    (vertical ^net-name nil ^min { <vmin2> <= <hcmo> } ^max { <vmax2> > <vmin2> >= <hcom> } ^com <vcom> ^layer <hlay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (horizontal ^net-name <> <nn> ^min < <vcom> ^max >= <vcom> ^com <hcmo>)
  - (vertical ^net-name <> <nn> ^min < <hcmo> ^max <hcmo> ^com <vcom>)
  -->
    (modify 3 ^max <hcmo>)
    (make vertical ^layer <vlay> ^max <hcom> ^min <hcmo> ^com <vcom> ^min-net <nn> ^commo <vcmo> ^compo <vcpo>)
    (make vertical ^layer <hlay> ^min <vmin2> ^max <hcmo> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
    (modify 4 ^min <hcom> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcmo> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
    (remove 1)
    (make move-via <nn> <vlay> <vcom> <hcom>)
)

(p p365
    (move-via <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <garb1> ^commo <hcmo> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <= <hcmo> ^max <hcom> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
    (vertical ^net-name nil ^min { <vmin2> <= <hcmo> } ^max { <vmax2> > <vmin2> >= <hcom> } ^com <vcom> ^layer <hlay> ^compo <vcpo> ^commo <vcmo> ^min-net <mn>)
  - (horizontal ^net-name <> <nn> ^min <= <vcom> ^max > <vcom> ^com <hcmo>)
  - (vertical ^net-name <> <nn> ^min < <hcmo> ^max <hcmo> ^com <vcom>)
  -->
    (modify 3 ^max <hcmo>)
    (make vertical ^layer <vlay> ^max <hcom> ^min <hcmo> ^com <vcom> ^min-net <nn> ^commo <vcmo> ^compo <vcpo>)
    (make vertical ^layer <hlay> ^min <vmin2> ^max <hcmo> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
    (modify 4 ^min <hcom> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcmo> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
    (remove 1)
    (make move-via <nn> <vlay> <vcom> <hcom>)
)

(p p366
    (move-via <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <garb1> ^commo <vcmo> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcmo> ^max <vcom> ^com { <hcom> >= <vmin> <= <vmax> } ^layer { <hlay> <> <vlay> })
    (horizontal ^net-name nil ^min { <hmin2> <= <vcmo> } ^max { <hmax2> > <hmin2> >= <vcom> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (vertical ^net-name <> <nn> ^min < <hcom> ^max >= <hcom> ^com <vcmo>)
  - (horizontal ^net-name <> <nn> ^min < <vcmo> ^max <vcmo> ^com <hcom>)
  -->
    (modify 3 ^max <vcmo>)
    (make horizontal ^layer <hlay> ^max <vcom> ^min <vcmo> ^com <hcom> ^min-net <nn> ^commo <hcmo> ^compo <hcpo>)
    (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcmo> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
    (modify 4 ^min <vcom> ^min-net <nn>)
    (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcmo> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
    (remove 1)
    (make move-via <nn> <hlay> <hcom> <vcom>)
)

(p p367
    (move-via <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <garb1> ^commo <vcmo> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <= <vcmo> ^com { <hcom> >= <vmin> <= <vmax> } ^max <vcom> ^layer { <hlay> <> <vlay> })
    (horizontal ^net-name nil ^min { <hmin2> <= <vcmo> } ^max { <hmax2> > <hmin2> >= <vcom> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (vertical ^net-name <> <nn> ^min <= <hcom> ^max > <hcom> ^com <vcmo>)
  - (horizontal ^net-name <> <nn> ^min < <vcmo> ^max <vcmo> ^com <hcom>)
  -->
    (modify 3 ^max <vcmo>)
    (make horizontal ^layer <hlay> ^max <vcom> ^min <vcmo> ^com <hcom> ^min-net <nn> ^commo <hcmo> ^compo <hcpo>)
    (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcmo> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
    (modify 4 ^min <vcom> ^min-net <nn>)
    (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcmo> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
    (remove 1)
    (make move-via <nn> <hlay> <hcom> <vcom>)
)

(p p368
    (move-via <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <hcpo> ^commo <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max >= <hcpo> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
    (vertical ^net-name nil ^min { <vmin2> <= <hcom> } ^max { <vmax2> > <vmin2> >= <hcpo> } ^com <vcom> ^layer <hlay> ^commo <vcmo> ^compo <vcpo> ^min-net <mn>)
  - (horizontal ^net-name <> <nn> ^min < <vcom> ^max >= <vcom> ^com <hcpo>)
  - (vertical ^net-name <> <nn> ^min <hcpo> ^max > <hcpo> ^com <vcom>)
  -->
    (modify 3 ^min <hcpo>)
    (make vertical ^layer <vlay> ^min <hcom> ^max <hcpo> ^com <vcom> ^max-net <nn> ^commo <vcmo> ^compo <vcpo>)
    (make vertical ^layer <hlay> ^min <vmin2> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
    (modify 4 ^min <hcpo> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcom> ^max <hcpo> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
    (remove 1)
    (make move-via <nn> <vlay> <vcom> <hcom>)
)

(p p369
    (move-via <nn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <hmin> ^max <hmax> ^com <hcom> ^layer <hlay> ^compo <hcpo> ^commo <garb1> ^pin-name <pn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <hcom> ^max >= <hcpo> ^com { <vcom> >= <hmin> <= <hmax> } ^layer { <vlay> <> <hlay> })
    (vertical ^net-name nil ^min { <vmin2> <= <hcom> } ^max { <vmax2> > <vmin2> >= <hcpo> } ^com <vcom> ^layer <hlay> ^commo <vcmo> ^compo <vcpo> ^min-net <mn>)
  - (horizontal ^net-name <> <nn> ^min <= <vcom> ^max > <vcom> ^com <hcpo>)
  - (vertical ^net-name <> <nn> ^min <hcpo> ^max > <hcpo> ^com <vcom>)
  -->
    (modify 3 ^min <hcpo>)
    (make vertical ^layer <vlay> ^min <hcom> ^max <hcpo> ^com <vcom> ^max-net <nn> ^commo <vcmo> ^compo <vcpo>)
    (make vertical ^layer <hlay> ^min <vmin2> ^max <hcom> ^commo <vcmo> ^compo <vcpo> ^min-net <mn> ^max-net <nn> ^com <vcom>)
    (modify 4 ^min <hcpo> ^min-net <nn>)
    (make vertical ^net-name <nn> ^pin-name <pn> ^layer <hlay> ^min <hcom> ^max <hcpo> ^commo <vcmo> ^compo <vcpo> ^com <vcom>)
    (remove 1)
    (make move-via <nn> <vlay> <vcom> <hcom>)
)

(p p370
    (move-via <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <vcpo> ^commo <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max >= <vcpo> ^com { <hcom> >= <vmin> <= <vmax> } ^layer { <hlay> <> <vlay> })
    (horizontal ^net-name nil ^min { <hmin2> <= <vcom> } ^max { <hmax2> > <hmin2> >= <vcpo> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (vertical ^net-name <> <nn> ^min < <hcom> ^max >= <hcom> ^com <vcpo>)
  - (horizontal ^net-name <> <nn> ^min <vcpo> ^max > <vcpo> ^com <hcom>)
  -->
    (modify 3 ^min <vcpo>)
    (make horizontal ^layer <hlay> ^max <vcpo> ^min <vcom> ^com <hcom> ^max-net <nn> ^commo <hcmo> ^compo <hcpo>)
    (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
    (modify 4 ^min <vcpo> ^min-net <nn>)
    (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcom> ^max <vcpo> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
    (remove 1)
    (make move-via <nn> <hlay> <hcom> <vcom>)
)

(p p371
    (move-via <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin> ^max <vmax> ^com <vcom> ^layer <vlay> ^compo <vcpo> ^commo <garb1> ^pin-name <pn>)
    (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom> ^max >= <vcpo> ^com { <hcom> >= <vmin> <= <vmax> } ^layer { <hlay> <> <vlay> })
    (horizontal ^net-name nil ^min { <hmin2> <= <vcom> } ^max { <hmax2> > <hmin2> >= <vcpo> } ^com <hcom> ^layer <vlay> ^compo <hcpo> ^commo <hcmo> ^min-net <mn>)
  - (vertical ^net-name <> <nn> ^min <= <hcom> ^max > <hcom> ^com <vcmo>)
  - (horizontal ^net-name <> <nn> ^min <vcpo> ^max > <vcpo> ^com <hcom>)
  -->
    (modify 3 ^min <vcpo>)
    (make horizontal ^layer <hlay> ^max <vcpo> ^min <vcom> ^com <hcom> ^max-net <nn> ^commo <hcmo> ^compo <hcpo>)
    (make horizontal ^layer <vlay> ^min <hmin2> ^max <vcom> ^commo <hcmo> ^compo <hcpo> ^min-net <mn> ^max-net <nn> ^com <hcom>)
    (modify 4 ^min <vcpo> ^min-net <nn>)
    (make horizotnal ^net-name <nn> ^pin-name <pn> ^layer <vlay> ^min <vcom> ^max <vcpo> ^commo <hcmo> ^compo <hcpo> ^com <hcom>)
    (remove 1)
    (make move-via <nn> <hlay> <hcom> <vcom>)
)

(p p372
    (move-via <nn>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmin1> ^max <vmax1> ^com <vcom1> ^layer <vlay> ^compo <vcpo1> ^commo <vcmo1> ^pin-name <pn1>)
    (vertical ^status nil ^net-name { <nn> <> nil } ^min <vmax1> ^max <vmax2> ^com { <vcom2> > <vcom1> } ^layer <vlay> ^compo <vcpo2> ^commo <vcmo2> ^pin-name <pn2>)
    { <h1> (horizontal ^status nil ^net-name { <nn> <> nil } ^min <vcom1> ^max <vcom2> ^com <vmax1> ^layer { <hlay> <> <vlay> }) }
    { <h2> (horizontal ^status nil ^net-name nil ^min { <fmin> <= <vcom1> } ^max { <fmax> >= <vcom2> } ^com <vmax1> ^layer <vlay>) }
  - (vertical ^min < <vmax1> ^max >= <vmax1> ^com { > <vcom1> < <vcom2> })
  -->
    (remove <h2>)
    (modify <h1> ^net-name nil ^pin-name nil ^min-net nil ^max-net nil)
    (make (substr <h2> 1 inf) ^max <vcmo1> ^max-net nil)
    (make (substr <h2> 1 inf) ^min <vcpo2> ^min-net nil)
    (make (substr <h1> 1 inf) ^layer <vlay>)
)

(p p373
    (move-via <nn> <lay> <x> <y>)
    (horizontal ^min <x> ^max <garb1> ^com <y> ^layer <lay> ^min-net <nn> ^max-net <garb2>)
  -->
    (modify 2 ^min-net nil)
)

(p p374
    (move-via <nn> <lay> <x> <y>)
    (vertical ^min <y> ^max <garb1> ^com <x> ^layer <lay> ^min-net <nn> ^max-net <garb2>)
  -->
    (modify 2 ^min-net nil)
)

(p p375
    (move-via <nn> <lay> <x> <y>)
    (horizontal ^min <garb1> ^max <x> ^com <y> ^layer <lay> ^min-net <garb2> ^max-net <nn>)
  -->
    (modify 2 ^max-net nil)
)

(p p376
    (move-via <nn> <lay> <x> <y>)
    (vertical ^min <garb1> ^max <y> ^com <x> ^layer <lay> ^min-net <garb2> ^max-net <nn>)
  -->
    (modify 2 ^max-net nil)
)

(p start-dummy
    (start)
  -->
    (write (crlf) | Dummy START, do "loadwm" from "kuh.tmp".| (crlf))
)


