RunReport(iterations=[IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).nrows()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).ncols()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite(Matrix.identity(n).ncols()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).nrows()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite(a * b * c).to(a * (b * c))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(a * (b * c)).to(a * b * c)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(a * b).to(b * a)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(Matrix.identity(n).nrows()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(Matrix.identity(n).ncols()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(a * b).to(b * a)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(a * b * c).to(a * (b * c))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(a * (b * c)).to(a * b * c)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).ncols()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).nrows()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(a * b).to(b * a)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(a * b * c).to(a * (b * c))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(a * (b * c)).to(a * b * c)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=3), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=4)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=3), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=3), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).nrows()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).ncols()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=3), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=True, rule_reports={'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2)], 'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0)), IterationReport(rule_set_report=RuleSetReport(changed=False, rule_reports={'rewrite(Matrix.identity(n).nrows()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n) @ A).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ B @ C).to(A @ (B @ C))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1)], 'rewrite(A @ (B @ C)).to(A @ B @ C)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=2), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(Matrix.identity(n).ncols()).to(n)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).ncols()).to(B.ncols())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite(A @ Matrix.identity(n)).to(A)': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)], 'rewrite((A @ B).nrows()).to(A.nrows())': [RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=1), RuleReport(plan=None, search_and_apply_time=datetime.timedelta(0), num_matches=0)]}, search_and_apply_time=0:00:00, merge_time=0:00:00), rebuild_time=datetime.timedelta(0))], updated=True, search_and_apply_time_per_rule={'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': datetime.timedelta(0), 'rewrite(A @ B @ C).to(A @ (B @ C))': datetime.timedelta(0), 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': datetime.timedelta(0), 'rewrite(Matrix.identity(n) @ A).to(A)': datetime.timedelta(0), 'rewrite(a * (b * c)).to(a * b * c)': datetime.timedelta(0), 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': datetime.timedelta(0), 'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': datetime.timedelta(0), 'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': datetime.timedelta(0), 'rewrite(Matrix.identity(n).ncols()).to(n)': datetime.timedelta(0), 'rewrite(a * b * c).to(a * (b * c))': datetime.timedelta(0), 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': datetime.timedelta(0), 'rewrite((A @ B).nrows()).to(A.nrows())': datetime.timedelta(0), 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': datetime.timedelta(0), 'rewrite(A @ Matrix.identity(n)).to(A)': datetime.timedelta(0), 'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': datetime.timedelta(0), 'rewrite(A @ (B @ C)).to(A @ B @ C)': datetime.timedelta(0), 'rewrite(Matrix.identity(n).nrows()).to(n)': datetime.timedelta(0), 'rewrite(a * b).to(b * a)': datetime.timedelta(0), 'rewrite((A @ B).ncols()).to(B.ncols())': datetime.timedelta(0)}, num_matches_per_rule={'rewrite(kron(A, kron(B, C))).to(kron(kron(A, B), C))': 0, 'rewrite(kron(A, B) @ kron(C, D)).to(kron(A @ C, B @ D), eq(A.ncols()).to(C.nrows()), eq(B.ncols()).to(D.nrows()))': 4, 'rewrite(a * (b * c)).to(a * b * c)': 0, 'rule(eq(C).to(kron(A, B))).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': 5, 'rewrite(kron(A @ C, B @ D)).to(kron(A, B) @ kron(C, D))': 8, 'rule(eq(C).to(A @ B)).then(A.ncols(), A.nrows(), B.ncols(), B.nrows())': 14, 'rewrite((A @ B).nrows()).to(A.nrows())': 10, 'rewrite(A @ B @ C).to(A @ (B @ C))': 12, 'rewrite(A @ (B @ C)).to(A @ B @ C)': 12, 'rewrite(Matrix.identity(n).nrows()).to(n)': 4, 'rewrite(A @ Matrix.identity(n)).to(A)': 6, 'rewrite(a * b).to(b * a)': 2, 'rewrite(kron(A, B).ncols()).to(A.ncols() * B.ncols())': 7, 'rewrite(Matrix.identity(n).ncols()).to(n)': 4, 'rewrite((A @ B).ncols()).to(B.ncols())': 11, 'rewrite(Matrix.identity(n) @ A).to(A)': 6, 'rewrite(a * b * c).to(a * (b * c))': 0, 'rewrite(kron(A, B).nrows()).to(A.nrows() * B.nrows())': 6, 'rewrite(kron(kron(A, B), C)).to(kron(A, kron(B, C)))': 0}, search_and_apply_time_per_ruleset={'': datetime.timedelta(0)}, merge_time_per_ruleset={'': datetime.timedelta(0)}, rebuild_time_per_ruleset={'': datetime.timedelta(0)})