| i0 ≤ 0 ⊦ rational(i, i0).num = 0, gcd(rational(i, i0).num, rational(i, i0).denom) = 1, i = 0 |
⊦ 0 < i ∧ j < 0 → rational(i, j).num = ~(i / gcd(i, j))
0 < i ∧ i0 < 0, i0 ≤ 0 ⊦ ~(i / gcd(i, i0)) = 0, gcd(~(i / gcd(i, i0)), rational(i, i0).denom) = 1, i = 0
Used simplifier rules: numerator-zero-den: ⊦ i ≠ 0 → rational(i, 0).num = i;%denominator-zero-den: ⊦ i ≠ 0 → rational(i, 0).denom = 1;%denominator-pos: ⊦ i ≠ 0 ∧ j ≠ 0 → rational(i, j).denom = abs(j) / gcd(i, j);%numerator-neg2: ⊦ i < 0 ∧ j < 0 → rational(i, j).num = abs(i) / gcd(i, j);% ⊦ ¬ i < j ↔ j ≤ i;% ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ i ≤ j → (j ≤ i ↔ i = j);% ⊦ gcd(i, 1) = 1;% ⊦ i < 0 → abs(i) = ~ i;% ⊦ gcd(i, j) = 0 ↔ i = 0 ∧ j = 0;%j ≠ 0 ⊦ ~ i / j = ~(i / j);% ⊦ ~ i = 0 ↔ i = 0;% ⊦ i ≠ 0 → i / gcd(i, i0) ≠ 0;% ⊦ gcd(~ i, j) = gcd(i, j);% ⊦ i ≠ 0 → gcd(i / gcd(i, j), j / gcd(i, j)) = 1;% ⊦ gcd(i, j) = gcd(j, i); Used terms: i0, i