| ⊦ 2 * (i3 * j1) * i1 * j3 + 2 * (i4 * j2) * i1 * j3 + 2 * (i3 * j3) * i4 * j4 + 2 * (i2 * j1) * i3 * j4 + 2 * (i4 * j1) * (i1 * j4 + i2 * j3) + 2 * (i1 * j4) * i2 * j3 = ((i1 * j1) * i3 * j3 + (i1 * j1) * i4 * j4) * 2 + (j4 * i2 * 2) * (i1 * j3 + i3 * j1) + 2 * ((i1 * j2 + i2 * j1) + i3 * j4) * i4 * j3 |
⊦ i * (j + j0) = i * j + i * j0
⊦ 2 * (i3 * j1) * i1 * j3 + 2 * (i4 * j2) * i1 * j3 + 2 * (i3 * j3) * i4 * j4 + 2 * (i2 * j1) * i3 * j4 + 2 * (i4 * j1) * (i1 * j4 + i2 * j3) + 2 * (i1 * j4) * i2 * j3 = ((i1 * j1) * i3 * j3 + (i1 * j1) * i4 * j4) * 2 + (j4 * i2 * 2) * (i1 * j3 + i3 * j1) + (j3 * i4 * 2) * i1 * j2 + (j3 * i4 * 2) * (i3 * j4 + i2 * j1)
Used simplifier rules: add-a: ⊦ i + j + i0 = (i + j) + i0; from specification int-basic2%add-c: ⊦ i + j = j + i; from specification int-basic2%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult Used terms: j3 * i4 * 2, i3 * j4 + i2 * j1, i1 * j2