T_SFLU_DRFPMI

wield.control.SFLU.test.T_SFLU_DRFPMI

This is a pytest module needing documentation

pytest-html report

Functions

T_SFLU_DRFPMI_serialize()

This is a pytest needing documentation

T_SFLU_DRFPMI_show_full()

Show a graph reduction using networkx+tikz

T_SFLU_DRFPMI_show_sub()

Show a graph reduction using networkx+tikz

T_SFLU_DRFPMI_working()

This is a pytest needing documentation

Details

T_SFLU_DRFPMI_serialize()[source][github]

This is a pytest needing documentation

code
 1def T_SFLU_DRFPMI_serialize():
 2    sflu = SFLU.SFLU(
 3        DRFPMI_edges,
 4        **in_out,
 5    )
 6    sflu.reduce(*reduce_list)
 7    comp = sflu.computer()
 8
 9    oplistE_yamlstr = comp.convert_oplistE2yamlstr()
10    print(oplistE_yamlstr)
11
12    assert(comp.convert_yamlstr2oplistE(oplistE_yamlstr) == comp.oplistE)
13
14    comp_yamlstr = comp.convert_self2yamlstr()
15    print(comp_yamlstr)
16
17    comp2 = SFLU.SFLUCompute.from_yaml(comp_yamlstr)
18    assert(comp2.oplistE == comp.oplistE)
19    assert(comp2.edges == comp.edges)
20    assert(comp2.row2col == comp.row2col)
21    assert(comp2.col2row == comp.col2row)
22
23    with open(tjoin('DRFPMI.yaml'), 'w') as F:
24        F.write(comp_yamlstr)
25    return
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.SFLU.test.T_SFLU_DRFPMI.T_SFLU_DRFPMI_serialize

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

T_SFLU_DRFPMI_serialize
output
- args: [X.etm.A.i]
  op: E_CLGd
  targ: (U.X.etm.A.i<L.X.etm.A.i)
- args: [(X.etm.A.o<X.etm.A.i), (U.X.etm.A.i<L.X.etm.A.i), (X.etm.A.i<X.itm.B.o)]
  op: E_mul3
  targ: (X.etm.A.o<X.itm.B.o)
- args: [(U.X.etm.A.i<L.X.etm.A.i), (X.etm.A.i<X.itm.B.o)]
  op: E_mul2
  targ: (U.X.etm.A.i<X.itm.B.o)
- {op: E_del, targ: (X.etm.A.i<X.itm.B.o)}
- args: [(X.etm.B.o<X.etm.A.i)]
  op: E_assign
  targ: (X.etm.B.o<U.X.etm.A.i)
- {op: E_del, targ: (X.etm.B.o<X.etm.A.i)}
- {op: E_del, targ: (U.X.etm.A.i<L.X.etm.A.i)}
- args: [X.etm.A.o]
  op: E_CLGd
  targ: (U.X.etm.A.o<L.X.etm.A.o)
- args: [(X.itm.B.i<X.etm.A.o), (U.X.etm.A.o<L.X.etm.A.o), (X.etm.A.o<X.itm.B.o)]
  op: E_mul3
  targ: (X.itm.B.i<X.itm.B.o)
- args: [(X.itm.B.i<X.etm.A.o), (U.X.etm.A.o<L.X.etm.A.o)]
  op: E_mul2
  targ: (X.itm.B.i<L.X.etm.A.o)
- {op: E_del, targ: (X.itm.B.i<X.etm.A.o)}
- args: [(U.X.etm.A.o<L.X.etm.A.o), (X.etm.A.o<X.itm.B.o)]
  op: E_mul2
  targ: (U.X.etm.A.o<X.itm.B.o)
- {op: E_del, targ: (X.etm.A.o<X.itm.B.o)}
- args: [(X.etm.A.o.tp<X.etm.A.o)]
  op: E_assign
  targ: (X.etm.A.o.tp<U.X.etm.A.o)
- {op: E_del, targ: (X.etm.A.o.tp<X.etm.A.o)}
- args: [(X.etm.A.o<X.etm.A.o.exc)]
  op: E_assign
  targ: (L.X.etm.A.o<X.etm.A.o.exc)
- {op: E_del, targ: (X.etm.A.o<X.etm.A.o.exc)}
- args: [(X.etm.A.o<X.etm.B.i)]
  op: E_assign
  targ: (L.X.etm.A.o<X.etm.B.i)
- {op: E_del, targ: (X.etm.A.o<X.etm.B.i)}
- args: [X.itm.B.i]
  op: E_CLGd
  targ: (U.X.itm.B.i<L.X.itm.B.i)
- args: [(X.itm.B.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i), (X.itm.B.i<X.itm.B.o)]
  op: E_mul3
  targ: (X.itm.B.o<X.itm.B.o)
- args: [(X.itm.A.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i), (X.itm.B.i<X.itm.B.o)]
  op: E_mul3
  targ: (X.itm.A.o<X.itm.B.o)
- args: [(X.itm.B.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i)]
  op: E_mul2
  targ: (X.itm.B.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.B.o<X.itm.B.i)}
- args: [(X.itm.A.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i)]
  op: E_mul2
  targ: (X.itm.A.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.A.o<X.itm.B.i)}
- args: [(X.itm.B.i<L.X.etm.A.o)]
  op: E_assign
  targ: (L.X.itm.B.i<L.X.etm.A.o)
- {op: E_del, targ: (X.itm.B.i<L.X.etm.A.o)}
- {op: E_del, targ: (U.X.itm.B.i<L.X.itm.B.i)}
- args: [(X.itm.B.o<X.itm.B.o)]
  op: E_CLG
  targ: (U.X.itm.B.o<L.X.itm.B.o)
- args: [(X.itm.A.o<X.itm.B.o), (U.X.itm.B.o<L.X.itm.B.o), (X.itm.B.o<X.itm.A.i),
    (X.itm.A.o<X.itm.A.i)]
  op: E_mul3add
  targ: (X.itm.A.o<X.itm.A.i)
- args: [(X.itm.A.o<X.itm.B.o), (U.X.itm.B.o<L.X.itm.B.o)]
  op: E_mul2
  targ: (X.itm.A.o<L.X.itm.B.o)
- {op: E_del, targ: (X.itm.A.o<X.itm.B.o)}
- args: [(U.X.itm.B.o<L.X.itm.B.o), (X.itm.B.o<X.itm.A.i)]
  op: E_mul2
  targ: (U.X.itm.B.o<X.itm.A.i)
- {op: E_del, targ: (X.itm.B.o<X.itm.A.i)}
- args: [(U.X.etm.A.o<X.itm.B.o)]
  op: E_assign
  targ: (U.X.etm.A.o<U.X.itm.B.o)
- {op: E_del, targ: (U.X.etm.A.o<X.itm.B.o)}
- args: [(U.X.etm.A.i<X.itm.B.o)]
  op: E_assign
  targ: (U.X.etm.A.i<U.X.itm.B.o)
- {op: E_del, targ: (U.X.etm.A.i<X.itm.B.o)}
- args: [(X.itm.B.o<L.X.itm.B.i)]
  op: E_assign
  targ: (L.X.itm.B.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.B.o<L.X.itm.B.i)}
- args: [Y.etm.A.i]
  op: E_CLGd
  targ: (U.Y.etm.A.i<L.Y.etm.A.i)
- args: [(Y.etm.A.o<Y.etm.A.i), (U.Y.etm.A.i<L.Y.etm.A.i), (Y.etm.A.i<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.etm.A.o<Y.itm.B.o)
- args: [(U.Y.etm.A.i<L.Y.etm.A.i), (Y.etm.A.i<Y.itm.B.o)]
  op: E_mul2
  targ: (U.Y.etm.A.i<Y.itm.B.o)
- {op: E_del, targ: (Y.etm.A.i<Y.itm.B.o)}
- args: [(Y.etm.B.o<Y.etm.A.i)]
  op: E_assign
  targ: (Y.etm.B.o<U.Y.etm.A.i)
- {op: E_del, targ: (Y.etm.B.o<Y.etm.A.i)}
- {op: E_del, targ: (U.Y.etm.A.i<L.Y.etm.A.i)}
- args: [Y.etm.A.o]
  op: E_CLGd
  targ: (U.Y.etm.A.o<L.Y.etm.A.o)
- args: [(Y.itm.B.i<Y.etm.A.o), (U.Y.etm.A.o<L.Y.etm.A.o), (Y.etm.A.o<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.itm.B.i<Y.itm.B.o)
- args: [(Y.itm.B.i<Y.etm.A.o), (U.Y.etm.A.o<L.Y.etm.A.o)]
  op: E_mul2
  targ: (Y.itm.B.i<L.Y.etm.A.o)
- {op: E_del, targ: (Y.itm.B.i<Y.etm.A.o)}
- args: [(U.Y.etm.A.o<L.Y.etm.A.o), (Y.etm.A.o<Y.itm.B.o)]
  op: E_mul2
  targ: (U.Y.etm.A.o<Y.itm.B.o)
- {op: E_del, targ: (Y.etm.A.o<Y.itm.B.o)}
- args: [(Y.etm.A.o.tp<Y.etm.A.o)]
  op: E_assign
  targ: (Y.etm.A.o.tp<U.Y.etm.A.o)
- {op: E_del, targ: (Y.etm.A.o.tp<Y.etm.A.o)}
- args: [(Y.etm.A.o<Y.etm.A.o.exc)]
  op: E_assign
  targ: (L.Y.etm.A.o<Y.etm.A.o.exc)
- {op: E_del, targ: (Y.etm.A.o<Y.etm.A.o.exc)}
- args: [(Y.etm.A.o<Y.etm.B.i)]
  op: E_assign
  targ: (L.Y.etm.A.o<Y.etm.B.i)
- {op: E_del, targ: (Y.etm.A.o<Y.etm.B.i)}
- args: [Y.itm.B.i]
  op: E_CLGd
  targ: (U.Y.itm.B.i<L.Y.itm.B.i)
- args: [(Y.itm.A.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i), (Y.itm.B.i<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.itm.A.o<Y.itm.B.o)
- args: [(Y.itm.B.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i), (Y.itm.B.i<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.itm.B.o<Y.itm.B.o)
- args: [(Y.itm.A.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i)]
  op: E_mul2
  targ: (Y.itm.A.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.A.o<Y.itm.B.i)}
- args: [(Y.itm.B.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i)]
  op: E_mul2
  targ: (Y.itm.B.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.B.o<Y.itm.B.i)}
- args: [(Y.itm.B.i<L.Y.etm.A.o)]
  op: E_assign
  targ: (L.Y.itm.B.i<L.Y.etm.A.o)
- {op: E_del, targ: (Y.itm.B.i<L.Y.etm.A.o)}
- {op: E_del, targ: (U.Y.itm.B.i<L.Y.itm.B.i)}
- args: [(Y.itm.B.o<Y.itm.B.o)]
  op: E_CLG
  targ: (U.Y.itm.B.o<L.Y.itm.B.o)
- args: [(Y.itm.A.o<Y.itm.B.o), (U.Y.itm.B.o<L.Y.itm.B.o), (Y.itm.B.o<Y.itm.A.i),
    (Y.itm.A.o<Y.itm.A.i)]
  op: E_mul3add
  targ: (Y.itm.A.o<Y.itm.A.i)
- args: [(Y.itm.A.o<Y.itm.B.o), (U.Y.itm.B.o<L.Y.itm.B.o)]
  op: E_mul2
  targ: (Y.itm.A.o<L.Y.itm.B.o)
- {op: E_del, targ: (Y.itm.A.o<Y.itm.B.o)}
- args: [(U.Y.itm.B.o<L.Y.itm.B.o), (Y.itm.B.o<Y.itm.A.i)]
  op: E_mul2
  targ: (U.Y.itm.B.o<Y.itm.A.i)
- {op: E_del, targ: (Y.itm.B.o<Y.itm.A.i)}
- args: [(U.Y.etm.A.o<Y.itm.B.o)]
  op: E_assign
  targ: (U.Y.etm.A.o<U.Y.itm.B.o)
- {op: E_del, targ: (U.Y.etm.A.o<Y.itm.B.o)}
- args: [(U.Y.etm.A.i<Y.itm.B.o)]
  op: E_assign
  targ: (U.Y.etm.A.i<U.Y.itm.B.o)
- {op: E_del, targ: (U.Y.etm.A.i<Y.itm.B.o)}
- args: [(Y.itm.B.o<L.Y.itm.B.i)]
  op: E_assign
  targ: (L.Y.itm.B.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.B.o<L.Y.itm.B.i)}
- args: [X.itm.A.i]
  op: E_CLGd
  targ: (U.X.itm.A.i<L.X.itm.A.i)
- args: [(X.itm.A.o<X.itm.A.i), (U.X.itm.A.i<L.X.itm.A.i), (X.itm.A.i<BS.B1.o)]
  op: E_mul3
  targ: (X.itm.A.o<BS.B1.o)
- args: [(U.X.itm.A.i<L.X.itm.A.i), (X.itm.A.i<BS.B1.o)]
  op: E_mul2
  targ: (U.X.itm.A.i<BS.B1.o)
- {op: E_del, targ: (X.itm.A.i<BS.B1.o)}
- args: [(U.X.itm.B.o<X.itm.A.i)]
  op: E_assign
  targ: (U.X.itm.B.o<U.X.itm.A.i)
- {op: E_del, targ: (U.X.itm.B.o<X.itm.A.i)}
- {op: E_del, targ: (U.X.itm.A.i<L.X.itm.A.i)}
- args: [X.itm.A.o]
  op: E_CLGd
  targ: (U.X.itm.A.o<L.X.itm.A.o)
- args: [(BS.B1.i<X.itm.A.o), (U.X.itm.A.o<L.X.itm.A.o), (X.itm.A.o<BS.B1.o)]
  op: E_mul3
  targ: (BS.B1.i<BS.B1.o)
- args: [(BS.B1.i<X.itm.A.o), (U.X.itm.A.o<L.X.itm.A.o)]
  op: E_mul2
  targ: (BS.B1.i<L.X.itm.A.o)
- {op: E_del, targ: (BS.B1.i<X.itm.A.o)}
- args: [(X.itm.A.o<L.X.itm.B.o)]
  op: E_assign
  targ: (L.X.itm.A.o<L.X.itm.B.o)
- {op: E_del, targ: (X.itm.A.o<L.X.itm.B.o)}
- args: [(X.itm.A.o<L.X.itm.B.i)]
  op: E_assign
  targ: (L.X.itm.A.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.A.o<L.X.itm.B.i)}
- {op: E_del, targ: (U.X.itm.A.o<L.X.itm.A.o)}
- args: [Y.itm.A.i]
  op: E_CLGd
  targ: (U.Y.itm.A.i<L.Y.itm.A.i)
