| dec.scale % 2 = 0, isSquare(dec.int), even(dec.scale) ⊦ mkDecimal(sqrt(dec.int * 10 ^ (2 * abs(i))), dec.scale / 2 + abs(i)) = mkDecimal(sqrt(dec.int), dec.scale / 2) |
⊦ isSquare(i) ∧ isSquare(j) → sqrt(i * j) = sqrt(i) * sqrt(j)
isSquare(dec.int) ∧ isSquare(10 ^ (2 * abs(i))), dec.scale % 2 = 0, isSquare(dec.int), even(dec.scale) ⊦ mkDecimal(sqrt(dec.int) * sqrt(10 ^ (2 * abs(i))), dec.scale / 2 + abs(i)) = mkDecimal(sqrt(dec.int), dec.scale / 2)
Used simplifier rules: isSquare-10pot: ⊦ isSquare(10 ^ (2 * abs(i))); from specification int-pot%associativity: ⊦ i * j * j0 = (i * j) * j0; from specification int-mult%commutativity: ⊦ i * j = j * i; from specification int-mult Used terms: 10 ^ (2 * abs(i)), dec.int