Ë
    7^(hQE  ã                   óØ   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZmZmZmZmZmZmZmZ d dlmZ dd„Zd	„ Zd
„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'y)é    )Úimport_module)ÚMul)ÚInteger)ÚDagger)	ÚXÚYÚZÚHÚCNOTÚIdentityGateÚCGateÚ	PhaseGateÚTGate)Úgenerate_gate_rulesÚgenerate_equivalent_idsÚGateIdentityÚbfs_identity_searchÚis_scalar_sparse_matrixÚis_scalar_nonsparse_matrixÚis_degenerateÚis_reducible)Úskipc                 óZ   — t        | «      t        | «      t        | «      t        | «      f}|S )N)r   r   r	   r
   )ÚqubitÚgatess     úm/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/physics/quantum/tests/test_identitysearch.pyÚcreate_gate_sequencer      s%   € Üˆu‹X”q˜“x¤ 5£¬1¨U«8Ð4€EØ€Ló    c                  óà  — t        «       \  } }}}t        d«      }t        dt        d«      «      }t	        | f«      | fdfhk(  sJ ‚| | fdf| f| ffh}t	        | | f«      |k(  sJ ‚| || fdf|| | fdf| | |fdf|| f| ff| |f| ff|f| | ffh}t	        | || f«      |k(  sJ ‚| ||fdf||| fdf|| |fdfd| ||ffd|| |ffd||| ff| f||ff||f| ff|f| |ff|| f|ff|f|| ff| |f|ffh}t	        | ||f«      }||k(  sJ ‚d|||| ffd| |||ffd|| ||ffd||| |ff|f||| ff| f|||ff|f| ||ff|f|| |ff|| f||ff| |f||ff||f| |ff||f|| ff|| |f|ff| ||f|ff|||f| ff||| f|ff|| ||fdf| |||fdf|||| fdf||| |fdfh}t	        | |||f«      }||k(  sJ ‚d|dz  |dz  | ffd|dz  | |dz  ffd| |dz  |dz  ff|f|dz  | ff|f| |dz  ff| f|dz  |dz  ff|| f|dz  ff||f| ff| |f|dz  ff|| |fdf||| fdf| ||fdfh}t	        | ||f«      }||k(  sJ ‚t        d«      |dz  |dz  z  | z  ft        d«      |dz  | z  |dz  z  ft        d«      | |dz  z  |dz  z  f||dz  | z  f|| |dz  z  f| |dz  |dz  z  f|| z  |dz  f||z  | f| |z  |dz  f|| z  |z  t        d«      f||z  | z  t        d«      f| |z  |z  t        d«      fh}t	        | ||fd¬«      }||k(  sJ ‚y )Nr   é   © éÿÿÿÿT©Úreturn_as_muls)r   r   r   r   r   r   )ÚxÚyÚzÚhÚphÚcgate_tÚ
