Fix pivot basic rewrite with new PyZX version
This draft uncovers the issue with pivoting which I will solve next. cc @RazinShaikh. #256
Traceback (most recent call last):
File "/home/mcoll/repos/github.com/colltoaction/zxlive/zxlive/rewrite_action.py", line 281, in do_rewrite
node.rewrite_action.do_rewrite(self.proof_panel)
File "/home/mcoll/repos/github.com/colltoaction/zxlive/zxlive/rewrite_action.py", line 114, in do_rewrite
g, rem_verts = self.apply_rewrite(g, matches)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mcoll/repos/github.com/colltoaction/zxlive/zxlive/rewrite_action.py", line 129, in apply_rewrite
etab, rem_verts, rem_edges, check_isolated_vertices = self.rule(g, matches)
^^^^^^^^^^^^^^^^^^^^^
File "/home/mcoll/repos/github.com/colltoaction/zxlive/zxlive/rewrite_data.py", line 117, in rule
simplification(g)
File "/home/mcoll/.local/lib/python3.11/site-packages/pyzx/simplify.py", line 109, in pivot_simp
return simp(g, 'pivot_simp', match_pivot_parallel, pivot, matchf=matchf, quiet=quiet, stats=stats)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/mcoll/.local/lib/python3.11/site-packages/pyzx/simplify.py", line 98, in simp
g.remove_edges(rem_edges)
File "/home/mcoll/.local/lib/python3.11/site-packages/pyzx/graph/multigraph.py", line 237, in remove_edges
self.remove_edge(e)
File "/home/mcoll/.local/lib/python3.11/site-packages/pyzx/graph/multigraph.py", line 240, in remove_edge
s,t,ty = edge
^^^^^^
ValueError: not enough values to unpack (expected 3, got 2)
some debugging points at
https://github.com/zxcalc/pyzx/blob/d81356b656ace618f4112266595d63415ac35dee/pyzx/rules.py#L683
check bialgebra
@colltoaction Do you expect you will continue to work on this? Otherwise I'm gonna close it.
Hi @jvdwetering! I just took another look at the issue. I changed the rule so that it uses simplify.pivot_simp with auto_simplify_parallel_edges=True and I got the following result:
Does it look in accordance to https://github.com/zxcalc/zxlive/issues/256#issuecomment-2247557548 to you?
What was the graph that you started with? That one is not semantically equivalent to https://github.com/zxcalc/zxlive/issues/256#issuecomment-2231882306 Also, there were some errors reported with the auto-simplify, so that could be going on here as well: https://github.com/zxcalc/pyzx/issues/259
- Open repro file repro-256.zxg.json
- Start derivation
- Select top two nodes
- Click Graph-like rules / pivot
With the current version of ZXLive I get:
Which is semantically correct, it is just that the bottom two wires should dissapear.
The version you get is semantically wrong, though given the changes you made to the code I don't understand why it is wrong.
In your current implementation with pivot_simp it would also keep doing pivots on the whole graph, ignoring what you selected.
It looks like in your diagram it might have applied the pivot twice, though it still looks wrong to me.
I'll close this for now and hopefully find some time in the future