- args: [(Y.itm.A.o<Y.itm.A.i), (U.Y.itm.A.i<L.Y.itm.A.i), (Y.itm.A.i<BS.A2.o)]
  op: E_mul3
  targ: (Y.itm.A.o<BS.A2.o)
- args: [(U.Y.itm.A.i<L.Y.itm.A.i), (Y.itm.A.i<BS.A2.o)]
  op: E_mul2
  targ: (U.Y.itm.A.i<BS.A2.o)
- {op: E_del, targ: (Y.itm.A.i<BS.A2.o)}
- args: [(U.Y.itm.B.o<Y.itm.A.i)]
  op: E_assign
  targ: (U.Y.itm.B.o<U.Y.itm.A.i)
- {op: E_del, targ: (U.Y.itm.B.o<Y.itm.A.i)}
- {op: E_del, targ: (U.Y.itm.A.i<L.Y.itm.A.i)}
- args: [Y.itm.A.o]
  op: E_CLGd
  targ: (U.Y.itm.A.o<L.Y.itm.A.o)
- args: [(BS.A2.i<Y.itm.A.o), (U.Y.itm.A.o<L.Y.itm.A.o), (Y.itm.A.o<BS.A2.o)]
  op: E_mul3
  targ: (BS.A2.i<BS.A2.o)
- args: [(BS.A2.i<Y.itm.A.o), (U.Y.itm.A.o<L.Y.itm.A.o)]
  op: E_mul2
  targ: (BS.A2.i<L.Y.itm.A.o)
- {op: E_del, targ: (BS.A2.i<Y.itm.A.o)}
- args: [(Y.itm.A.o<L.Y.itm.B.o)]
  op: E_assign
  targ: (L.Y.itm.A.o<L.Y.itm.B.o)
- {op: E_del, targ: (Y.itm.A.o<L.Y.itm.B.o)}
- args: [(Y.itm.A.o<L.Y.itm.B.i)]
  op: E_assign
  targ: (L.Y.itm.A.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.A.o<L.Y.itm.B.i)}
- {op: E_del, targ: (U.Y.itm.A.o<L.Y.itm.A.o)}
- args: [prm.A.i]
  op: E_CLGd
  targ: (U.prm.A.i<L.prm.A.i)
- args: [(prm.A.o<prm.A.i), (U.prm.A.i<L.prm.A.i)]
  op: E_mul2
  targ: (prm.A.o<L.prm.A.i)
- {op: E_del, targ: (prm.A.o<prm.A.i)}
- args: [(prm.B.o<prm.A.i), (U.prm.A.i<L.prm.A.i)]
  op: E_mul2
  targ: (prm.B.o<L.prm.A.i)
- {op: E_del, targ: (prm.B.o<prm.A.i)}
- args: [(prm.A.i<prm.A.i.exc)]
  op: E_assign
  targ: (L.prm.A.i<prm.A.i.exc)
- {op: E_del, targ: (prm.A.i<prm.A.i.exc)}
- {op: E_del, targ: (U.prm.A.i<L.prm.A.i)}
- args: [prm.A.o]
  op: E_CLGd
  targ: (U.prm.A.o<L.prm.A.o)
- args: [(U.prm.A.o<L.prm.A.o), (prm.A.o<prm.B.i)]
  op: E_mul2
  targ: (U.prm.A.o<prm.B.i)
- {op: E_del, targ: (prm.A.o<prm.B.i)}
- args: [(prm.A.o.tp<prm.A.o)]
  op: E_assign
  targ: (prm.A.o.tp<U.prm.A.o)
- {op: E_del, targ: (prm.A.o.tp<prm.A.o)}
- args: [(prm.A.o<L.prm.A.i)]
  op: E_assign
  targ: (L.prm.A.o<L.prm.A.i)
- {op: E_del, targ: (prm.A.o<L.prm.A.i)}
- args: [prm.B.i]
  op: E_CLGd
  targ: (U.prm.B.i<L.prm.B.i)
- args: [(prm.B.o<prm.B.i), (U.prm.B.i<L.prm.B.i), (prm.B.i<BS.A1.o)]
  op: E_mul3
  targ: (prm.B.o<BS.A1.o)
- args: [(U.prm.B.i<L.prm.B.i), (prm.B.i<BS.A1.o)]
  op: E_mul2
  targ: (U.prm.B.i<BS.A1.o)
- {op: E_del, targ: (prm.B.i<BS.A1.o)}
- args: [(U.prm.A.o<prm.B.i)]
  op: E_assign
  targ: (U.prm.A.o<U.prm.B.i)
- {op: E_del, targ: (U.prm.A.o<prm.B.i)}
- {op: E_del, targ: (U.prm.B.i<L.prm.B.i)}
- args: [prm.B.o]
  op: E_CLGd
  targ: (U.prm.B.o<L.prm.B.o)
- args: [(BS.A1.i<prm.B.o), (U.prm.B.o<L.prm.B.o), (prm.B.o<BS.A1.o)]
  op: E_mul3
  targ: (BS.A1.i<BS.A1.o)
- args: [(BS.A1.i<prm.B.o), (U.prm.B.o<L.prm.B.o)]
  op: E_mul2
  targ: (BS.A1.i<L.prm.B.o)
- {op: E_del, targ: (BS.A1.i<prm.B.o)}
- args: [(prm.B.o<L.prm.A.i)]
  op: E_assign
  targ: (L.prm.B.o<L.prm.A.i)
- {op: E_del, targ: (prm.B.o<L.prm.A.i)}
- {op: E_del, targ: (U.prm.B.o<L.prm.B.o)}
- args: [BS.A1.i]
  op: E_CLGd
  targ: (U.BS.A1.i<L.BS.A1.i)
- args: [(BS.B1.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i), (BS.A1.i<BS.A1.o)]
  op: E_mul3
  targ: (BS.B1.o<BS.A1.o)
- args: [(BS.A2.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i), (BS.A1.i<BS.A1.o)]
  op: E_mul3
  targ: (BS.A2.o<BS.A1.o)