gate_rulesÚactuals           r   Útest_generate_gate_rules_1r-      s-  € ä'Ó)�L€Qˆˆ1ˆaÜ	�1‹€BÜ�A”u˜Q“xÓ €Gä ˜tÓ$¨1¨$°¨¨Ò4Ð4Ð4à�q�6˜2�,Ø�t˜a˜T�lð$€Jä  1˜vÓ&¨*Ò4Ð4Ð4à�q˜!�9˜b�/Ø˜1˜a�y "�oØ˜1˜a�y "�oØ˜1�v ˜t�nØ˜1�v ˜t�nØ�t˜a ˜V�nð&€Jô   1 a˜yÓ)¨ZÒ7Ð7Ð7à�q˜!�9˜b�/ Q¨¨1 I¨r ?°a¸¸A°YÀ°OØ˜A˜q !˜9�o¨¨Q°°1¨I ¸¸aÀÀA¸Y¸Ø�t˜a ˜V�n¨¨1 v°¨t n¸°t¸aÀ¸V°nØ˜1�v ˜t�n¨ t¨a°¨V n¸¸1°vÀ¸t°nðF€Jô ! ! Q¨ Ó+€FØ�ZÒÐÐð 
ˆa��A�qˆ\Ð˜R ! Q¨¨1 Ð.°°a¸¸A¸q°\Ð0BØ
ˆq�!�Q˜ˆlÐ	˜q˜d Q¨¨1 IÐ.°!°¸¸1¸a°yÐ0AØˆ$��A�q�	Ð	˜a˜T A q¨! 9Ð-°°A°¸¸A¸Ð/?Øˆaˆ&�1�a�&Ð	˜Q ˜F Q¨ FÐ+¨q°!¨f°q¸!°fÐ-=Øˆa�ˆ)�a�TÐ	˜a  A˜Y¨¨Ð-°°A°q°	¸A¸4Ð/@Øˆa�ˆ)�a�TÐ	˜a  A q˜\¨2Ð.°!°Q¸¸1°¸rÐ0BØˆa��Aˆ,˜Ð	˜q ! Q¨˜l¨BÐ/ð1€Jô ! ! Q¨¨1 Ó.€FØ�ZÒÐÐà˜ "™ r¨B¡x°Ð3Ð4Ø˜B ™H a¨°2©Ð7Ð8Ø˜A˜w¨™}¨b°2©hÐ7Ð8Ø�z B¨¡H¨a =Ð1Ø�u˜q '¨B¡-Ð0Ð1Ø�t˜g¨™m¨R°"©XÐ6Ð7Ø �| b¨2¡h [Ð1Ø˜G�} q dÐ+Ø˜2�w ¨2¡Ð 0Ð1Ø  BÐ'¨Ð,Ø˜G QÐ'¨Ð,Ø˜2˜wÐ'¨Ð,ð.€Jô ! ! R¨Ð!1Ó2€FØ�ZÒÐÐä˜1“:˜w¨™}¨R°"©XÑ5°aÑ7Ð8Ü˜q“z 2¨¡8¨A¡:¨g¸©mÑ#;Ð<Ü˜q“z 1 W¨r¡]¡?°2¸±8Ñ#;Ð<Ø  R¡¨¡
Ð+Ø˜1˜W r™]™?Ð+Ø˜' B™-¨¨R©Ñ0Ð1Ø˜q‘y " r¡(Ð+Ø˜'‘z 1�oØ˜‘t˜W r™]Ð+Ø˜q‘y ‘|¤W¨Q£ZÐ0Ø˜'‘z !‘|¤W¨Q£ZÐ0Ø˜‘t˜G‘|¤W¨Q£ZÐ0ð2€Jô ! ! R¨Ð!1À$ÔG€FØ�ZÒÐÑr   c                  ó  — t        «       \  } }}}t        d«      }t        dt        d«      «      }| t	        d«      fh}t        | fd¬«      |k(  sJ ‚t	        d«      t	        d«      fh}t        | | z  d¬«      |k(  sJ ‚dh}t        | | z  d¬«      |k(  sJ ‚| |z  | z  t	        d«      f|t	        d«      f|| z  | f| |z  | fh}t        | |z  | z  d¬«      |k(  sJ ‚| |z  |z  t	        d«      f||z  | z  t	        d«      f|| z  |z  t	        d«      ft	        d«      | |z  |z  ft	        d«      || z  |z  ft	        d«      ||z  | z  f| ||z  f||z  | f|| |z  f|| z  |f||| z  f| |z  |fh}t        | |z  |z  d¬«      }||k(  sJ ‚t	        d«      ||z  |z  | z  ft	        d«      | |z  |z  |z  ft	        d«      || z  |z  |z  ft	        d«      ||z  | z  |z  f|||z  | z  f| ||z  |z  f|| |z  |z  f||| z  |z  f|| z  ||z  f||z  || z  f| |z  ||z  f||z  | |z  f|| z  |z  |f| |z  |z  |f||z  |z  | f||z  | z  |f|| z  |z  |z  t	        d«      f| |z  |z  |z  t	        d«      f||z  |z  | z  t	        d«      f||z  | z  |z  t	        d«      fh}t        | |z  |z  |z  d¬«      }||k(  sJ ‚t	        d«      |dz  |dz  z  | z  ft	        d«      |dz  | z  |dz  z  ft	        d«      | |dz  z  |dz  z  f||dz  | z  f|| |dz  z  f| |dz  |dz  z  f|| z  |dz  f||z  | f| |z  |dz  f|| z  |z  t	        d«      f||z  | z  t	        d«      f| |z  |z  t	        d«      fh}t        | |z  |z  d¬«      }||k(  sJ ‚d|dz  |dz  | ffd|dz  | |dz  ffd| |dz  |dz  ff|f|dz  | ff|f| |dz  ff| f|dz  |dz  ff|| f|dz  ff||f| ff| |f|dz  ff|| |fdf||| fdf| ||fdfh}t        | |z  |z  «      }||k(  sJ ‚y )	Nr   r    Tr#   )r!   r!   Fr"   r!   )r   r   r   r   r   r   )	r%   r&   r'   r(   r)   r*   Úexpectedr+   r,   s	            r   Útest_generate_gate_rules_2r0   X   s¨  € ä'Ó)�L€Qˆˆ1ˆaÜ	�1‹€BÜ�A”u˜Q“xÓ €Gð ”G˜A“J�Ð €HÜ ˜t°DÔ9¸XÒEÐEÐEä˜“œW Q›ZÐ(Ð)€HÜ˜q ™s°4Ô8¸HÒDÐDÐDàˆz€HÜ˜q ™s°5Ô9¸XÒEÐEÐEà�Q‘3�q‘5œ' !›*Ð%Øœ' !›*�oØ˜‘s˜A�hØ˜‘s˜A�hð €Jô ˜q ™s 1™u°TÔ:¸jÒHÐHÐHà�Q‘3�q‘5œ' !›*Ð%Ø˜‘s˜1‘uœg a›jÐ)Ø˜‘s˜1‘uœg a›jÐ)Ü˜q“z 1 Q¡3 q¡5Ð)Ü˜q“z 1 Q¡3 q¡5Ð)Ü˜q“z 1 Q¡3 q¡5Ð)Ø˜!˜A™#�hØ˜‘s˜A�hØ˜!˜A™#�hØ˜‘s˜A�hØ˜!˜A™#�hØ˜‘s˜A�hð €Jô !  1¡ Q¡°tÔ<€FØ�ZÒÐÐä˜1“:˜q ™s 1™u Q™wÐ'Ü˜q“z 1 Q¡3 q¡5¨¡7Ð+Ü˜q“z 1 Q¡3 q¡5¨¡7Ð+Ü˜q“z 1 Q¡3 q¡5¨¡7Ð+Ø˜!˜A™#˜a™%�j 1 a¨¡c¨!¡e *Ø˜!˜A™#˜a™%�j 1 a¨¡c¨!¡e *Ø˜‘s˜A˜a™C�j 1 Q¡3¨¨!© *Ø˜‘s˜A˜a™C�j 1 Q¡3¨¨!© *Ø˜‘s˜1‘u˜a�j 1 Q¡3 q¡5¨! *Ø˜‘s˜1‘u˜a�j 1 Q¡3 q¡5¨! *Ø˜‘s˜1‘u˜Q‘w¤¨£
Ð+Ø˜‘s˜1‘u˜Q‘w¤¨£
Ð+Ø˜‘s˜1‘u˜Q‘w¤¨£
Ð+Ø˜‘s˜1‘u˜Q‘w¤¨£
Ð+ð-€Jô !  1¡ Q¡ q¡¸Ô>€FØ�ZÒÐÐä˜1“:˜w¨™}¨R°"©XÑ5°aÑ7Ð8Ü˜q“z 2¨¡8¨A¡:¨g¸©mÑ#;Ð<Ü˜q“z 1 W¨r¡]¡?°2¸±8Ñ#;Ð<Ø  R¡¨¡
Ð+Ø˜1˜W r™]™?Ð+Ø˜' B™-¨¨R©Ñ0Ð1Ø˜q‘y " r¡(Ð+Ø˜'‘z 1�oØ˜‘t˜W r™]Ð+Ø˜q‘y ‘|¤W¨Q£ZÐ0Ø˜'‘z !‘|¤W¨Q£ZÐ0Ø˜‘t˜G‘|¤W¨Q£ZÐ0ð2€Jô !  2¡ g¡¸dÔC€FØ�ZÒÐÐà˜ "™ r¨B¡x°Ð3Ð4Ø˜B ™H a¨°2©Ð7Ð8Ø˜A˜w¨™}¨b°2©hÐ7Ð8Ø�z B¨¡H¨a =Ð1Ø�u˜q '¨B¡-Ð0Ð1Ø�t˜g¨™m¨R°"©XÐ6Ð7Ø �| b¨2¡h [Ð1Ø˜G�} q dÐ+Ø˜2�w ¨2¡Ð 0Ð1Ø  BÐ'¨Ð,Ø˜G QÐ'¨Ð,Ø˜2˜wÐ'¨Ð,ð.€Jô !  2¡ g¡Ó.€FØ�ZÒÐÑr   c                  ór  — t        «       \  } }}}t        | f«      | fhk(  sJ ‚t        | | f«      | | fhk(  sJ ‚t        | |f«      | |f|| fhk(  sJ ‚| ||f}| ||f||| f|| |f||| f|| |f| ||fh}t        |«      |k(  sJ ‚t        | ||«      t        ||| «      t        || |«      t        ||| «      t        || |«      t        | ||«      h}t        |d¬«      |k(  sJ ‚| |||f}| |||f|||| f|| ||f|||| f||| |f|| ||f||| |f| |||fh}t        |«      |k(  sJ ‚| || |f}| || |f|| || fh}t        |«      |k(  sJ ‚t        d|«      }||||f}||||f||||fh}t        |«      |k(  sJ ‚t	        dd«      }t        dt        d«      «      }||||f}||||f||||f||||f||||fh}t        |«      |k(  sJ ‚y )NTr#   ©r    r    r   ©r   )r   r   r   r   r   r	   )	r%   r&   r'   r(   Úgate_seqÚgate_idsÚcgate_yÚcnotÚcgate_zs	            r   Útest_generate_equivalent_ids_1r9   ­   sŽ  € ä'Ó)�L€Qˆˆ1ˆaä" A 4Ó(¨a¨T¨FÒ2Ð2Ð2Ü" A q 6Ó*°°1¨v¨hÒ6Ð6Ð6Ü" A q 6Ó*°°1¨v¸¸1°vÐ.>Ò>Ð>Ð>à�1�aˆy€HØ�A�q�	˜A˜q !˜9 q¨!¨Q i°!°Q¸°Ø˜˜1�I  1 a˜yð*€Hä" 8Ó,°Ò8Ð8Ð8ä�A�q˜!“œc ! Q¨›l¬C°°1°a«LÜ˜˜1˜a“L¤# a¨¨A£,´°A°q¸!³ð>€Hä" 8¸DÔAÀXÒMÐMÐMà�1�a˜ˆ|€HØ�A�q˜!�˜q ! Q¨˜lØ˜˜1˜a�L 1 a¨¨A ,Ø˜˜1˜a�L 1 a¨¨A ,Ø˜˜1˜a�L 1 a¨¨A ,ð0€Hô # 8Ó,°Ò8Ð8Ð8à�1�a˜ˆ|€HØ�A�q˜!�˜q ! Q¨˜lÐ+€HÜ" 8Ó,°Ò8Ð8Ð8ä�D˜!‹n€GØ�7˜A˜wÐ'€HØ�G˜Q Ð(¨7°A°wÀÐ*BÐC€HÜ" 8Ó,°Ò8Ð8Ð8ä��1‹:€DÜ�Dœ!˜A›$Ó€GØ�a˜ !Ð$€HØ�q˜' 1Ð%¨¨7°A°tÐ'<Ø˜˜a Ð)¨G°Q¸¸aÐ+@ðB€Hä" 8Ó,°Ò8Ð8Ñ8r   c            	      ó,  — t        «       \  } }}}t        | fd¬«      | hk(  sJ ‚t        d«      h}t        | | z  d¬«      |k(  sJ ‚| |z  || z  h}t        | |z  d¬«      |k(  sJ ‚| |f|| fh}t        | |z  «      |k(  sJ ‚t        | ||fŽ }| |z  |z  ||z  | z  || z  |z  ||z  | z  || z  |z  | |z  |z  h}t        |d¬«      |k(  sJ ‚t        | |||fŽ }| |z  |z  |z  ||z  |z  | z  || z  |z  |z  ||z  |z  | z  ||z  | z  |z  || z  |z  |z  ||z  | z  |z  | |z  |z  |z  h}t        |d¬«      |k(  sJ ‚t        | || |fŽ }| |z  | z  |z  || z  |z  | z  h}t        |d¬«      |k(  sJ ‚t	        d|«      }t        ||||fŽ }||z  |z  |z  ||z  |z  |z  h}t        |d¬«      |k(  sJ ‚t        dd«      }t	        dt        d«      «      }t        ||||fŽ }||z  |z  |z  ||z  |z  |z  ||z  |z  |z  ||z  |z  |z  h}t        |d¬«      |k(  sJ ‚y )NTr#   r    r2   r   r3   )r   r   r   r   r   r   r	   )	r%   r&   r'   r(   r5   Úcircuitr6   r7   r8   s	            r   Útest_generate_equivalent_ids_2r<   Ö   sØ  € ä'Ó)�L€Qˆˆ1ˆaä" A 4¸Ô=À!ÀÒDÐDÐDä˜“
ˆ|€HÜ" 1 Q¡3°tÔ<ÀÒHÐHÐHà�!‘�Q�q‘Sˆz€HÜ" 1 Q¡3°tÔ<ÀÒHÐHÐHà�A�˜˜A˜Ð€HÜ" 1 Q¡3Ó'¨8Ò3Ð3Ð3ä�A�q˜!�9ˆo€GØ�!‘�A‘�q˜‘s˜1‘u˜a ™c !™e Q q¡S¨¡UØ�a‘C˜‘E˜1˜Q™3˜q™5ð"€Hä" 7¸4Ô@ÀHÒLÐLÐLä�A�q˜!˜Q�<Ð €GØ�!‘�A‘�a‘˜˜1™˜Q™˜q™Ø�a‘C˜‘E˜!‘G˜Q˜q™S ™U 1™WØ�a‘C˜‘E˜!‘G˜Q˜q™S ™U 1™WØ�a‘C˜‘E˜!‘G˜Q˜q™S ™U 1™Wð&€Hô # 7¸4Ô@ÀHÒLÐLÐLä�A�q˜!˜Q�<Ð €GØ�!‘�A‘�a‘˜˜1™˜Q™˜q™Ð!€HÜ" 7¸4Ô@ÀHÒLÐLÐLä�D˜!‹n€GÜ�A�w  7Ð+Ð,€GØ�'‘	˜!‘˜GÑ# W¨Q¡Y¨wÑ%6°qÑ%8Ð9€HÜ" 7¸4Ô@ÀHÒLÐLÐLä��1‹:€DÜ�Dœ!˜A›$Ó€GÜ�D˜!˜W aÐ(Ð)€GØ�Q‘�w‘˜qÑ  ! G¡)¨A¡+¨dÑ"2Ø�d‘F˜1‘H˜WÑ$ g¨a¡i°¡n°QÑ&6ð8€Hä" 7¸4Ô@ÀHÒLÐLÑLr   c                  óœ  — d} d}t        d«      f}t        || |«      }|du sJ ‚t        d«      }||f}t        || |«      }|du sJ ‚t        d«      }t        d«      }||f}t        || |«      }|du sJ ‚t	        d«      }	|||	f}
t        |
| |«      }|du sJ ‚t        dd«      }||f}t        || |«      }|du sJ ‚t        d«      }||f}t        || |«      }|du sJ ‚t        d«      }|||	|f}t        || |«      }|du sJ ‚d}t        || |«      }|du sJ ‚t        |
| |«      }|du sJ ‚t        || |«      }|du sJ ‚t        || |«      }|du sJ ‚y )Né   Fr    Tr   )r   r   r   r   r	   r   r
   )Ú	numqubitsÚid_onlyÚid_gater,   Úx0Ú
