| ¬(0 < i1 ∧ j1 < 0), rational(i1, j1).num = rational(i2, j2).num, j1 / gcd(i1, j1) + abs(j2) / gcd(i2, j2) = 0, j1 < 0 ⊦ j2 = 0, j1 = 0, i2 = 0, i1 = 0, abs(i1) / gcd(i1, j1) = abs(i2) / gcd(i2, j2) ∧ (¬ 0 < i1 ∧ (¬ i2 < 0 ∧ ¬ j2 < 0 ∨ ¬ 0 < i2 ∧ ¬ 0 < j2) ∨ ¬ i1 < 0 ∧ (¬ i2 < 0 ∧ ¬ 0 < j2 ∨ ¬ 0 < i2 ∧ ¬ j2 < 0)) |
j1 / gcd(i1, j1) + abs(j2) / gcd(i2, j2) = 0, i1 / gcd(i1, j1) + rational(i2, j2).num = 0, j1 < 0, i1 < 0 ⊦ j2 = 0, j1 = 0, i2 = 0, i1 = 0, i1 / gcd(i1, j1) + abs(i2) / gcd(i2, j2) = 0 ∧ (¬ i2 < 0 ∧ ¬ j2 < 0 ∨ ¬ 0 < i2 ∧ ¬ 0 < j2)
Used simplifier rules: numerator-neg2: ⊦ i < 0 ∧ j < 0 → rational(i, j).num = abs(i) / gcd(i, j);% ⊦ j < i ∧ i ≤ 0 → j < 0; (forward)% ⊦ i < 0 ∧ 0 ≤ j → i < j;% ⊦ ~ i = j ↔ i + j = 0;%j ≠ 0 ⊦ ~ i / j = ~(i / j);% ⊦ gcd(i, j) = 0 ↔ i = 0 ∧ j = 0;% ⊦ i < 0 → abs(i) = ~ i;% ⊦ i < j → ¬ j < i;% ⊦ i ≠ j → (i ≤ j ↔ i < j);% ⊦ ¬ i < j ↔ j ≤ i;