- args: [(BS.B1.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.A1.i)
- {op: E_del, targ: (BS.B1.o<BS.A1.i)}
- args: [(BS.A2.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i)]
  op: E_mul2
  targ: (BS.A2.o<L.BS.A1.i)
- {op: E_del, targ: (BS.A2.o<BS.A1.i)}
- args: [(BS.A1.i<L.prm.B.o)]
  op: E_assign
  targ: (L.BS.A1.i<L.prm.B.o)
- {op: E_del, targ: (BS.A1.i<L.prm.B.o)}
- {op: E_del, targ: (U.BS.A1.i<L.BS.A1.i)}
- args: [BS.A1.o]
  op: E_CLGd
  targ: (U.BS.A1.o<L.BS.A1.o)
- args: [(BS.B1.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.B1.i)]
  op: E_mul3
  targ: (BS.B1.o<BS.B1.i)
- args: [(BS.B1.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.A2.i)]
  op: E_mul3
  targ: (BS.B1.o<BS.A2.i)
- args: [(BS.A2.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.B1.i)]
  op: E_mul3
  targ: (BS.A2.o<BS.B1.i)
- args: [(BS.A2.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.A2.i)]
  op: E_mul3
  targ: (BS.A2.o<BS.A2.i)
- args: [(U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.B1.i)]
  op: E_mul2
  targ: (U.BS.A1.o<BS.B1.i)
- {op: E_del, targ: (BS.A1.o<BS.B1.i)}
- args: [(U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.A2.i)]
  op: E_mul2
  targ: (U.BS.A1.o<BS.A2.i)
- {op: E_del, targ: (BS.A1.o<BS.A2.i)}
- args: [(U.prm.B.i<BS.A1.o)]
  op: E_assign
  targ: (U.prm.B.i<U.BS.A1.o)
- {op: E_del, targ: (U.prm.B.i<BS.A1.o)}
- {op: E_del, targ: (U.BS.A1.o<L.BS.A1.o)}
- args: [BS.A2.i]
  op: E_CLGd
  targ: (U.BS.A2.i<L.BS.A2.i)
- args: [(BS.B1.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul3
  targ: (BS.B1.o<BS.A2.o)
- args: [(BS.B2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul3
  targ: (BS.B2.o<BS.A2.o)
- args: [(BS.A2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul3
  targ: (BS.A2.o<BS.A2.o)
- args: [(BS.B1.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B1.o<BS.A2.i)}
- args: [(BS.B2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B2.o<BS.A2.i)}
- args: [(BS.A2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i)]
  op: E_mul2
  targ: (BS.A2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.A2.o<BS.A2.i)}
- args: [(U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul2
  targ: (U.BS.A2.i<BS.A2.o)
- {op: E_del, targ: (BS.A2.i<BS.A2.o)}
- args: [(U.BS.A1.o<BS.A2.i)]
  op: E_assign
  targ: (U.BS.A1.o<U.BS.A2.i)
- {op: E_del, targ: (U.BS.A1.o<BS.A2.i)}
- args: [(BS.A2.i<L.Y.itm.A.o)]
  op: E_assign
  targ: (L.BS.A2.i<L.Y.itm.A.o)
- {op: E_del, targ: (BS.A2.i<L.Y.itm.A.o)}
- args: [(BS.A2.o<BS.A2.o)]
  op: E_CLG
  targ: (U.BS.A2.o<L.BS.A2.o)
- args: [(BS.B2.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B2.i)]
  op: E_mul3
  targ: (BS.B2.o<BS.B2.i)
- args: [(BS.B2.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B1.i), (BS.B2.o<BS.B1.i)]
  op: E_mul3add
  targ: (BS.B2.o<BS.B1.i)
- args: [(BS.B1.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B2.i), (BS.B1.o<BS.B2.i)]
  op: E_mul3add
  targ: (BS.B1.o<BS.B2.i)
- args: [(BS.B1.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B1.i), (BS.B1.o<BS.B1.i)]
  op: E_mul3add
  targ: (BS.B1.o<BS.B1.i)
- args: [(BS.B2.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B2.o<BS.A2.o)}
- args: [(BS.B1.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B1.o<BS.A2.o)}
- args: [(U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B2.i)]
  op: E_mul2
  targ: (U.BS.A2.o<BS.B2.i)
- {op: E_del, targ: (BS.A2.o<BS.B2.i)}
- args: [(U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B1.i)]
  op: E_mul2
  targ: (U.BS.A2.o<BS.B1.i)
- {op: E_del, targ: (BS.A2.o<BS.B1.i)}
- args: [(U.Y.itm.A.i<BS.A2.o)]
  op: E_assign
  targ: (U.Y.itm.A.i<U.BS.A2.o)
- {op: E_del, targ: (U.Y.itm.A.i<BS.A2.o)}
- args: [(U.BS.A2.i<BS.A2.o)]
  op: E_assign
  targ: (U.BS.A2.i<U.BS.A2.o)
- {op: E_del, targ: (U.BS.A2.i<BS.A2.o)}
- args: [(BS.A2.o<L.BS.A2.i)]
  op: E_assign
  targ: (L.BS.A2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.A2.o<L.BS.A2.i)}
- args: [(BS.A2.o<L.BS.A1.i)]
  op: E_assign
  targ: (L.BS.A2.o<L.BS.A1.i)
- {op: E_del, targ: (BS.A2.o<L.BS.A1.i)}
- args: [BS.B1.i]
  op: E_CLGd
  targ: (U.BS.B1.i<L.BS.B1.i)
- args: [(BS.B1.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i), (BS.B1.i<BS.B1.o)]
  op: E_mul3
  targ: (BS.B1.o<BS.B1.o)
- args: [(BS.B2.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i), (BS.B1.i<BS.B1.o)]
  op: E_mul3
  targ: (BS.B2.o<BS.B1.o)
- args: [(BS.B1.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B1.o<BS.B1.i)}
- args: [(BS.B2.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B2.o<BS.B1.i)}
- args: [(U.BS.B1.i<L.BS.B1.i), (BS.B1.i<BS.B1.o)]
  op: E_mul2
  targ: (U.BS.B1.i<BS.B1.o)
- {op: E_del, targ: (BS.B1.i<BS.B1.o)}
- args: [(U.BS.A1.o<BS.B1.i)]
  op: E_assign
  targ: (U.BS.A1.o<U.BS.B1.i)
- {op: E_del, targ: (U.BS.A1.o<BS.B1.i)}
- args: [(U.BS.A2.o<BS.B1.i)]
  op: E_assign
  targ: (U.BS.A2.o<U.BS.B1.i)
- {op: E_del, targ: (U.BS.A2.o<BS.B1.i)}
- args: [(BS.B1.i<L.X.itm.A.o)]
  op: E_assign
  targ: (L.BS.B1.i<L.X.itm.A.o)
- {op: E_del, targ: (BS.B1.i<L.X.itm.A.o)}
- args: [(BS.B1.o<BS.B1.o)]
  op: E_CLG
  targ: (U.BS.B1.o<L.BS.B1.o)
- args: [(BS.B2.o<BS.B1.o), (U.BS.B1.o<L.BS.B1.o), (BS.B1.o<BS.B2.i), (BS.B2.o<BS.B2.i)]
  op: E_mul3add
  targ: (BS.B2.o<BS.B2.i)
- args: [(BS.B2.o<BS.B1.o), (U.BS.B1.o<L.BS.B1.o)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.B1.o)
- {op: E_del, targ: (BS.B2.o<BS.B1.o)}
- args: [(U.BS.B1.o<L.BS.B1.o), (BS.B1.o<BS.B2.i)]
  op: E_mul2
  targ: (U.BS.B1.o<BS.B2.i)
- {op: E_del, targ: (BS.B1.o<BS.B2.i)}
- args: [(U.BS.B1.i<BS.B1.o)]
  op: E_assign
  targ: (U.BS.B1.i<U.BS.B1.o)
- {op: E_del, targ: (U.BS.B1.i<BS.B1.o)}
- args: [(U.X.itm.A.i<BS.B1.o)]
  op: E_assign
  targ: (U.X.itm.A.i<U.BS.B1.o)
- {op: E_del, targ: (U.X.itm.A.i<BS.B1.o)}
- args: [(BS.B1.o<L.BS.A2.i)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B1.o<L.BS.A2.i)}
- args: [(BS.B1.o<L.BS.A1.i)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.A1.i)
- {op: E_del, targ: (BS.B1.o<L.BS.A1.i)}
- args: [(BS.B1.o<L.BS.B1.i)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B1.o<L.BS.B1.i)}
- args: [(BS.B1.o<L.BS.A2.o)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B1.o<L.BS.A2.o)}
- args: [BS.B2.i]
  op: E_CLGd
  targ: (U.BS.B2.i<L.BS.B2.i)
- args: [(BS.B2.o<BS.B2.i), (U.BS.B2.i<L.BS.B2.i), (BS.B2.i<srm.A.o)]
  op: E_mul3
  targ: (BS.B2.o<srm.A.o)
- args: [(U.BS.B2.i<L.BS.B2.i), (BS.B2.i<srm.A.o)]
  op: E_mul2
  targ: (U.BS.B2.i<srm.A.o)
- {op: E_del, targ: (BS.B2.i<srm.A.o)}
- args: [(U.BS.B1.o<BS.B2.i)]
  op: E_assign
  targ: (U.BS.B1.o<U.BS.B2.i)
- {op: E_del, targ: (U.BS.B1.o<BS.B2.i)}
- args: [(U.BS.A2.o<BS.B2.i)]
  op: E_assign
  targ: (U.BS.A2.o<U.BS.B2.i)
- {op: E_del, targ: (U.BS.A2.o<BS.B2.i)}
- {op: E_del, targ: (U.BS.B2.i<L.BS.B2.i)}
- args: [BS.B2.o]
  op: E_CLGd
  targ: (U.BS.B2.o<L.BS.B2.o)
- args: [(srm.A.i<BS.B2.o), (U.BS.B2.o<L.BS.B2.o), (BS.B2.o<srm.A.o)]
  op: E_mul3
  targ: (srm.A.i<srm.A.o)
- args: [(srm.A.i<BS.B2.o), (U.BS.B2.o<L.BS.B2.o)]
  op: E_mul2
  targ: (srm.A.i<L.BS.B2.o)
- {op: E_del, targ: (srm.A.i<BS.B2.o)}
- args: [(BS.B2.o<L.BS.A2.i)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B2.o<L.BS.A2.i)}
- args: [(BS.B2.o<L.BS.B1.o)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.B1.o)
- {op: E_del, targ: (BS.B2.o<L.BS.B1.o)}
- args: [(BS.B2.o<L.BS.B1.i)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B2.o<L.BS.B1.i)}
- args: [(BS.B2.o<L.BS.A2.o)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B2.o<L.BS.A2.o)}
- {op: E_del, targ: (U.BS.B2.o<L.BS.B2.o)}
- args: [srm.A.i]
  op: E_CLGd
  targ: (U.srm.A.i<L.srm.A.i)
- args: [(srm.A.o<srm.A.i), (U.srm.A.i<L.srm.A.i), (srm.A.i<srm.A.o)]
  op: E_mul3
  targ: (srm.A.o<srm.A.o)
- args: [(srm.B.o<srm.A.i), (U.srm.A.i<L.srm.A.i), (srm.A.i<srm.A.o)]
  op: E_mul3
  targ: (srm.B.o<srm.A.o)
- args: [(srm.A.o<srm.A.i), (U.srm.A.i<L.srm.A.i)]
  op: E_mul2
  targ: (srm.A.o<L.srm.A.i)
- {op: E_del, targ: (srm.A.o<srm.A.i)}
- args: [(srm.B.o<srm.A.i), (U.srm.A.i<L.srm.A.i)]
  op: E_mul2
  targ: (srm.B.o<L.srm.A.i)
- {op: E_del, targ: (srm.B.o<srm.A.i)}
- args: [(srm.A.i<L.BS.B2.o)]
  op: E_assign
  targ: (L.srm.A.i<L.BS.B2.o)
- {op: E_del, targ: (srm.A.i<L.BS.B2.o)}
- {op: E_del, targ: (U.srm.A.i<L.srm.A.i)}
- args: [(srm.A.o<srm.A.o)]
  op: E_CLG
  targ: (U.srm.A.o<L.srm.A.o)
- args: [(srm.B.o<srm.A.o), (U.srm.A.o<L.srm.A.o), (srm.A.o<srm.B.i), (srm.B.o<srm.B.i)]
  op: E_mul3add
  targ: (srm.B.o<srm.B.i)
- args: [(srm.B.o<srm.A.o), (U.srm.A.o<L.srm.A.o)]
  op: E_mul2
  targ: (srm.B.o<L.srm.A.o)
- {op: E_del, targ: (srm.B.o<srm.A.o)}
- args: [(U.srm.A.o<L.srm.A.o), (srm.A.o<srm.B.i)]
  op: E_mul2
  targ: (U.srm.A.o<srm.B.i)
- {op: E_del, targ: (srm.A.o<srm.B.i)}
- args: [(U.BS.B2.i<srm.A.o)]
  op: E_assign
  targ: (U.BS.B2.i<U.srm.A.o)
- {op: E_del, targ: (U.BS.B2.i<srm.A.o)}
- args: [(srm.A.o<L.srm.A.i)]
  op: E_assign
  targ: (L.srm.A.o<L.srm.A.i)
- {op: E_del, targ: (srm.A.o<L.srm.A.i)}
- args: [srm.B.i]
  op: E_CLGd
  targ: (U.srm.B.i<L.srm.B.i)
- args: [(srm.B.o<srm.B.i), (U.srm.B.i<L.srm.B.i)]
  op: E_mul2
  targ: (srm.B.o<L.srm.B.i)
- {op: E_del, targ: (srm.B.o<srm.B.i)}
- args: [(U.srm.A.o<srm.B.i)]
  op: E_assign
  targ: (U.srm.A.o<U.srm.B.i)
- {op: E_del, targ: (U.srm.A.o<srm.B.i)}
- args: [(srm.B.i<srm.B.i.exc)]
  op: E_assign
  targ: (L.srm.B.i<srm.B.i.exc)
- {op: E_del, targ: (srm.B.i<srm.B.i.exc)}
- args: [srm.B.o]
  op: E_CLGd
  targ: (U.srm.B.o<L.srm.B.o)
- args: [(srm.B.o.tp<srm.B.o)]
  op: E_assign
  targ: (srm.B.o.tp<U.srm.B.o)
- {op: E_del, targ: (srm.B.o.tp<srm.B.o)}
- args: [(srm.B.o<L.srm.A.i)]
  op: E_assign
  targ: (L.srm.B.o<L.srm.A.i)
- {op: E_del, targ: (srm.B.o<L.srm.A.i)}
- args: [(srm.B.o<L.srm.A.o)]
  op: E_assign
  targ: (L.srm.B.o<L.srm.A.o)
- {op: E_del, targ: (srm.B.o<L.srm.A.o)}
- args: [(srm.B.o<L.srm.B.i)]
  op: E_assign
  targ: (L.srm.B.o<L.srm.B.i)
- {op: E_del, targ: (srm.B.o<L.srm.B.i)}

edges:
  (BS.A1.i<prm.B.o): prc.tau
  (BS.A1.o<BS.A2.i): BS.r
  (BS.A1.o<BS.B1.i): BS.t
  (BS.A2.i<Y.itm.A.o): &id002 ['*', BS_Y.tau]
  (BS.A2.o<BS.A1.i): BS.r
  (BS.A2.o<BS.B2.i): BS.t
  (BS.B1.i<X.itm.A.o): &id001 ['*', BS_X.tau]
  (BS.B1.o<BS.A1.i): BS.t
  (BS.B1.o<BS.B2.i): -BS.r
  (BS.B2.i<srm.A.o): src.tau
  (BS.B2.o<BS.A2.i): BS.t
  (BS.B2.o<BS.B1.i): -BS.r
  (X.etm.A.i<X.itm.B.o): XARM.tau
  (X.etm.A.o.tp<X.etm.A.o): '1'
  (X.etm.A.o<X.etm.A.i): X.etm.r
  (X.etm.A.o<X.etm.A.o.exc): '1'
  (X.etm.A.o<X.etm.B.i): X.etm.t
  (X.etm.B.o<X.etm.A.i): X.etm.t
  (X.etm.B.o<X.etm.B.i): -X.etm.r
  (X.itm.A.i<BS.B1.o): *id001
  (X.itm.A.o<X.itm.A.i): X.itm.r
  (X.itm.A.o<X.itm.B.i): X.itm.t
  (X.itm.B.i<X.etm.A.o): XARM.tau
  (X.itm.B.o<X.itm.A.i): X.itm.t
  (X.itm.B.o<X.itm.B.i): -X.itm.r
  (Y.etm.A.i<Y.itm.B.o): YARM.tau
  (Y.etm.A.o.tp<Y.etm.A.o): '1'
  (Y.etm.A.o<Y.etm.A.i): Y.etm.r
  (Y.etm.A.o<Y.etm.A.o.exc): '1'
  (Y.etm.A.o<Y.etm.B.i): Y.etm.t
  (Y.etm.B.o<Y.etm.A.i): Y.etm.t
  (Y.etm.B.o<Y.etm.B.i): -Y.etm.r
  (Y.itm.A.i<BS.A2.o): *id002
  (Y.itm.A.o<Y.itm.A.i): Y.itm.r
  (Y.itm.A.o<Y.itm.B.i): Y.itm.t
  (Y.itm.B.i<Y.etm.A.o): YARM.tau
  (Y.itm.B.o<Y.itm.A.i): Y.itm.t
  (Y.itm.B.o<Y.itm.B.i): -Y.itm.r
  (prm.A.i<prm.A.i.exc): '1'
  (prm.A.o.tp<prm.A.o): '1'
  (prm.A.o<prm.A.i): prm.r
  (prm.A.o<prm.B.i): prm.t
  (prm.B.i<BS.A1.o): prc.tau
  (prm.B.o<prm.A.i): prm.t
  (prm.B.o<prm.B.i): -prm.r
  (srm.A.i<BS.B2.o): src.tau
  (srm.A.o<srm.A.i): srm.r
  (srm.A.o<srm.B.i): srm.t
  (srm.B.i<srm.B.i.exc): '1'
  (srm.B.o.tp<srm.B.o): '1'
  (srm.B.o<srm.A.i): srm.t
  (srm.B.o<srm.B.i): -srm.r
oplistE:
- args: [X.etm.A.i]
  op: E_CLGd
  targ: (U.X.etm.A.i<L.X.etm.A.i)
- args: [(X.etm.A.o<X.etm.A.i), (U.X.etm.A.i<L.X.etm.A.i), (X.etm.A.i<X.itm.B.o)]
  op: E_mul3
  targ: (X.etm.A.o<X.itm.B.o)
- args: [(U.X.etm.A.i<L.X.etm.A.i), (X.etm.A.i<X.itm.B.o)]
  op: E_mul2
  targ: (U.X.etm.A.i<X.itm.B.o)
- {op: E_del, targ: (X.etm.A.i<X.itm.B.o)}
- args: [(X.etm.B.o<X.etm.A.i)]
  op: E_assign
  targ: (X.etm.B.o<U.X.etm.A.i)
- {op: E_del, targ: (X.etm.B.o<X.etm.A.i)}
- {op: E_del, targ: (U.X.etm.A.i<L.X.etm.A.i)}
- args: [X.etm.A.o]
  op: E_CLGd
  targ: (U.X.etm.A.o<L.X.etm.A.o)
- args: [(X.itm.B.i<X.etm.A.o), (U.X.etm.A.o<L.X.etm.A.o), (X.etm.A.o<X.itm.B.o)]
  op: E_mul3
  targ: (X.itm.B.i<X.itm.B.o)
- args: [(X.itm.B.i<X.etm.A.o), (U.X.etm.A.o<L.X.etm.A.o)]
  op: E_mul2
  targ: (X.itm.B.i<L.X.etm.A.o)
- {op: E_del, targ: (X.itm.B.i<X.etm.A.o)}
- args: [(U.X.etm.A.o<L.X.etm.A.o), (X.etm.A.o<X.itm.B.o)]
  op: E_mul2
  targ: (U.X.etm.A.o<X.itm.B.o)
- {op: E_del, targ: (X.etm.A.o<X.itm.B.o)}
- args: [(X.etm.A.o.tp<X.etm.A.o)]
  op: E_assign
  targ: (X.etm.A.o.tp<U.X.etm.A.o)
- {op: E_del, targ: (X.etm.A.o.tp<X.etm.A.o)}
- args: [(X.etm.A.o<X.etm.A.o.exc)]
  op: E_assign
  targ: (L.X.etm.A.o<X.etm.A.o.exc)
- {op: E_del, targ: (X.etm.A.o<X.etm.A.o.exc)}
- args: [(X.etm.A.o<X.etm.B.i)]
  op: E_assign
  targ: (L.X.etm.A.o<X.etm.B.i)
- {op: E_del, targ: (X.etm.A.o<X.etm.B.i)}
- args: [X.itm.B.i]
  op: E_CLGd
  targ: (U.X.itm.B.i<L.X.itm.B.i)
- args: [(X.itm.B.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i), (X.itm.B.i<X.itm.B.o)]
  op: E_mul3
  targ: (X.itm.B.o<X.itm.B.o)
- args: [(X.itm.A.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i), (X.itm.B.i<X.itm.B.o)]
  op: E_mul3
  targ: (X.itm.A.o<X.itm.B.o)
- args: [(X.itm.B.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i)]
  op: E_mul2
  targ: (X.itm.B.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.B.o<X.itm.B.i)}
- args: [(X.itm.A.o<X.itm.B.i), (U.X.itm.B.i<L.X.itm.B.i)]
  op: E_mul2
  targ: (X.itm.A.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.A.o<X.itm.B.i)}
- args: [(X.itm.B.i<L.X.etm.A.o)]
  op: E_assign
  targ: (L.X.itm.B.i<L.X.etm.A.o)
- {op: E_del, targ: (X.itm.B.i<L.X.etm.A.o)}
- {op: E_del, targ: (U.X.itm.B.i<L.X.itm.B.i)}
- args: [(X.itm.B.o<X.itm.B.o)]
  op: E_CLG
  targ: (U.X.itm.B.o<L.X.itm.B.o)
- args: [(X.itm.A.o<X.itm.B.o), (U.X.itm.B.o<L.X.itm.B.o), (X.itm.B.o<X.itm.A.i),
    (X.itm.A.o<X.itm.A.i)]
  op: E_mul3add
  targ: (X.itm.A.o<X.itm.A.i)
- args: [(X.itm.A.o<X.itm.B.o), (U.X.itm.B.o<L.X.itm.B.o)]
  op: E_mul2
  targ: (X.itm.A.o<L.X.itm.B.o)
- {op: E_del, targ: (X.itm.A.o<X.itm.B.o)}
- args: [(U.X.itm.B.o<L.X.itm.B.o), (X.itm.B.o<X.itm.A.i)]
  op: E_mul2
  targ: (U.X.itm.B.o<X.itm.A.i)
- {op: E_del, targ: (X.itm.B.o<X.itm.A.i)}
- args: [(U.X.etm.A.o<X.itm.B.o)]
  op: E_assign
  targ: (U.X.etm.A.o<U.X.itm.B.o)
