@@ -185,7 +185,7 @@ Zero = I 2 ⊗ Q10 /\
185
185
{
186
186
apply block_eq.
187
187
all: solve_WF_matrix.
188
- rewrite <- V3_way1. apply V3_way2.
188
+ rewrite <- V3_way1 at 1 . apply V3_way2.
189
189
}
190
190
destruct eq as [q00_val [q01_zero [q10_zero q11_val]]].
191
191
assert (ztotens: (@Zero 4 4) = I 2 ⊗ (@Zero 2 2)). lma'.
@@ -896,7 +896,7 @@ split.
896
896
apply (f_equal (fun f => I 2 ⊗ U2 × f)).
897
897
assert (assoc_help: I 2 ⊗ (I 2 ⊗ W1) = I 2 ⊗ I 2 ⊗ W1). symmetry. apply kron_assoc. 1,2,3: solve_WF_matrix.
898
898
rewrite assoc_help at 1.
899
- rewrite <- swapbc_3gate. 2,3,4: solve_WF_matrix.
899
+ rewrite <- swapbc_3gate; solve_WF_matrix.
900
900
unfold acgate at 1.
901
901
unfold abgate at 1.
902
902
unfold V3.
@@ -908,14 +908,7 @@ split.
908
908
repeat rewrite Mmult_assoc.
909
909
rewrite <- Mmult_assoc with (A:= swapbc) (B:= swapbc).
910
910
rewrite swapbc_inverse at 1.
911
- rewrite Mmult_1_l.
912
- 2: {
913
- apply WF_mult. solve_WF_matrix.
914
- apply WF_mult. solve_WF_matrix.
915
- apply WF_mult. solve_WF_matrix.
916
- apply WF_mult. solve_WF_matrix.
917
- apply WF_bcgate. solve_WF_matrix.
918
- }
911
+ rewrite Mmult_1_l; solve_WF_matrix.
919
912
rewrite <- Mmult_assoc with (A:= I 2 ⊗ W1 ⊗ I 2).
920
913
assert (kron_mix_help: I 2 ⊗ W1 ⊗ I 2 × ((W0) † ⊗ (W1) † ⊗ I 2) =
921
914
(I 2 ⊗ W1 × ((W0) † ⊗ (W1) †)) ⊗ (I 2 × I 2)). apply kron_mixed_product.
@@ -930,16 +923,8 @@ split.
930
923
repeat rewrite Mmult_assoc.
931
924
rewrite <- Mmult_assoc with (A:= swapbc).
932
925
rewrite swapbc_inverse at 1.
933
- rewrite Mmult_1_l.
934
- 2: {
935
- apply WF_mult. solve_WF_matrix.
936
- apply WF_mult. solve_WF_matrix.
937
- apply WF_mult. solve_WF_matrix.
938
- apply WF_mult. solve_WF_matrix.
939
- apply WF_mult. solve_WF_matrix.
940
- apply WF_bcgate. solve_WF_matrix.
941
- }
942
- rewrite kron_assoc. 2,3,4: solve_WF_matrix.
926
+ rewrite Mmult_1_l; solve_WF_matrix.
927
+ rewrite (@kron_assoc 2 2 2 2). 2,3,4: solve_WF_matrix.
943
928
rewrite <- Mmult_assoc with (A:= W0 ⊗ I 4).
944
929
rewrite id_kron. simpl.
945
930
assert (kron_mix_help: W0 ⊗ I 4 × ((W0) † ⊗ I 4) = (W0 × (W0) †) ⊗ (I 4 × I 4)). apply kron_mixed_product.
@@ -950,11 +935,7 @@ split.
950
935
rewrite Mmult_1_l.
951
936
2:
952
937
{
953
- apply WF_mult. solve_WF_matrix.
954
- apply WF_mult. solve_WF_matrix.
955
- apply WF_mult. solve_WF_matrix.
956
- apply WF_mult. solve_WF_matrix.
957
- apply WF_bcgate. solve_WF_matrix.
938
+ solve_WF_matrix.
958
939
}
959
940
rewrite <- swapbc_3gate. 2,3,4: solve_WF_matrix.
960
941
repeat rewrite <- Mmult_assoc.
0 commit comments