| i < 0, i0 < 0, i / gcd(i, i0) < 0, i0 / gcd(i, i0) < 0 ⊦ i0 = 0, i = 0, i0 / gcd(i, i0) + rational(~(i / gcd(i, i0)), ~(i0 / gcd(i, i0))).denom = 0 |
⊦ i ≠ 0 ∧ j ≠ 0 → rational(i, j).denom = abs(j) / gcd(i, j)
Used simplifier rules: ⊦ i0 < 0 → i0 / gcd(i, i0) ≠ 0;% ⊦ i ≠ 0 → i / gcd(i, i0) ≠ 0;% ⊦ ~ i = 0 ↔ i = 0;% ⊦ abs(~ i) = abs(i);% ⊦ gcd(i, j) = 0 ↔ i = 0 ∧ j = 0;%j ≠ 0 ⊦ abs(i / j) = abs(i) / abs(j);% ⊦ i < 0 → abs(i) = ~ i;% ⊦ abs(gcd(i, j)) = gcd(i, j);%j ≠ 0 ⊦ ~ i / j = ~(i / j);% ⊦ gcd(~ i, j) = gcd(i, j);% ⊦ i ≠ 0 → gcd(i / gcd(i, j), j / gcd(i, j)) = 1;% ⊦ gcd(i, j) = gcd(j, i);% ⊦ i / 1 = i;% ⊦ ~ i + i = 0;% ⊦ i + j + i0 = (i + j) + i0;% ⊦ i + j = j + i; Used terms: ~(i0 / gcd(i, i0)), ~(i / gcd(i, i0))