- {op: E_del, targ: (U.X.etm.A.o<X.itm.B.o)}
- args: [(U.X.etm.A.i<X.itm.B.o)]
  op: E_assign
  targ: (U.X.etm.A.i<U.X.itm.B.o)
- {op: E_del, targ: (U.X.etm.A.i<X.itm.B.o)}
- args: [(X.itm.B.o<L.X.itm.B.i)]
  op: E_assign
  targ: (L.X.itm.B.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.B.o<L.X.itm.B.i)}
- args: [Y.etm.A.i]
  op: E_CLGd
  targ: (U.Y.etm.A.i<L.Y.etm.A.i)
- args: [(Y.etm.A.o<Y.etm.A.i), (U.Y.etm.A.i<L.Y.etm.A.i), (Y.etm.A.i<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.etm.A.o<Y.itm.B.o)
- args: [(U.Y.etm.A.i<L.Y.etm.A.i), (Y.etm.A.i<Y.itm.B.o)]
  op: E_mul2
  targ: (U.Y.etm.A.i<Y.itm.B.o)
- {op: E_del, targ: (Y.etm.A.i<Y.itm.B.o)}
- args: [(Y.etm.B.o<Y.etm.A.i)]
  op: E_assign
  targ: (Y.etm.B.o<U.Y.etm.A.i)
- {op: E_del, targ: (Y.etm.B.o<Y.etm.A.i)}
- {op: E_del, targ: (U.Y.etm.A.i<L.Y.etm.A.i)}
- args: [Y.etm.A.o]
  op: E_CLGd
  targ: (U.Y.etm.A.o<L.Y.etm.A.o)
- args: [(Y.itm.B.i<Y.etm.A.o), (U.Y.etm.A.o<L.Y.etm.A.o), (Y.etm.A.o<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.itm.B.i<Y.itm.B.o)
- args: [(Y.itm.B.i<Y.etm.A.o), (U.Y.etm.A.o<L.Y.etm.A.o)]
  op: E_mul2
  targ: (Y.itm.B.i<L.Y.etm.A.o)
- {op: E_del, targ: (Y.itm.B.i<Y.etm.A.o)}
- args: [(U.Y.etm.A.o<L.Y.etm.A.o), (Y.etm.A.o<Y.itm.B.o)]
  op: E_mul2
  targ: (U.Y.etm.A.o<Y.itm.B.o)
- {op: E_del, targ: (Y.etm.A.o<Y.itm.B.o)}
- args: [(Y.etm.A.o.tp<Y.etm.A.o)]
  op: E_assign
  targ: (Y.etm.A.o.tp<U.Y.etm.A.o)
- {op: E_del, targ: (Y.etm.A.o.tp<Y.etm.A.o)}
- args: [(Y.etm.A.o<Y.etm.A.o.exc)]
  op: E_assign
  targ: (L.Y.etm.A.o<Y.etm.A.o.exc)
- {op: E_del, targ: (Y.etm.A.o<Y.etm.A.o.exc)}
- args: [(Y.etm.A.o<Y.etm.B.i)]
  op: E_assign
  targ: (L.Y.etm.A.o<Y.etm.B.i)
- {op: E_del, targ: (Y.etm.A.o<Y.etm.B.i)}
- args: [Y.itm.B.i]
  op: E_CLGd
  targ: (U.Y.itm.B.i<L.Y.itm.B.i)
- args: [(Y.itm.A.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i), (Y.itm.B.i<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.itm.A.o<Y.itm.B.o)
- args: [(Y.itm.B.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i), (Y.itm.B.i<Y.itm.B.o)]
  op: E_mul3
  targ: (Y.itm.B.o<Y.itm.B.o)
- args: [(Y.itm.A.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i)]
  op: E_mul2
  targ: (Y.itm.A.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.A.o<Y.itm.B.i)}
- args: [(Y.itm.B.o<Y.itm.B.i), (U.Y.itm.B.i<L.Y.itm.B.i)]
  op: E_mul2
  targ: (Y.itm.B.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.B.o<Y.itm.B.i)}
- args: [(Y.itm.B.i<L.Y.etm.A.o)]
  op: E_assign
  targ: (L.Y.itm.B.i<L.Y.etm.A.o)
- {op: E_del, targ: (Y.itm.B.i<L.Y.etm.A.o)}
- {op: E_del, targ: (U.Y.itm.B.i<L.Y.itm.B.i)}
- args: [(Y.itm.B.o<Y.itm.B.o)]
  op: E_CLG
  targ: (U.Y.itm.B.o<L.Y.itm.B.o)
- args: [(Y.itm.A.o<Y.itm.B.o), (U.Y.itm.B.o<L.Y.itm.B.o), (Y.itm.B.o<Y.itm.A.i),
    (Y.itm.A.o<Y.itm.A.i)]
  op: E_mul3add
  targ: (Y.itm.A.o<Y.itm.A.i)
- args: [(Y.itm.A.o<Y.itm.B.o), (U.Y.itm.B.o<L.Y.itm.B.o)]
  op: E_mul2
  targ: (Y.itm.A.o<L.Y.itm.B.o)
- {op: E_del, targ: (Y.itm.A.o<Y.itm.B.o)}
- args: [(U.Y.itm.B.o<L.Y.itm.B.o), (Y.itm.B.o<Y.itm.A.i)]
  op: E_mul2
  targ: (U.Y.itm.B.o<Y.itm.A.i)
- {op: E_del, targ: (Y.itm.B.o<Y.itm.A.i)}
- args: [(U.Y.etm.A.o<Y.itm.B.o)]
  op: E_assign
  targ: (U.Y.etm.A.o<U.Y.itm.B.o)
- {op: E_del, targ: (U.Y.etm.A.o<Y.itm.B.o)}
- args: [(U.Y.etm.A.i<Y.itm.B.o)]
  op: E_assign
  targ: (U.Y.etm.A.i<U.Y.itm.B.o)
- {op: E_del, targ: (U.Y.etm.A.i<Y.itm.B.o)}
- args: [(Y.itm.B.o<L.Y.itm.B.i)]
  op: E_assign
  targ: (L.Y.itm.B.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.B.o<L.Y.itm.B.i)}
- args: [X.itm.A.i]
  op: E_CLGd
  targ: (U.X.itm.A.i<L.X.itm.A.i)
- args: [(X.itm.A.o<X.itm.A.i), (U.X.itm.A.i<L.X.itm.A.i), (X.itm.A.i<BS.B1.o)]
  op: E_mul3
  targ: (X.itm.A.o<BS.B1.o)
- args: [(U.X.itm.A.i<L.X.itm.A.i), (X.itm.A.i<BS.B1.o)]
  op: E_mul2
  targ: (U.X.itm.A.i<BS.B1.o)
- {op: E_del, targ: (X.itm.A.i<BS.B1.o)}
- args: [(U.X.itm.B.o<X.itm.A.i)]
  op: E_assign
  targ: (U.X.itm.B.o<U.X.itm.A.i)
- {op: E_del, targ: (U.X.itm.B.o<X.itm.A.i)}
- {op: E_del, targ: (U.X.itm.A.i<L.X.itm.A.i)}
- args: [X.itm.A.o]
  op: E_CLGd
  targ: (U.X.itm.A.o<L.X.itm.A.o)
- args: [(BS.B1.i<X.itm.A.o), (U.X.itm.A.o<L.X.itm.A.o), (X.itm.A.o<BS.B1.o)]
  op: E_mul3
  targ: (BS.B1.i<BS.B1.o)
- args: [(BS.B1.i<X.itm.A.o), (U.X.itm.A.o<L.X.itm.A.o)]
  op: E_mul2
  targ: (BS.B1.i<L.X.itm.A.o)
- {op: E_del, targ: (BS.B1.i<X.itm.A.o)}
- args: [(X.itm.A.o<L.X.itm.B.o)]
  op: E_assign
  targ: (L.X.itm.A.o<L.X.itm.B.o)
- {op: E_del, targ: (X.itm.A.o<L.X.itm.B.o)}
- args: [(X.itm.A.o<L.X.itm.B.i)]
  op: E_assign
  targ: (L.X.itm.A.o<L.X.itm.B.i)
- {op: E_del, targ: (X.itm.A.o<L.X.itm.B.i)}
- {op: E_del, targ: (U.X.itm.A.o<L.X.itm.A.o)}
- args: [Y.itm.A.i]
  op: E_CLGd
  targ: (U.Y.itm.A.i<L.Y.itm.A.i)
- args: [(Y.itm.A.o<Y.itm.A.i), (U.Y.itm.A.i<L.Y.itm.A.i), (Y.itm.A.i<BS.A2.o)]
  op: E_mul3
  targ: (Y.itm.A.o<BS.A2.o)
- args: [(U.Y.itm.A.i<L.Y.itm.A.i), (Y.itm.A.i<BS.A2.o)]
  op: E_mul2
  targ: (U.Y.itm.A.i<BS.A2.o)
- {op: E_del, targ: (Y.itm.A.i<BS.A2.o)}
- args: [(U.Y.itm.B.o<Y.itm.A.i)]
  op: E_assign
  targ: (U.Y.itm.B.o<U.Y.itm.A.i)
- {op: E_del, targ: (U.Y.itm.B.o<Y.itm.A.i)}
- {op: E_del, targ: (U.Y.itm.A.i<L.Y.itm.A.i)}
- args: [Y.itm.A.o]
  op: E_CLGd
  targ: (U.Y.itm.A.o<L.Y.itm.A.o)
- args: [(BS.A2.i<Y.itm.A.o), (U.Y.itm.A.o<L.Y.itm.A.o), (Y.itm.A.o<BS.A2.o)]
  op: E_mul3
  targ: (BS.A2.i<BS.A2.o)
- args: [(BS.A2.i<Y.itm.A.o), (U.Y.itm.A.o<L.Y.itm.A.o)]
  op: E_mul2
  targ: (BS.A2.i<L.Y.itm.A.o)
- {op: E_del, targ: (BS.A2.i<Y.itm.A.o)}
- args: [(Y.itm.A.o<L.Y.itm.B.o)]
  op: E_assign
  targ: (L.Y.itm.A.o<L.Y.itm.B.o)
- {op: E_del, targ: (Y.itm.A.o<L.Y.itm.B.o)}
- args: [(Y.itm.A.o<L.Y.itm.B.i)]
  op: E_assign
  targ: (L.Y.itm.A.o<L.Y.itm.B.i)
- {op: E_del, targ: (Y.itm.A.o<L.Y.itm.B.i)}
- {op: E_del, targ: (U.Y.itm.A.o<L.Y.itm.A.o)}
- args: [prm.A.i]
  op: E_CLGd
  targ: (U.prm.A.i<L.prm.A.i)
- args: [(prm.A.o<prm.A.i), (U.prm.A.i<L.prm.A.i)]
  op: E_mul2
  targ: (prm.A.o<L.prm.A.i)
- {op: E_del, targ: (prm.A.o<prm.A.i)}
- args: [(prm.B.o<prm.A.i), (U.prm.A.i<L.prm.A.i)]
  op: E_mul2
  targ: (prm.B.o<L.prm.A.i)
- {op: E_del, targ: (prm.B.o<prm.A.i)}
- args: [(prm.A.i<prm.A.i.exc)]
  op: E_assign
  targ: (L.prm.A.i<prm.A.i.exc)
- {op: E_del, targ: (prm.A.i<prm.A.i.exc)}
- {op: E_del, targ: (U.prm.A.i<L.prm.A.i)}
- args: [prm.A.o]
  op: E_CLGd
  targ: (U.prm.A.o<L.prm.A.o)
- args: [(U.prm.A.o<L.prm.A.o), (prm.A.o<prm.B.i)]
  op: E_mul2
  targ: (U.prm.A.o<prm.B.i)
- {op: E_del, targ: (prm.A.o<prm.B.i)}
- args: [(prm.A.o.tp<prm.A.o)]
  op: E_assign
  targ: (prm.A.o.tp<U.prm.A.o)
- {op: E_del, targ: (prm.A.o.tp<prm.A.o)}
- args: [(prm.A.o<L.prm.A.i)]
  op: E_assign
  targ: (L.prm.A.o<L.prm.A.i)
- {op: E_del, targ: (prm.A.o<L.prm.A.i)}
- args: [prm.B.i]
  op: E_CLGd
  targ: (U.prm.B.i<L.prm.B.i)
- args: [(prm.B.o<prm.B.i), (U.prm.B.i<L.prm.B.i), (prm.B.i<BS.A1.o)]
  op: E_mul3
  targ: (prm.B.o<BS.A1.o)
- args: [(U.prm.B.i<L.prm.B.i), (prm.B.i<BS.A1.o)]
  op: E_mul2
  targ: (U.prm.B.i<BS.A1.o)
- {op: E_del, targ: (prm.B.i<BS.A1.o)}
- args: [(U.prm.A.o<prm.B.i)]
  op: E_assign
  targ: (U.prm.A.o<U.prm.B.i)
- {op: E_del, targ: (U.prm.A.o<prm.B.i)}
- {op: E_del, targ: (U.prm.B.i<L.prm.B.i)}
- args: [prm.B.o]
  op: E_CLGd
  targ: (U.prm.B.o<L.prm.B.o)
- args: [(BS.A1.i<prm.B.o), (U.prm.B.o<L.prm.B.o), (prm.B.o<BS.A1.o)]
  op: E_mul3
  targ: (BS.A1.i<BS.A1.o)
- args: [(BS.A1.i<prm.B.o), (U.prm.B.o<L.prm.B.o)]
  op: E_mul2
  targ: (BS.A1.i<L.prm.B.o)
- {op: E_del, targ: (BS.A1.i<prm.B.o)}
- args: [(prm.B.o<L.prm.A.i)]
  op: E_assign
  targ: (L.prm.B.o<L.prm.A.i)
- {op: E_del, targ: (prm.B.o<L.prm.A.i)}
- {op: E_del, targ: (U.prm.B.o<L.prm.B.o)}
- args: [BS.A1.i]
  op: E_CLGd
  targ: (U.BS.A1.i<L.BS.A1.i)
- args: [(BS.B1.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i), (BS.A1.i<BS.A1.o)]
  op: E_mul3
  targ: (BS.B1.o<BS.A1.o)
- args: [(BS.A2.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i), (BS.A1.i<BS.A1.o)]
  op: E_mul3
  targ: (BS.A2.o<BS.A1.o)