xx_circuitÚx1Úy1Ú
xy_circuitÚz1Úxyz_circuitr7   Úcnot_circuitr(   Ú
hh_circuitÚh1Úxhzh_circuits                    r   Útest_is_scalar_nonsparse_matrixrM     s¹  € Ø€IØ€Gä˜A‹Ð €GÜ'¨°¸GÓD€FØ�T‰>Ðˆ>ä	
ˆ1‹€BØ�b�€JÜ'¨
°I¸wÓG€FØ�T‰>Ðˆ>ä	
ˆ1‹€BÜ	
ˆ1‹€BØ�b�€JÜ'¨
°I¸wÓG€FØ�U‰?Ðˆ?ä	
ˆ1‹€BØ�r˜2�,€KÜ'¨°YÀÓH€FØ�T‰>Ðˆ>ä��1‹:€DØ˜$�<€LÜ'¨°iÀÓI€FØ�T‰>Ðˆ>ä	ˆ!‹€AØ�Q�€JÜ'¨
°I¸wÓG€FØ�T‰>Ðˆ>ä	
ˆ1‹€BØ˜˜B Ð#€LÜ'¨°iÀÓI€FØ�T‰>Ðˆ>à€GÜ'¨°iÀÓI€FØ�T‰>Ðˆ>Ü'¨°YÀÓH€FØ�U‰?Ðˆ?Ü'¨°iÀÓI€FØ�T‰>Ðˆ>Ü'¨
°I¸wÓG€FØ�T‰>Ð‰>r   c                  óÚ  — t        d«      } | st        d«       t        dddgi¬«      }|st        d«       d}d	}t        d
«      f}t        |||«      du sJ ‚t	        d«      }||f}t        |||«      du sJ ‚t	        d
«      }t        d
«      }||f}	t        |	||«      d	u sJ ‚t        d
«      }
|||
f}t        |||«      du sJ ‚t        d
d«      }||f}t        |||«      du sJ ‚t        d«      }||f}t        |||«      du sJ ‚t        d
«      }|||
|f}t        |||«      du sJ ‚d}t        |||«      du sJ ‚t        |||«      d	u sJ ‚t        |||«      du sJ ‚t        |||«      du sJ ‚y )NÚnumpyznumpy not installed.ÚscipyÚfromlistÚsparse)Úimport_kwargszscipy not installed.r>   Fr    Tr   )	r   r   r   r   r   r   r	   r   r
   )ÚnprP   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r7   rI   r(   rJ   rK   rL   s                     r   Útest_is_scalar_sparse_matrixrU   4  sÏ  € Ü	�wÓ	€BÙÜÐ#Ô$ä˜'°*¸x¸jÐ1IÔJ€EÙÜÐ#Ô$à€IØ€Gä˜A‹Ð €GÜ" 7¨I°wÓ?À4ÑGÐGÐGä	
ˆ1‹€BØ�b�€JÜ" :¨y¸'ÓBÀdÑJÐJÐJä	
ˆ1‹€BÜ	
ˆ1‹€BØ�b�€JÜ" :¨y¸'ÓBÀeÑKÐKÐKä	
ˆ1‹€BØ�r˜2�,€KÜ" ;°	¸7ÓCÀtÑKÐKÐKä��1‹:€DØ˜$�<€LÜ" <°¸GÓDÈÑLÐLÐLä	ˆ!‹€AØ�Q�€JÜ" :¨y¸'ÓBÀdÑJÐJÐJô
 
ˆ1‹€BØ˜˜B Ð#€LÜ" <°¸GÓDÈÑLÐLÐLà€GÜ" <°¸GÓDÈÑLÐLÐLÜ" ;°	¸7ÓCÀuÑLÐLÐLÜ" <°¸GÓDÈÑLÐLÐLÜ" :¨y¸'ÓBÀdÑJÐJÑJr   c                  ól   — t        «       \  } }}}t        | ||«      }|h}||| f}t        ||«      du sJ ‚y )NT)r   r   r   )r%   r&   r'   r(   Úgate_idÚidsÚ
another_ids          r   Útest_is_degeneraterZ   f  sG   € Ü'Ó)�L€Qˆˆ1ˆaä˜1˜a Ó#€GØˆ)€Cà�Q˜�€JÜ˜˜jÓ)¨TÑ1Ð1Ñ1r   c                  ó  — d} t        «       \  }}}}|||f}t        || dd«      du sJ ‚|||f}t        || dd«      du sJ ‚||||f}t        || dd«      du sJ ‚||||f}t        || dd«      du sJ ‚|||||f}t        || dd«      du sJ ‚y )	Nr>   r    é   TFr   é   é   )r   r   )Únqubitsr%   r&   r'   r(   r;   s         r   Útest_is_reducibler`   p  sÓ   € Ø€GÜ'Ó)�L€Qˆˆ1ˆaà�!�Qˆi€GÜ˜ ¨!¨QÓ/°4Ñ7Ð7Ð7à�!�Qˆi€GÜ˜ ¨!¨QÓ/°5Ñ8Ð8Ð8à�!�Q˜ˆl€GÜ˜ ¨!¨QÓ/°4Ñ7Ð7Ð7à�!�Q˜ˆl€GÜ˜ ¨!¨QÓ/°4Ñ7Ð7Ð7à�!�Q˜˜1ˆo€GÜ˜ ¨!¨QÓ/°4Ñ7Ð7Ñ7r   c                  ó$  — t        g d«      t        «       k(  sJ ‚t        «       \  } }}}| g}t        | | «      h}t        |dd¬«      |k(  sJ ‚| ||g}t        | | «      t        ||«      t        ||«      t        | ||«      h}t        |d«      |k(  sJ ‚t        | | «      t        ||«      t        ||«      t        | ||«      t        | || |«      t        | || |«      t        ||||«      h}t        |dd¬«      |k(  sJ ‚t        |dd¬«      |k(  sJ ‚| |||g}t        | | «      t        ||«      t        ||«      t        ||«      t        | ||«      t        | || |«      t        | || |«      t        | |||«      t        ||||«      t        ||||«      h
}t        |d«      |k(  sJ ‚t        | | «      t        ||«      t        ||«      t        ||«      h}|t        |ddd¬«      k(  sJ ‚t        | | «      t        ||«      t        ||«      t        ||«      t        | ||«      t        | || |«      t        | || |«      t        | |||«      t        ||||«      t        ||||«      t        | ||| |«      t        | ||||«      t        |||||«      h}t        |dd¬«      |k(  sJ ‚t        | | «      t        ||«      t        ||«      t        ||«      t        | |||«      h}|t        |ddd¬«      k(  sJ ‚t	        dd	«      }| |g}t        | | «      t        ||«      t        | || |«      h}t        |dd¬«      |k(  sJ ‚t        d
| «      }| |g}t        | | «      t        ||«      t        | || |«      h}t        |dd¬«      |k(  sJ ‚t        dt        d«      «      }|||g}t        ||«      t        ||«      t        ||«      t        ||||«      h}t        |dd¬«      |k(  sJ ‚t        d	«      }	t        d	«      }
|	|
g}t        |	|	|	|	«      h}t        |dd¬«      |k(  sJ ‚y )Nr    r>   ©Ú	max_depthr]   r^   r\   T)rc   Úidentity_onlyr   r2   r3   )	r   Úsetr   r   r   r   r	   r   r   )r%   r&   r'   r(   Ú	gate_listÚid_setr7   Úcgate_xr8   ÚsÚts              r   Útest_bfs_identity_searchrk   „  s¸  € Ü˜r 1Ó%¬«Ò.Ð.Ð.ä'Ó)�L€Qˆˆ1ˆaà�€IÜ˜1˜aÓ Ð!€FÜ˜y¨!°qÔ9¸VÒCÐCÐCð �A�q�	€IÜ˜1˜aÓ Ü˜q !Ó$Ü˜q !Ó$Ü˜q ! QÓ'ð)€Fô ˜y¨!Ó,°Ò6Ð6Ð6ä˜1˜aÓ Ü˜q !Ó$Ü˜q !Ó$Ü˜q ! QÓ'Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*ð,€Fô ˜y¨!°qÔ9¸VÒCÐCÐCÜ˜y¨!°qÔ9¸VÒCÐCÐCà�A�q˜!�€IÜ˜1˜aÓ Ü˜q !Ó$Ü˜q !Ó$Ü˜q !Ó$Ü˜q ! QÓ'Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*ð	,€Fô ˜y¨!Ó,°Ò6Ð6Ð6ä˜1˜aÓ Ü˜q !Ó$Ü˜q !Ó$Ü˜q !Ó$ð&€Fð Ô(¨°AÀØ7;ô=ò =ð =ð =ô ˜1˜aÓ Ü˜q !Ó$Ü˜q !Ó$Ü˜q !Ó$Ü˜q ! QÓ'Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨Ó*Ü˜q ! Q¨¨1Ó-Ü˜q ! Q¨¨1Ó-Ü˜q ! Q¨¨1Ó-ð/€Fô ˜y¨!°qÔ9¸VÒCÐCÐCä˜1˜aÓ Ü˜q !Ó$Ü˜q !Ó$Ü˜q !Ó$Ü˜q ! Q¨Ó*ð	,€Fð
 Ô(¨°AÀØ7;ô=ò =ð =ð =ô ��1‹:€DØ�D�	€IÜ˜1˜aÓ Ü˜t TÓ*Ü˜q $¨¨4Ó0ð2€Fô ˜y¨!°qÔ9¸VÒCÐCÐCä�D˜!‹n€GØ�G�€IÜ˜1˜aÓ Ü˜w¨Ó0Ü˜q '¨1¨gÓ6ð8€Fô ˜y¨!°qÔ9¸VÒCÐCÐCä�Dœ!˜A›$Ó€GØ�w Ð"€IÜ˜1˜aÓ Ü˜w¨Ó0Ü˜t TÓ*Ü˜t Q¨°Ó3ð5€Fô ˜y¨!°qÔ9¸VÒCÐCÐCä�!‹€AÜˆa‹€AØ�A�€IÜ˜1˜a  AÓ&Ð'€FÜ˜y¨!°qÔ9¸VÒCÐCÑCr   c                  óž   — t        d«      } t        d«      }t        | «      |g}t        t        | «      ||«      h}t	        |dd¬«      |k(  sJ ‚y )Nr   r    r\   rb   )r   r   r   r   r   )ri   rj   rf   rg   s       r   Útest_bfs_identity_search_xfailrm   ç  sM   € Ü�!‹€AÜˆa‹€AÜ˜“˜A�€IÜœ6 !›9 a¨Ó+Ð,€FÜ˜y¨!°qÔ9¸VÒCÐCÑCr   Nr3   )(Úsympy.externalr   Úsympy.core.mulr   Úsympy.core.numbersr   Úsympy.physics.quantum.daggerr   Úsympy.physics.quantum.gater   r   r	   r
   r   r   r   r   r   Ú$sympy.physics.quantum.identitysearchr   r   r   r   r   r   r   r   Úsympy.testing.pytestr   r   r-   r0   r9   r<   rM   rU   rZ   r`   rk   rm   r!   r   r   ú<module>ru      s|   ðÝ (Ý Ý &Ý /÷/÷ /õ /÷A÷ Aó Aõ &óò
B òJR òj&9òR)MòX/òd/Kòd2ò8ò(`DóFDr   