- args: [(BS.B1.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.A1.i)
- {op: E_del, targ: (BS.B1.o<BS.A1.i)}
- args: [(BS.A2.o<BS.A1.i), (U.BS.A1.i<L.BS.A1.i)]
  op: E_mul2
  targ: (BS.A2.o<L.BS.A1.i)
- {op: E_del, targ: (BS.A2.o<BS.A1.i)}
- args: [(BS.A1.i<L.prm.B.o)]
  op: E_assign
  targ: (L.BS.A1.i<L.prm.B.o)
- {op: E_del, targ: (BS.A1.i<L.prm.B.o)}
- {op: E_del, targ: (U.BS.A1.i<L.BS.A1.i)}
- args: [BS.A1.o]
  op: E_CLGd
  targ: (U.BS.A1.o<L.BS.A1.o)
- args: [(BS.B1.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.B1.i)]
  op: E_mul3
  targ: (BS.B1.o<BS.B1.i)
- args: [(BS.B1.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.A2.i)]
  op: E_mul3
  targ: (BS.B1.o<BS.A2.i)
- args: [(BS.A2.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.B1.i)]
  op: E_mul3
  targ: (BS.A2.o<BS.B1.i)
- args: [(BS.A2.o<BS.A1.o), (U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.A2.i)]
  op: E_mul3
  targ: (BS.A2.o<BS.A2.i)
- args: [(U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.B1.i)]
  op: E_mul2
  targ: (U.BS.A1.o<BS.B1.i)
- {op: E_del, targ: (BS.A1.o<BS.B1.i)}
- args: [(U.BS.A1.o<L.BS.A1.o), (BS.A1.o<BS.A2.i)]
  op: E_mul2
  targ: (U.BS.A1.o<BS.A2.i)
- {op: E_del, targ: (BS.A1.o<BS.A2.i)}
- args: [(U.prm.B.i<BS.A1.o)]
  op: E_assign
  targ: (U.prm.B.i<U.BS.A1.o)
- {op: E_del, targ: (U.prm.B.i<BS.A1.o)}
- {op: E_del, targ: (U.BS.A1.o<L.BS.A1.o)}
- args: [BS.A2.i]
  op: E_CLGd
  targ: (U.BS.A2.i<L.BS.A2.i)
- args: [(BS.B1.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul3
  targ: (BS.B1.o<BS.A2.o)
- args: [(BS.B2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul3
  targ: (BS.B2.o<BS.A2.o)
- args: [(BS.A2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul3
  targ: (BS.A2.o<BS.A2.o)
- args: [(BS.B1.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B1.o<BS.A2.i)}
- args: [(BS.B2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B2.o<BS.A2.i)}
- args: [(BS.A2.o<BS.A2.i), (U.BS.A2.i<L.BS.A2.i)]
  op: E_mul2
  targ: (BS.A2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.A2.o<BS.A2.i)}
- args: [(U.BS.A2.i<L.BS.A2.i), (BS.A2.i<BS.A2.o)]
  op: E_mul2
  targ: (U.BS.A2.i<BS.A2.o)
- {op: E_del, targ: (BS.A2.i<BS.A2.o)}
- args: [(U.BS.A1.o<BS.A2.i)]
  op: E_assign
  targ: (U.BS.A1.o<U.BS.A2.i)
- {op: E_del, targ: (U.BS.A1.o<BS.A2.i)}
- args: [(BS.A2.i<L.Y.itm.A.o)]
  op: E_assign
  targ: (L.BS.A2.i<L.Y.itm.A.o)
- {op: E_del, targ: (BS.A2.i<L.Y.itm.A.o)}
- args: [(BS.A2.o<BS.A2.o)]
  op: E_CLG
  targ: (U.BS.A2.o<L.BS.A2.o)
- args: [(BS.B2.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B2.i)]
  op: E_mul3
  targ: (BS.B2.o<BS.B2.i)
- args: [(BS.B2.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B1.i), (BS.B2.o<BS.B1.i)]
  op: E_mul3add
  targ: (BS.B2.o<BS.B1.i)
- args: [(BS.B1.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B2.i), (BS.B1.o<BS.B2.i)]
  op: E_mul3add
  targ: (BS.B1.o<BS.B2.i)
- args: [(BS.B1.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B1.i), (BS.B1.o<BS.B1.i)]
  op: E_mul3add
  targ: (BS.B1.o<BS.B1.i)
- args: [(BS.B2.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B2.o<BS.A2.o)}
- args: [(BS.B1.o<BS.A2.o), (U.BS.A2.o<L.BS.A2.o)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B1.o<BS.A2.o)}
- args: [(U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B2.i)]
  op: E_mul2
  targ: (U.BS.A2.o<BS.B2.i)
- {op: E_del, targ: (BS.A2.o<BS.B2.i)}
- args: [(U.BS.A2.o<L.BS.A2.o), (BS.A2.o<BS.B1.i)]
  op: E_mul2
  targ: (U.BS.A2.o<BS.B1.i)
- {op: E_del, targ: (BS.A2.o<BS.B1.i)}
- args: [(U.Y.itm.A.i<BS.A2.o)]
  op: E_assign
  targ: (U.Y.itm.A.i<U.BS.A2.o)
- {op: E_del, targ: (U.Y.itm.A.i<BS.A2.o)}
- args: [(U.BS.A2.i<BS.A2.o)]
  op: E_assign
  targ: (U.BS.A2.i<U.BS.A2.o)
- {op: E_del, targ: (U.BS.A2.i<BS.A2.o)}
- args: [(BS.A2.o<L.BS.A2.i)]
  op: E_assign
  targ: (L.BS.A2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.A2.o<L.BS.A2.i)}
- args: [(BS.A2.o<L.BS.A1.i)]
  op: E_assign
  targ: (L.BS.A2.o<L.BS.A1.i)
- {op: E_del, targ: (BS.A2.o<L.BS.A1.i)}
- args: [BS.B1.i]
  op: E_CLGd
  targ: (U.BS.B1.i<L.BS.B1.i)
- args: [(BS.B1.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i), (BS.B1.i<BS.B1.o)]
  op: E_mul3
  targ: (BS.B1.o<BS.B1.o)
- args: [(BS.B2.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i), (BS.B1.i<BS.B1.o)]
  op: E_mul3
  targ: (BS.B2.o<BS.B1.o)
- args: [(BS.B1.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i)]
  op: E_mul2
  targ: (BS.B1.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B1.o<BS.B1.i)}
- args: [(BS.B2.o<BS.B1.i), (U.BS.B1.i<L.BS.B1.i)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B2.o<BS.B1.i)}
- args: [(U.BS.B1.i<L.BS.B1.i), (BS.B1.i<BS.B1.o)]
  op: E_mul2
  targ: (U.BS.B1.i<BS.B1.o)
- {op: E_del, targ: (BS.B1.i<BS.B1.o)}
- args: [(U.BS.A1.o<BS.B1.i)]
  op: E_assign
  targ: (U.BS.A1.o<U.BS.B1.i)
- {op: E_del, targ: (U.BS.A1.o<BS.B1.i)}
- args: [(U.BS.A2.o<BS.B1.i)]
  op: E_assign
  targ: (U.BS.A2.o<U.BS.B1.i)
- {op: E_del, targ: (U.BS.A2.o<BS.B1.i)}
- args: [(BS.B1.i<L.X.itm.A.o)]
  op: E_assign
  targ: (L.BS.B1.i<L.X.itm.A.o)
- {op: E_del, targ: (BS.B1.i<L.X.itm.A.o)}
- args: [(BS.B1.o<BS.B1.o)]
  op: E_CLG
  targ: (U.BS.B1.o<L.BS.B1.o)
- args: [(BS.B2.o<BS.B1.o), (U.BS.B1.o<L.BS.B1.o), (BS.B1.o<BS.B2.i), (BS.B2.o<BS.B2.i)]
  op: E_mul3add
  targ: (BS.B2.o<BS.B2.i)
- args: [(BS.B2.o<BS.B1.o), (U.BS.B1.o<L.BS.B1.o)]
  op: E_mul2
  targ: (BS.B2.o<L.BS.B1.o)
- {op: E_del, targ: (BS.B2.o<BS.B1.o)}
- args: [(U.BS.B1.o<L.BS.B1.o), (BS.B1.o<BS.B2.i)]
  op: E_mul2
  targ: (U.BS.B1.o<BS.B2.i)
- {op: E_del, targ: (BS.B1.o<BS.B2.i)}
- args: [(U.BS.B1.i<BS.B1.o)]
  op: E_assign
  targ: (U.BS.B1.i<U.BS.B1.o)
- {op: E_del, targ: (U.BS.B1.i<BS.B1.o)}
- args: [(U.X.itm.A.i<BS.B1.o)]
  op: E_assign
  targ: (U.X.itm.A.i<U.BS.B1.o)
- {op: E_del, targ: (U.X.itm.A.i<BS.B1.o)}
- args: [(BS.B1.o<L.BS.A2.i)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B1.o<L.BS.A2.i)}
- args: [(BS.B1.o<L.BS.A1.i)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.A1.i)
- {op: E_del, targ: (BS.B1.o<L.BS.A1.i)}
- args: [(BS.B1.o<L.BS.B1.i)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B1.o<L.BS.B1.i)}
- args: [(BS.B1.o<L.BS.A2.o)]
  op: E_assign
  targ: (L.BS.B1.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B1.o<L.BS.A2.o)}
- args: [BS.B2.i]
  op: E_CLGd
  targ: (U.BS.B2.i<L.BS.B2.i)
- args: [(BS.B2.o<BS.B2.i), (U.BS.B2.i<L.BS.B2.i), (BS.B2.i<srm.A.o)]
  op: E_mul3
  targ: (BS.B2.o<srm.A.o)
- args: [(U.BS.B2.i<L.BS.B2.i), (BS.B2.i<srm.A.o)]
  op: E_mul2
  targ: (U.BS.B2.i<srm.A.o)
- {op: E_del, targ: (BS.B2.i<srm.A.o)}
- args: [(U.BS.B1.o<BS.B2.i)]
  op: E_assign
  targ: (U.BS.B1.o<U.BS.B2.i)
- {op: E_del, targ: (U.BS.B1.o<BS.B2.i)}
- args: [(U.BS.A2.o<BS.B2.i)]
  op: E_assign
  targ: (U.BS.A2.o<U.BS.B2.i)
- {op: E_del, targ: (U.BS.A2.o<BS.B2.i)}
- {op: E_del, targ: (U.BS.B2.i<L.BS.B2.i)}
- args: [BS.B2.o]
  op: E_CLGd
  targ: (U.BS.B2.o<L.BS.B2.o)
- args: [(srm.A.i<BS.B2.o), (U.BS.B2.o<L.BS.B2.o), (BS.B2.o<srm.A.o)]
  op: E_mul3
  targ: (srm.A.i<srm.A.o)
- args: [(srm.A.i<BS.B2.o), (U.BS.B2.o<L.BS.B2.o)]
  op: E_mul2
  targ: (srm.A.i<L.BS.B2.o)
- {op: E_del, targ: (srm.A.i<BS.B2.o)}
- args: [(BS.B2.o<L.BS.A2.i)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.A2.i)
- {op: E_del, targ: (BS.B2.o<L.BS.A2.i)}
- args: [(BS.B2.o<L.BS.B1.o)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.B1.o)
- {op: E_del, targ: (BS.B2.o<L.BS.B1.o)}
- args: [(BS.B2.o<L.BS.B1.i)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.B1.i)
- {op: E_del, targ: (BS.B2.o<L.BS.B1.i)}
- args: [(BS.B2.o<L.BS.A2.o)]
  op: E_assign
  targ: (L.BS.B2.o<L.BS.A2.o)
- {op: E_del, targ: (BS.B2.o<L.BS.A2.o)}
- {op: E_del, targ: (U.BS.B2.o<L.BS.B2.o)}
- args: [srm.A.i]
  op: E_CLGd
  targ: (U.srm.A.i<L.srm.A.i)
- args: [(srm.A.o<srm.A.i), (U.srm.A.i<L.srm.A.i), (srm.A.i<srm.A.o)]
  op: E_mul3
  targ: (srm.A.o<srm.A.o)
- args: [(srm.B.o<srm.A.i), (U.srm.A.i<L.srm.A.i), (srm.A.i<srm.A.o)]
  op: E_mul3
  targ: (srm.B.o<srm.A.o)
- args: [(srm.A.o<srm.A.i), (U.srm.A.i<L.srm.A.i)]
  op: E_mul2
  targ: (srm.A.o<L.srm.A.i)
- {op: E_del, targ: (srm.A.o<srm.A.i)}
- args: [(srm.B.o<srm.A.i), (U.srm.A.i<L.srm.A.i)]
  op: E_mul2
  targ: (srm.B.o<L.srm.A.i)
- {op: E_del, targ: (srm.B.o<srm.A.i)}
- args: [(srm.A.i<L.BS.B2.o)]
  op: E_assign
  targ: (L.srm.A.i<L.BS.B2.o)
- {op: E_del, targ: (srm.A.i<L.BS.B2.o)}
- {op: E_del, targ: (U.srm.A.i<L.srm.A.i)}
- args: [(srm.A.o<srm.A.o)]
  op: E_CLG
  targ: (U.srm.A.o<L.srm.A.o)
- args: [(srm.B.o<srm.A.o), (U.srm.A.o<L.srm.A.o), (srm.A.o<srm.B.i), (srm.B.o<srm.B.i)]
  op: E_mul3add
  targ: (srm.B.o<srm.B.i)
- args: [(srm.B.o<srm.A.o), (U.srm.A.o<L.srm.A.o)]
  op: E_mul2
  targ: (srm.B.o<L.srm.A.o)
- {op: E_del, targ: (srm.B.o<srm.A.o)}
- args: [(U.srm.A.o<L.srm.A.o), (srm.A.o<srm.B.i)]
  op: E_mul2
  targ: (U.srm.A.o<srm.B.i)
- {op: E_del, targ: (srm.A.o<srm.B.i)}
- args: [(U.BS.B2.i<srm.A.o)]
  op: E_assign
  targ: (U.BS.B2.i<U.srm.A.o)
- {op: E_del, targ: (U.BS.B2.i<srm.A.o)}
- args: [(srm.A.o<L.srm.A.i)]
  op: E_assign
  targ: (L.srm.A.o<L.srm.A.i)
- {op: E_del, targ: (srm.A.o<L.srm.A.i)}
- args: [srm.B.i]
  op: E_CLGd
  targ: (U.srm.B.i<L.srm.B.i)
- args: [(srm.B.o<srm.B.i), (U.srm.B.i<L.srm.B.i)]
  op: E_mul2
  targ: (srm.B.o<L.srm.B.i)
- {op: E_del, targ: (srm.B.o<srm.B.i)}
- args: [(U.srm.A.o<srm.B.i)]
  op: E_assign
  targ: (U.srm.A.o<U.srm.B.i)
- {op: E_del, targ: (U.srm.A.o<srm.B.i)}
- args: [(srm.B.i<srm.B.i.exc)]
  op: E_assign
  targ: (L.srm.B.i<srm.B.i.exc)
- {op: E_del, targ: (srm.B.i<srm.B.i.exc)}
- args: [srm.B.o]
  op: E_CLGd
  targ: (U.srm.B.o<L.srm.B.o)
- args: [(srm.B.o.tp<srm.B.o)]
  op: E_assign
  targ: (srm.B.o.tp<U.srm.B.o)
- {op: E_del, targ: (srm.B.o.tp<srm.B.o)}
- args: [(srm.B.o<L.srm.A.i)]
  op: E_assign
  targ: (L.srm.B.o<L.srm.A.i)
- {op: E_del, targ: (srm.B.o<L.srm.A.i)}
- args: [(srm.B.o<L.srm.A.o)]
  op: E_assign
  targ: (L.srm.B.o<L.srm.A.o)
- {op: E_del, targ: (srm.B.o<L.srm.A.o)}
- args: [(srm.B.o<L.srm.B.i)]
  op: E_assign
  targ: (L.srm.B.o<L.srm.B.i)
- {op: E_del, targ: (srm.B.o<L.srm.B.i)}
row2col:
  L.BS.A1.i: [L.prm.B.o]
  L.BS.A2.i: [L.Y.itm.A.o]
  L.BS.A2.o: [L.BS.A2.i, L.BS.A1.i]
  L.BS.B1.i: [L.X.itm.A.o]
  L.BS.B1.o: [L.BS.A2.i, L.BS.A1.i, L.BS.B1.i, L.BS.A2.o]
  L.BS.B2.o: [L.BS.A2.i, L.BS.A2.o, L.BS.B1.i, L.BS.B1.o]
  L.X.etm.A.o: [X.etm.A.o.exc, X.etm.B.i]
  L.X.itm.A.o: [L.X.itm.B.o, L.X.itm.B.i]
  L.X.itm.B.i: [L.X.etm.A.o]
  L.X.itm.B.o: [L.X.itm.B.i]
  L.Y.etm.A.o: [Y.etm.A.o.exc, Y.etm.B.i]
  L.Y.itm.A.o: [L.Y.itm.B.o, L.Y.itm.B.i]
  L.Y.itm.B.i: [L.Y.etm.A.o]
  L.Y.itm.B.o: [L.Y.itm.B.i]
  L.prm.A.i: [prm.A.i.exc]
  L.prm.A.o: [L.prm.A.i]
  L.prm.B.o: [L.prm.A.i]
  L.srm.A.i: [L.BS.B2.o]
  L.srm.A.o: [L.srm.A.i]
  L.srm.B.i: [srm.B.i.exc]
  L.srm.B.o: [L.srm.A.i, L.srm.A.o, L.srm.B.i]
  U.BS.A1.o: [U.BS.A2.i, U.BS.B1.i]
  U.BS.A2.i: [L.BS.A2.i, U.BS.A2.o]
  U.BS.A2.o: [U.BS.B1.i, L.BS.A2.o, U.BS.B2.i]
  U.BS.B1.i: [U.BS.B1.o, L.BS.B1.i]
  U.BS.B1.o: [U.BS.B2.i, L.BS.B1.o]
  U.BS.B2.i: [U.srm.A.o]
  U.X.etm.A.i: [U.X.itm.B.o]
  U.X.etm.A.o: [L.X.etm.A.o, U.X.itm.B.o]
  U.X.itm.A.i: [U.BS.B1.o]
  U.X.itm.B.o: [L.X.itm.B.o, U.X.itm.A.i]
  U.Y.etm.A.i: [U.Y.itm.B.o]
  U.Y.etm.A.o: [U.Y.itm.B.o, L.Y.etm.A.o]
  U.Y.itm.A.i: [U.BS.A2.o]
  U.Y.itm.B.o: [U.Y.itm.A.i, L.Y.itm.B.o]
  U.prm.A.o: [L.prm.A.o, U.prm.B.i]
  U.prm.B.i: [U.BS.A1.o]
  U.srm.A.o: [L.srm.A.o, U.srm.B.i]
  U.srm.B.i: [L.srm.B.i]
  U.srm.B.o: [L.srm.B.o]
  X.etm.A.o.tp: [U.X.etm.A.o]
  X.etm.B.o: [X.etm.B.i, U.X.etm.A.i]
  Y.etm.A.o.tp: [U.Y.etm.A.o]
  Y.etm.B.o: [Y.etm.B.i, U.Y.etm.A.i]
  prm.A.o.tp: [U.prm.A.o]
  srm.B.o.tp: [U.srm.B.o]

captured errors:
def T_SFLU_DRFPMI_serialize():
        sflu = SFLU.SFLU(
            DRFPMI_edges,
            **in_out,
        )
        sflu.reduce(*reduce_list)
        comp = sflu.computer()

        oplistE_yamlstr = comp.convert_oplistE2yamlstr()
        print(oplistE_yamlstr)

        assert(comp.convert_yamlstr2oplistE(oplistE_yamlstr) == comp.oplistE)

        comp_yamlstr = comp.convert_self2yamlstr()
        print(comp_yamlstr)

>       comp2 = SFLU.SFLUCompute.from_yaml(comp_yamlstr)
E       AttributeError: module 'wield.control.SFLU.SFLU' has no attribute 'SFLUCompute'. Did you mean: 'SFLUcompute'?

../../src/wield/control/SFLU/test/T_SFLU_DRFPMI.py:347: AttributeError
T_SFLU_DRFPMI_show_full()[source][github]

Show a graph reduction using networkx+tikz

code
docstring
"""
Show a graph reduction using networkx+tikz
"""
 1def T_SFLU_DRFPMI_show_full():
 2
 3    sflu = SFLU.SFLU(
 4        DRFPMI_edges,
 5        graph=True,
 6    )
 7    # match=False allows a reduced input/output set
 8    sflu.graph_nodes_pos(DRFPMI_locs, match=True)
 9    #sflu.graph_nodes_pos(DRFPMI_locs, match=True)
10    print('inputs: ', sflu.inputs)
11    print('outputs: ', sflu.outputs)
12    print('nodes: ', sflu.nodes)
13
14    #print('nodes')
15    #print(sflu.graph_nodes_repr())
16    G1 = sflu.G.copy()
17    sflu.graph_reduce_auto_pos(lX=-10, rX=+10, Y=0, dY=-2)
18    sflu.reduce(*reduce_list)
19    sflu.graph_reduce_auto_pos_io(lX=-30, rX=+30, Y=-5, dY=-5)
20    G2 = sflu.G.copy()
21
22    nx2tikz.dump_pdf(
23        [G1, G2],
24        fname = tjoin('testG.pdf'),
25        texname = tjoin('testG.tex'),
26        # preamble = preamble,
27        scale='10pt',
28    )
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.SFLU.test.T_SFLU_DRFPMI.T_SFLU_DRFPMI_show_full

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

T_SFLU_DRFPMI_show_full
output
inputs:  {'srm.B.i.exc', 'Y.etm.A.o.exc', 'Y.etm.B.i', 'X.etm.B.i', 'X.etm.A.o.exc', 'prm.A.i.exc'}
outputs:  {'Y.etm.B.o', 'X.etm.B.o', 'prm.A.o.tp', 'Y.etm.A.o.tp', 'srm.B.o.tp', 'X.etm.A.o.tp'}
nodes:  {'srm.A.i', 'BS.B2.o', 'srm.B.o', 'X.etm.A.o', 'prm.A.i', 'BS.A2.o', 'X.itm.A.o', 'BS.B1.i', 'X.itm.A.i', 'BS.A1.i', 'srm.A.o', 'prm.B.i', 'Y.etm.A.i', 'BS.A1.o', 'X.etm.A.i', 'Y.itm.A.i', 'prm.B.o', 'Y.itm.B.o', 'Y.itm.B.i', 'BS.A2.i', 'BS.B2.i', 'prm.A.o', 'BS.B1.o', 'X.itm.B.i', 'Y.etm.A.o', 'Y.itm.A.o', 'srm.B.i', 'X.itm.B.o'}
captured errors:
def T_SFLU_DRFPMI_show_full():
        """
        Show a graph reduction using networkx+tikz
        """
        sflu = SFLU.SFLU(
            DRFPMI_edges,
            graph=True,
        )
        # match=False allows a reduced input/output set
        sflu.graph_nodes_pos(DRFPMI_locs, match=True)
        #sflu.graph_nodes_pos(DRFPMI_locs, match=True)
        print('inputs: ', sflu.inputs)
        print('outputs: ', sflu.outputs)
        print('nodes: ', sflu.nodes)

        #print('nodes')
        #print(sflu.graph_nodes_repr())
        G1 = sflu.G.copy()
        sflu.graph_reduce_auto_pos(lX=-10, rX=+10, Y=0, dY=-2)
        sflu.reduce(*reduce_list)
        sflu.graph_reduce_auto_pos_io(lX=-30, rX=+30, Y=-5, dY=-5)
        G2 = sflu.G.copy()

>       nx2tikz.dump_pdf(
            [G1, G2],
            fname = tjoin('testG.pdf'),
            texname = tjoin('testG.tex'),
            # preamble = preamble,
            scale='10pt',
        )

../../src/wield/control/SFLU/test/T_SFLU_DRFPMI.py:232: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../src/wield/control/SFLU/nx2tikz.py:230: in dump_pdf
    subprocess.run(opt, check=True, capture_output=True)
/opt/conda/lib/python3.12/subprocess.py:548: in run
    with Popen(*popenargs, **kwargs) as process:
/opt/conda/lib/python3.12/subprocess.py:1026: in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Popen: returncode: 255 args: ['pdflatex', '-interaction=batchmode', '-outpu...>
args = ['pdflatex', '-interaction=batchmode', '-output-directory=/builds/wield-control/docs/maketests/test_results/T_SFLU_DRF...l/tmp_pf00kyj', '/builds/wield-control/docs/maketests/test_results/T_SFLU_DRFPMI.py/T_SFLU_DRFPMI_show_full/testG.tex']
executable = b'pdflatex', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False
p2cread = -1, p2cwrite = -1, c2pread = 5, c2pwrite = 6, errread = 7
errwrite = 8, restore_signals = True, gid = None, gids = None, uid = None
umask = -1, start_new_session = False, process_group = -1

    def _execute_child(self, args, executable, preexec_fn, close_fds,
                       pass_fds, cwd, env,
                       startupinfo, creationflags, shell,
                       p2cread, p2cwrite,
                       c2pread, c2pwrite,
                       errread, errwrite,
                       restore_signals,
                       gid, gids, uid, umask,
                       start_new_session, process_group):
        """Execute program (POSIX version)"""

        if isinstance(args, (str, bytes)):
            args = [args]
        elif isinstance(args, os.PathLike):
            if shell:
                raise TypeError('path-like args is not allowed when '
                                'shell is true')
            args = [args]
        else:
            args = list(args)

        if shell:
            # On Android the default shell is at '/system/bin/sh'.
            unix_shell = ('/system/bin/sh' if
                      hasattr(sys, 'getandroidapilevel') else '/bin/sh')
            args = [unix_shell, "-c"] + args
            if executable:
                args[0] = executable

        if executable is None:
            executable = args[0]

        sys.audit("subprocess.Popen", executable, args, cwd, env)

        if (_USE_POSIX_SPAWN
                and os.path.dirname(executable)
                and preexec_fn is None
                and not close_fds
                and not pass_fds
                and cwd is None
                and (p2cread == -1 or p2cread > 2)
                and (c2pwrite == -1 or c2pwrite > 2)
                and (errwrite == -1 or errwrite > 2)
                and not start_new_session
                and process_group == -1
                and gid is None
                and gids is None
                and uid is None
                and umask < 0):
            self._posix_spawn(args, executable, env, restore_signals,
                              p2cread, p2cwrite,
                              c2pread, c2pwrite,
                              errread, errwrite)
            return

        orig_executable = executable

        # For transferring possible exec failure from child to parent.
        # Data format: "exception name:hex errno:description"
        # Pickle is not used; it is complex and involves memory allocation.
        errpipe_read, errpipe_write = os.pipe()
        # errpipe_write must not be in the standard io 0, 1, or 2 fd range.
        low_fds_to_close = []
        while errpipe_write < 3:
            low_fds_to_close.append(errpipe_write)
            errpipe_write = os.dup(errpipe_write)
        for low_fd in low_fds_to_close:
            os.close(low_fd)
        try:
            try:
                # We must avoid complex work that could involve
                # malloc or free in the child process to avoid
                # potential deadlocks, thus we do all this here.
                # and pass it to fork_exec()

                if env is not None:
                    env_list = []
                    for k, v in env.items():
                        k = os.fsencode(k)
                        if b'=' in k:
                            raise ValueError("illegal environment variable name")
                        env_list.append(k + b'=' + os.fsencode(v))
                else:
                    env_list = None  # Use execv instead of execve.
                executable = os.fsencode(executable)
                if os.path.dirname(executable):
                    executable_list = (executable,)
                else:
                    # This matches the behavior of os._execvpe().
                    executable_list = tuple(
                        os.path.join(os.fsencode(dir), executable)
                        for dir in os.get_exec_path(env))
                fds_to_keep = set(pass_fds)
                fds_to_keep.add(errpipe_write)
                self.pid = _fork_exec(
                        args, executable_list,
                        close_fds, tuple(sorted(map(int, fds_to_keep))),
                        cwd, env_list,
                        p2cread, p2cwrite, c2pread, c2pwrite,
                        errread, errwrite,
                        errpipe_read, errpipe_write,
                        restore_signals, start_new_session,
                        process_group, gid, gids, uid, umask,
                        preexec_fn, _USE_VFORK)
                self._child_created = True
            finally:
                # be sure the FD is closed no matter what
                os.close(errpipe_write)

            self._close_pipe_fds(p2cread, p2cwrite,
                                 c2pread, c2pwrite,
                                 errread, errwrite)

            # Wait for exec to fail or succeed; possibly raising an
            # exception (limited in size)
            errpipe_data = bytearray()
            while True:
                part = os.read(errpipe_read, 50000)
                errpipe_data += part
                if not part or len(errpipe_data) > 50000:
                    break
        finally:
            # be sure the FD is closed no matter what
            os.close(errpipe_read)

        if errpipe_data:
            try:
                pid, sts = os.waitpid(self.pid, 0)
                if pid == self.pid:
                    self._handle_exitstatus(sts)
                else:
                    self.returncode = sys.maxsize
            except ChildProcessError:
                pass

            try:
                exception_name, hex_errno, err_msg = (
                        errpipe_data.split(b':', 2))
                # The encoding here should match the encoding
                # written in by the subprocess implementations
                # like _posixsubprocess
                err_msg = err_msg.decode()
            except ValueError:
                exception_name = b'SubprocessError'
                hex_errno = b'0'
                err_msg = 'Bad exception data from child: {!r}'.format(
                              bytes(errpipe_data))
            child_exception_type = getattr(
                    builtins, exception_name.decode('ascii'),
                    SubprocessError)
            if issubclass(child_exception_type, OSError) and hex_errno:
                errno_num = int(hex_errno, 16)
                if err_msg == "noexec:chdir":
                    err_msg = ""
                    # The error must be from chdir(cwd).
                    err_filename = cwd
                elif err_msg == "noexec":
                    err_msg = ""
                    err_filename = None
                else:
                    err_filename = orig_executable
                if errno_num != 0:
                    err_msg = os.strerror(errno_num)
                if err_filename is not None:
>                   raise child_exception_type(errno_num, err_msg, err_filename)
E                   FileNotFoundError: [Errno 2] No such file or directory: 'pdflatex'

/opt/conda/lib/python3.12/subprocess.py:1955: FileNotFoundError
T_SFLU_DRFPMI_show_sub()[source][github]

Show a graph reduction using networkx+tikz

code
docstring
"""
Show a graph reduction using networkx+tikz
"""
 1def T_SFLU_DRFPMI_show_sub():
 2
 3    sflu = SFLU.SFLU(
 4        DRFPMI_edges,
 5        graph=True,
 6        **in_out,
 7    )
 8    # match=False allows a reduced input/output set
 9    sflu.graph_nodes_pos(DRFPMI_locs, match=True)
10    G0 = sflu.G.copy()
11    #sflu.graph_nodes_pos(DRFPMI_locs, match=True)
12    print('inputs: ', sflu.inputs)
13    print('outputs: ', sflu.outputs)
14    print('nodes: ', sflu.nodes)
15
16    #print('nodes')
17    #print(sflu.graph_nodes_repr())
18    G1 = sflu.G.copy()
19
20    sflu.graph_reduce_auto_pos(lX=-10, rX=+10, Y=0, dY=-2)
21    sflu.reduce(*reduce_list)
22    print('nodes: ', sflu.nodes)
23
24    sflu.graph_reduce_auto_pos_io(lX=-30, rX=+30, Y=-5, dY=-5)
25
26    G2 = sflu.G.copy()
27    G3 = sflu.G.copy()
28    for rN, cS in sflu.row2col_cf.items():
29        for cN in cS:
30            G2.edges[cN, rN]['color'] = 'blue'
31    for cN, rS in sflu.col2row_cf.items():
32        for rN in rS:
33            G2.edges[cN, rN]['color'] = 'red'
34
35    if True:
36        # this is to colorize the edges of G3 based on the computation
37        comp = sflu.computer()
38
39        edge_map = {}
40        comp.edge_map(edge_map = edge_map, default = 1)
41        print(edge_map)
42
43        T_etm = 0
44        T_itm = 0.0148
45        T_prm = 0.03
46        T_srm = 0.35
47        emap = {
48            '1': 1,
49            'BS.r': 0.5**0.5,
50            'BS.t': 0.5**0.5,
51            'BS_X.tau': np.exp(np.pi*2j*0),
52            'BS_Y.tau': np.exp(np.pi*2j*0),
53            'X.etm.r': (1-T_etm)**0.5,
54            'X.etm.t': T_etm**0.5,
55            'X.itm.r': (1-T_itm)**0.5,
56            'X.itm.t': T_itm**0.5,
57            'XARM.tau':  np.exp(np.pi*2j*0),
58            'Y.etm.r': (1-T_etm)**0.5,
59            'Y.etm.t': T_etm**0.5,
60            'Y.itm.r': (1-T_itm)**0.5,
61            'Y.itm.t': T_itm**0.5,
62            'YARM.tau': np.exp(np.pi*2j*0),
63            'prc.tau': np.exp(np.pi*2j*0),
64            'prm.r': (1-T_prm)**0.5,
65            'prm.t': T_prm**0.5,
66            'src.tau': np.exp(np.pi*2j*0),
67            'srm.r': (1-T_srm)**0.5,
68            'srm.t': T_srm**0.5,
69        }
70        assert(set(edge_map.keys()) == set(emap.keys()))
71
72        comp.compute(edge_map=emap)
73        for rN, cN in comp.Espace.keys():
74            try:
75                G3.edges[cN, rN]['color'] = 'red'
76            except KeyError:
77                pass
78    else:
79        G3 = G2
80
81    nx2tikz.dump_pdf(
82        [G1, G2, G3],
83        fname = tjoin('testG.pdf'),
84        texname = tjoin('testG.tex'),
85        # preamble = preamble,
86        scale='10pt',
87    )
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.SFLU.test.T_SFLU_DRFPMI.T_SFLU_DRFPMI_show_sub

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

T_SFLU_DRFPMI_show_sub
output
inputs:  {'srm.B.i.exc', 'Y.etm.A.o.exc', 'Y.etm.B.i', 'X.etm.B.i', 'X.etm.A.o.exc', 'prm.A.i.exc'}
outputs:  {'Y.etm.B.o', 'X.etm.B.o', 'prm.A.o.tp', 'Y.etm.A.o.tp', 'srm.B.o.tp', 'X.etm.A.o.tp'}
nodes:  {'srm.A.i', 'BS.B2.o', 'srm.B.o', 'X.etm.A.o', 'prm.A.i', 'BS.A2.o', 'X.itm.A.o', 'BS.B1.i', 'X.itm.A.i', 'BS.A1.i', 'srm.A.o', 'prm.B.i', 'Y.etm.A.i', 'BS.A1.o', 'X.etm.A.i', 'Y.itm.A.i', 'prm.B.o', 'Y.itm.B.o', 'Y.itm.B.i', 'BS.A2.i', 'BS.B2.i', 'prm.A.o', 'BS.B1.o', 'X.itm.B.i', 'Y.etm.A.o', 'Y.itm.A.o', 'srm.B.i', 'X.itm.B.o'}
nodes:  set()
{'BS.t': 1, 'BS.r': 1, 'prm.t': 1, 'prm.r': 1, 'srm.t': 1, 'srm.r': 1, 'Y.itm.r': 1, 'Y.itm.t': 1, 'Y.etm.r': 1, 'Y.etm.t': 1, 'X.itm.r': 1, 'X.itm.t': 1, 'X.etm.r': 1, 'X.etm.t': 1, 'prc.tau': 1, 'src.tau': 1, 'BS_Y.tau': 1, 'BS_X.tau': 1, 'XARM.tau': 1, 'YARM.tau': 1, '1': 1}
captured errors:
def T_SFLU_DRFPMI_show_sub():
        """
        Show a graph reduction using networkx+tikz
        """
        sflu = SFLU.SFLU(
            DRFPMI_edges,
            graph=True,
            **in_out,
        )
        # match=False allows a reduced input/output set
        sflu.graph_nodes_pos(DRFPMI_locs, match=True)
        G0 = sflu.G.copy()
        #sflu.graph_nodes_pos(DRFPMI_locs, match=True)
        print('inputs: ', sflu.inputs)
        print('outputs: ', sflu.outputs)
        print('nodes: ', sflu.nodes)

        #print('nodes')
        #print(sflu.graph_nodes_repr())
        G1 = sflu.G.copy()

        sflu.graph_reduce_auto_pos(lX=-10, rX=+10, Y=0, dY=-2)
        sflu.reduce(*reduce_list)
        print('nodes: ', sflu.nodes)

        sflu.graph_reduce_auto_pos_io(lX=-30, rX=+30, Y=-5, dY=-5)

        G2 = sflu.G.copy()
        G3 = sflu.G.copy()
        for rN, cS in sflu.row2col_cf.items():
            for cN in cS:
                G2.edges[cN, rN]['color'] = 'blue'
        for cN, rS in sflu.col2row_cf.items():
            for rN in rS:
                G2.edges[cN, rN]['color'] = 'red'

        if True:
            # this is to colorize the edges of G3 based on the computation
            comp = sflu.computer()

            edge_map = {}
            comp.edge_map(edge_map = edge_map, default = 1)
            print(edge_map)

            T_etm = 0
            T_itm = 0.0148
            T_prm = 0.03
            T_srm = 0.35
            emap = {
                '1': 1,
                'BS.r': 0.5**0.5,
                'BS.t': 0.5**0.5,
                'BS_X.tau': np.exp(np.pi*2j*0),
                'BS_Y.tau': np.exp(np.pi*2j*0),
                'X.etm.r': (1-T_etm)**0.5,
                'X.etm.t': T_etm**0.5,
                'X.itm.r': (1-T_itm)**0.5,
                'X.itm.t': T_itm**0.5,
                'XARM.tau':  np.exp(np.pi*2j*0),
                'Y.etm.r': (1-T_etm)**0.5,
                'Y.etm.t': T_etm**0.5,
                'Y.itm.r': (1-T_itm)**0.5,
                'Y.itm.t': T_itm**0.5,
                'YARM.tau': np.exp(np.pi*2j*0),
                'prc.tau': np.exp(np.pi*2j*0),
                'prm.r': (1-T_prm)**0.5,
                'prm.t': T_prm**0.5,
                'src.tau': np.exp(np.pi*2j*0),
                'srm.r': (1-T_srm)**0.5,
                'srm.t': T_srm**0.5,
            }
            assert(set(edge_map.keys()) == set(emap.keys()))

            comp.compute(edge_map=emap)
            for rN, cN in comp.Espace.keys():
                try:
                    G3.edges[cN, rN]['color'] = 'red'
                except KeyError:
                    pass
        else:
            G3 = G2

>       nx2tikz.dump_pdf(
            [G1, G2, G3],
            fname = tjoin('testG.pdf'),
            texname = tjoin('testG.tex'),
            # preamble = preamble,
            scale='10pt',
        )

../../src/wield/control/SFLU/test/T_SFLU_DRFPMI.py:322: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../src/wield/control/SFLU/nx2tikz.py:230: in dump_pdf
    subprocess.run(opt, check=True, capture_output=True)
/opt/conda/lib/python3.12/subprocess.py:548: in run
    with Popen(*popenargs, **kwargs) as process:
/opt/conda/lib/python3.12/subprocess.py:1026: in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <Popen: returncode: 255 args: ['pdflatex', '-interaction=batchmode', '-outpu...>
args = ['pdflatex', '-interaction=batchmode', '-output-directory=/builds/wield-control/docs/maketests/test_results/T_SFLU_DRF...ub/tmpgej8o4wn', '/builds/wield-control/docs/maketests/test_results/T_SFLU_DRFPMI.py/T_SFLU_DRFPMI_show_sub/testG.tex']
executable = b'pdflatex', preexec_fn = None, close_fds = True, pass_fds = ()
cwd = None, env = None, startupinfo = None, creationflags = 0, shell = False
p2cread = -1, p2cwrite = -1, c2pread = 5, c2pwrite = 6, errread = 7
errwrite = 8, restore_signals = True, gid = None, gids = None, uid = None
umask = -1, start_new_session = False, process_group = -1

    def _execute_child(self, args, executable, preexec_fn, close_fds,
                       pass_fds, cwd, env,
                       startupinfo, creationflags, shell,
                       p2cread, p2cwrite,
                       c2pread, c2pwrite,
                       errread, errwrite,
                       restore_signals,
                       gid, gids, uid, umask,
                       start_new_session, process_group):
        """Execute program (POSIX version)"""

        if isinstance(args, (str, bytes)):
            args = [args]
        elif isinstance(args, os.PathLike):
            if shell:
                raise TypeError('path-like args is not allowed when '
                                'shell is true')
            args = [args]
        else:
            args = list(args)

        if shell:
            # On Android the default shell is at '/system/bin/sh'.
            unix_shell = ('/system/bin/sh' if
                      hasattr(sys, 'getandroidapilevel') else '/bin/sh')
            args = [unix_shell, "-c"] + args
            if executable:
                args[0] = executable

        if executable is None:
            executable = args[0]

        sys.audit("subprocess.Popen", executable, args, cwd, env)

        if (_USE_POSIX_SPAWN
                and os.path.dirname(executable)
                and preexec_fn is None
                and not close_fds
                and not pass_fds
                and cwd is None
                and (p2cread == -1 or p2cread > 2)
                and (c2pwrite == -1 or c2pwrite > 2)
                and (errwrite == -1 or errwrite > 2)
                and not start_new_session
                and process_group == -1
                and gid is None
                and gids is None
                and uid is None
                and umask < 0):
            self._posix_spawn(args, executable, env, restore_signals,
                              p2cread, p2cwrite,
                              c2pread, c2pwrite,
                              errread, errwrite)
            return

        orig_executable = executable

        # For transferring possible exec failure from child to parent.
        # Data format: "exception name:hex errno:description"
        # Pickle is not used; it is complex and involves memory allocation.
        errpipe_read, errpipe_write = os.pipe()
        # errpipe_write must not be in the standard io 0, 1, or 2 fd range.
        low_fds_to_close = []
        while errpipe_write < 3:
            low_fds_to_close.append(errpipe_write)
            errpipe_write = os.dup(errpipe_write)
        for low_fd in low_fds_to_close:
            os.close(low_fd)
        try:
            try:
                # We must avoid complex work that could involve
                # malloc or free in the child process to avoid
                # potential deadlocks, thus we do all this here.
                # and pass it to fork_exec()

                if env is not None:
                    env_list = []
                    for k, v in env.items():
                        k = os.fsencode(k)
                        if b'=' in k:
                            raise ValueError("illegal environment variable name")
                        env_list.append(k + b'=' + os.fsencode(v))
                else:
                    env_list = None  # Use execv instead of execve.
                executable = os.fsencode(executable)
                if os.path.dirname(executable):
                    executable_list = (executable,)
                else:
                    # This matches the behavior of os._execvpe().
                    executable_list = tuple(
                        os.path.join(os.fsencode(dir), executable)
                        for dir in os.get_exec_path(env))
                fds_to_keep = set(pass_fds)
                fds_to_keep.add(errpipe_write)
                self.pid = _fork_exec(
                        args, executable_list,
                        close_fds, tuple(sorted(map(int, fds_to_keep))),
                        cwd, env_list,
                        p2cread, p2cwrite, c2pread, c2pwrite,
                        errread, errwrite,
                        errpipe_read, errpipe_write,
                        restore_signals, start_new_session,
                        process_group, gid, gids, uid, umask,
                        preexec_fn, _USE_VFORK)
                self._child_created = True
            finally:
                # be sure the FD is closed no matter what
                os.close(errpipe_write)

            self._close_pipe_fds(p2cread, p2cwrite,
                                 c2pread, c2pwrite,
                                 errread, errwrite)

            # Wait for exec to fail or succeed; possibly raising an
            # exception (limited in size)
            errpipe_data = bytearray()
            while True:
                part = os.read(errpipe_read, 50000)
                errpipe_data += part
                if not part or len(errpipe_data) > 50000:
                    break
        finally:
            # be sure the FD is closed no matter what
            os.close(errpipe_read)

        if errpipe_data:
            try:
                pid, sts = os.waitpid(self.pid, 0)
                if pid == self.pid:
                    self._handle_exitstatus(sts)
                else:
                    self.returncode = sys.maxsize
            except ChildProcessError:
                pass

            try:
                exception_name, hex_errno, err_msg = (
                        errpipe_data.split(b':', 2))
                # The encoding here should match the encoding
                # written in by the subprocess implementations
                # like _posixsubprocess
                err_msg = err_msg.decode()
            except ValueError:
                exception_name = b'SubprocessError'
                hex_errno = b'0'
                err_msg = 'Bad exception data from child: {!r}'.format(
                              bytes(errpipe_data))
            child_exception_type = getattr(
                    builtins, exception_name.decode('ascii'),
                    SubprocessError)
            if issubclass(child_exception_type, OSError) and hex_errno:
                errno_num = int(hex_errno, 16)
                if err_msg == "noexec:chdir":
                    err_msg = ""
                    # The error must be from chdir(cwd).
                    err_filename = cwd
                elif err_msg == "noexec":
                    err_msg = ""
                    err_filename = None
                else:
                    err_filename = orig_executable
                if errno_num != 0:
                    err_msg = os.strerror(errno_num)
                if err_filename is not None:
>                   raise child_exception_type(errno_num, err_msg, err_filename)
E                   FileNotFoundError: [Errno 2] No such file or directory: 'pdflatex'

/opt/conda/lib/python3.12/subprocess.py:1955: FileNotFoundError
T_SFLU_DRFPMI_working()[source][github]

This is a pytest needing documentation

code
 1def T_SFLU_DRFPMI_working():
 2    sflu = SFLU.SFLU(
 3        DRFPMI_edges,
 4        **in_out,
 5    )
 6    sflu.reduce(*reduce_list)
 7    comp = sflu.computer()
 8    print(comp.edges)
 9
10    edge_map = {}
11    comp.edge_map(edge_map = edge_map, default = 1)
12    print(edge_map)
13
14    T_etm = 80e-6
15    T_itm = 0.0148
16    T_prm = 0.03
17    T_srm = 0.35
18    emap = {
19        '1': 1,
20        'BS.r': 0.5**0.5,
21        'BS.t': 0.5**0.5,
22        'BS_X.tau': np.exp(np.pi*0.5j),
23        'BS_Y.tau': np.exp(np.pi*2j*0),
24        'X.etm.r': (1-T_etm)**0.5,
25        'X.etm.t': T_etm**0.5,
26        'X.itm.r': (1-T_itm)**0.5,
27        'X.itm.t': T_itm**0.5,
28        'XARM.tau':  np.exp(np.pi*2j*0),
29        'Y.etm.r': (1-T_etm)**0.5,
30        'Y.etm.t': T_etm**0.5,
31        'Y.itm.r': (1-T_itm)**0.5,
32        'Y.itm.t': T_itm**0.5,
33        'YARM.tau': np.exp(np.pi*2j*0),
34        'prc.tau': np.exp(np.pi*2j*0),
35        'prm.r': (1-T_prm)**0.5,
36        'prm.t': T_prm**0.5,
37        'src.tau': np.exp(np.pi*2j*0),
38        'srm.r': (1-T_srm)**0.5,
39        'srm.t': T_srm**0.5,
40    }
41    assert(set(edge_map.keys()) == set(emap.keys()))
42
43    comp.compute(edge_map=emap)
44    dprint(list(comp.Espace.keys()))
45    #results = comp.inverse_col(['srm.B.o.tp'], {'srm.B.i.exc':1})['srm.B.o.tp']
46    results = comp.inverse_single('srm.B.o.tp', 'srm.B.i.exc')
47    print("CALC: ", abs(results)**2)
48
49    results = comp.inverse_row({'srm.B.o.tp': None}, {
50        'srm.B.i.exc',
51        'prm.A.i.exc',
52        'X.etm.B.i',
53        'Y.etm.B.i',
54    })
55    print("CALC: ", {k : abs(r)**2 for k, r in results.items()}, sum(abs(r)**2 for k, r in results.items()))
56    pass
pytest information

This code is wrapped in a pytest function using conventions detailed in Pytest Conventions. The full name of this test, as known by the documentation, is:

wield.control.SFLU.test.T_SFLU_DRFPMI.T_SFLU_DRFPMI_working

The full name is useful when building documentation, to link a reference to this page using :func:`name`, or directly include it with an autofunction directive. The collapse nodes below show every instance of the test run. There may only be one, but if the test was run multiple times through pytest parametrizations, the list can be longer.

T_SFLU_DRFPMI_working
output
{{BS.B1.o<BS.A1.i}: 'BS.t', {BS.A1.o<BS.B1.i}: 'BS.t', {BS.B2.o<BS.A2.i}: 'BS.t', {BS.A2.o<BS.B2.i}: 'BS.t', {BS.A2.o<BS.A1.i}: 'BS.r', {BS.A1.o<BS.A2.i}: 'BS.r', {BS.B1.o<BS.B2.i}: '-BS.r', {BS.B2.o<BS.B1.i}: '-BS.r', {prm.A.o<prm.B.i}: 'prm.t', {prm.B.o<prm.A.i}: 'prm.t', {prm.A.o<prm.A.i}: 'prm.r', {prm.B.o<prm.B.i}: '-prm.r', {srm.B.o<srm.A.i}: 'srm.t', {srm.A.o<srm.B.i}: 'srm.t', {srm.A.o<srm.A.i}: 'srm.r', {srm.B.o<srm.B.i}: '-srm.r', {Y.itm.A.o<Y.itm.A.i}: 'Y.itm.r', {Y.itm.B.o<Y.itm.B.i}: '-Y.itm.r', {Y.itm.B.o<Y.itm.A.i}: 'Y.itm.t', {Y.itm.A.o<Y.itm.B.i}: 'Y.itm.t', {Y.etm.A.o<Y.etm.A.i}: 'Y.etm.r', {Y.etm.B.o<Y.etm.B.i}: '-Y.etm.r', {Y.etm.B.o<Y.etm.A.i}: 'Y.etm.t', {Y.etm.A.o<Y.etm.B.i}: 'Y.etm.t', {X.itm.A.o<X.itm.A.i}: 'X.itm.r', {X.itm.B.o<X.itm.B.i}: '-X.itm.r', {X.itm.B.o<X.itm.A.i}: 'X.itm.t', {X.itm.A.o<X.itm.B.i}: 'X.itm.t', {X.etm.A.o<X.etm.A.i}: 'X.etm.r', {X.etm.B.o<X.etm.B.i}: '-X.etm.r', {X.etm.B.o<X.etm.A.i}: 'X.etm.t', {X.etm.A.o<X.etm.B.i}: 'X.etm.t', {prm.B.i<BS.A1.o}: 'prc.tau', {BS.A1.i<prm.B.o}: 'prc.tau', {srm.A.i<BS.B2.o}: 'src.tau', {BS.B2.i<srm.A.o}: 'src.tau', {Y.itm.A.i<BS.A2.o}: ('*', 'BS_Y.tau'), {BS.A2.i<Y.itm.A.o}: ('*', 'BS_Y.tau'), {X.itm.A.i<BS.B1.o}: ('*', 'BS_X.tau'), {BS.B1.i<X.itm.A.o}: ('*', 'BS_X.tau'), {X.etm.A.i<X.itm.B.o}: 'XARM.tau', {X.itm.B.i<X.etm.A.o}: 'XARM.tau', {Y.etm.A.i<Y.itm.B.o}: 'YARM.tau', {Y.itm.B.i<Y.etm.A.o}: 'YARM.tau', {X.etm.A.o<X.etm.A.o.exc}: '1', {Y.etm.A.o<Y.etm.A.o.exc}: '1', {X.etm.A.o.tp<X.etm.A.o}: '1', {Y.etm.A.o.tp<Y.etm.A.o}: '1', {srm.B.i<srm.B.i.exc}: '1', {srm.B.o.tp<srm.B.o}: '1', {prm.A.i<prm.A.i.exc}: '1', {prm.A.o.tp<prm.A.o}: '1'}
{'BS.t': 1, 'BS.r': 1, 'prm.t': 1, 'prm.r': 1, 'srm.t': 1, 'srm.r': 1, 'Y.itm.r': 1, 'Y.itm.t': 1, 'Y.etm.r': 1, 'Y.etm.t': 1, 'X.itm.r': 1, 'X.itm.t': 1, 'X.etm.r': 1, 'X.etm.t': 1, 'prc.tau': 1, 'src.tau': 1, 'BS_Y.tau': 1, 'BS_X.tau': 1, 'XARM.tau': 1, 'YARM.tau': 1, '1': 1}
CALC:  [[0.99673763]]
CALC:  {'srm.B.i.exc': 0.9967376286127455, 'prm.A.i.exc': 0.003262307500516606, 'Y.etm.B.i': 3.704200314544889e-12, 'X.etm.B.i': 6.388303381961165e-08} 1.0
Captured stderr call
[{prm.B.o<prm.B.i},
 {Y.itm.A.o<Y.itm.A.i},
 {Y.etm.A.o<Y.etm.A.i},
 {Y.etm.B.o<Y.etm.B.i},
 {X.itm.A.o<X.itm.A.i},
 {X.etm.A.o<X.etm.A.i},
 {X.etm.B.o<X.etm.B.i},
 {X.etm.B.o<U.X.etm.A.i},
 {U.X.etm.A.o<L.X.etm.A.o},
 {X.itm.B.i<X.itm.B.o},
 {X.etm.A.o.tp<U.X.etm.A.o},
 {L.X.etm.A.o<X.etm.A.o.exc},
 {L.X.etm.A.o<X.etm.B.i},
 {X.itm.B.o<X.itm.B.o},
 {L.X.itm.B.i<L.X.etm.A.o},
 {U.X.itm.B.o<L.X.itm.B.o},
 {U.X.etm.A.o<U.X.itm.B.o},
 {U.X.etm.A.i<U.X.itm.B.o},
 {L.X.itm.B.o<L.X.itm.B.i},
 {Y.etm.B.o<U.Y.etm.A.i},
 {U.Y.etm.A.o<L.Y.etm.A.o},
 {Y.itm.B.i<Y.itm.B.o},
 {Y.etm.A.o.tp<U.Y.etm.A.o},
 {L.Y.etm.A.o<Y.etm.A.o.exc},
 {L.Y.etm.A.o<Y.etm.B.i},
 {Y.itm.B.o<Y.itm.B.o},
 {L.Y.itm.B.i<L.Y.etm.A.o},
 {U.Y.itm.B.o<L.Y.itm.B.o},
 {U.Y.etm.A.o<U.Y.itm.B.o},
 {U.Y.etm.A.i<U.Y.itm.B.o},
 {L.Y.itm.B.o<L.Y.itm.B.i},
 {X.itm.A.o<BS.B1.o},
 {U.X.itm.B.o<U.X.itm.A.i},
 {L.X.itm.A.o<L.X.itm.B.o},
 {L.X.itm.A.o<L.X.itm.B.i},
 {Y.itm.A.o<BS.A2.o},
 {U.Y.itm.B.o<U.Y.itm.A.i},
 {L.Y.itm.A.o<L.Y.itm.B.o},
 {L.Y.itm.A.o<L.Y.itm.B.i},
 {L.prm.A.i<prm.A.i.exc},
 {U.prm.A.o<L.prm.A.o},
 {prm.A.o.tp<U.prm.A.o},
 {L.prm.A.o<L.prm.A.i},
 {prm.B.o<BS.A1.o},
 {U.prm.A.o<U.prm.B.i},
 {BS.A1.i<BS.A1.o},
 {L.prm.B.o<L.prm.A.i},
 {BS.B1.o<BS.A1.o},
 {BS.A2.o<BS.A1.o},
 {L.BS.A1.i<L.prm.B.o},
 {U.prm.B.i<U.BS.A1.o},
 {U.BS.A2.i<L.BS.A2.i},
 {BS.A2.o<BS.A2.o},
 {U.BS.A1.o<U.BS.A2.i},
 {L.BS.A2.i<L.Y.itm.A.o},
 {U.BS.A2.o<L.BS.A2.o},
 {BS.B2.o<BS.B2.i},
 {U.Y.itm.A.i<U.BS.A2.o},
 {U.BS.A2.i<U.BS.A2.o},
 {L.BS.A2.o<L.BS.A2.i},
 {L.BS.A2.o<L.BS.A1.i},
 {U.BS.B1.i<L.BS.B1.i},
 {BS.B1.o<BS.B1.o},
 {U.BS.A1.o<U.BS.B1.i},
 {U.BS.A2.o<U.BS.B1.i},
 {L.BS.B1.i<L.X.itm.A.o},
 {U.BS.B1.o<L.BS.B1.o},
 {U.BS.B1.i<U.BS.B1.o},
 {U.X.itm.A.i<U.BS.B1.o},
 {L.BS.B1.o<L.BS.A2.i},
 {L.BS.B1.o<L.BS.A1.i},
 {L.BS.B1.o<L.BS.B1.i},
 {L.BS.B1.o<L.BS.A2.o},
 {BS.B2.o<srm.A.o},
 {U.BS.B1.o<U.BS.B2.i},
 {U.BS.A2.o<U.BS.B2.i},
 {srm.A.i<srm.A.o},
 {L.BS.B2.o<L.BS.A2.i},
 {L.BS.B2.o<L.BS.B1.o},
 {L.BS.B2.o<L.BS.B1.i},
 {L.BS.B2.o<L.BS.A2.o},
 {srm.A.o<srm.A.o},
 {L.srm.A.i<L.BS.B2.o},
 {U.srm.A.o<L.srm.A.o},
 {U.BS.B2.i<U.srm.A.o},
 {L.srm.A.o<L.srm.A.i},
 {U.srm.B.i<L.srm.B.i},
 {U.srm.A.o<U.srm.B.i},
 {L.srm.B.i<srm.B.i.exc},
 {U.srm.B.o<L.srm.B.o},
 {srm.B.o.tp<U.srm.B.o},
 {L.srm.B.o<L.srm.A.i},
 {L.srm.B.o<L.srm.A.o},
 {L.srm.B.o<L.srm.B.i}]