Reference · Signed rationals
rainbow.math.rational.signed.rational
Signed rationals as proof data: a pair (positive, negative) of nonnegative rationals denoting positive - negative. Subtraction is expressed with nnrat addition only, so the kernel never needs a primitive subtraction and the nonnegative-rational machinery is reused directly. Equivalence is the Grothendieck relation (p1,n1) ~ (p2,n2) iff p1 + n2 ~ p2 + n1, again additive. This unlocks signed differences (e.g. value of information, descent updates) while keeping every kernel reduction inside the existing exact-rational base.
signed/SignedRational
signed/SignedRational : → Type
signed/make
signed/make : (x₁ x₂ : ℚ≥0) → ℚ
ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational
signed/positive
signed/positive : (x₁ : ℚ) → ℚ≥0
ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational
signed/negative
signed/negative : (x₁ : ℚ) → ℚ≥0
ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational
signed/from-nnrat
signed/from-nnrat : (x₁ : ℚ≥0) → ℚ
ℚ = signed/SignedRationalℚ≥0 = nnrat/NonnegativeRational
signed/zero
signed/zero : → ℚ
ℚ = signed/SignedRational
signed/one
signed/one : → ℚ
ℚ = signed/SignedRational
signed/add
signed/add : (x₁ x₂ : ℚ) → ℚ
ℚ = signed/SignedRational
signed/negate
signed/negate : (x₁ : ℚ) → ℚ
ℚ = signed/SignedRational
signed/subtract
signed/subtract : (x₁ x₂ : ℚ) → ℚ
ℚ = signed/SignedRational
signed/equivalent
signed/equivalent : (x₁ x₂ : ℚ) → Prop
ℚ = signed/SignedRational
signed/nonnegative
signed/nonnegative : (x₁ : ℚ) → Prop
ℚ = signed/SignedRational
signed/positive-of-make
signed/positive-of-make : (positive negative : ℚ≥0) → signed/positive (signed/make positive negative) = positive
= = equality/Eqℚ≥0 = nnrat/NonnegativeRational
signed/negative-of-make
signed/negative-of-make : (positive negative : ℚ≥0) → signed/negative (signed/make positive negative) = negative
= = equality/Eqℚ≥0 = nnrat/NonnegativeRational
signed/subtract-unfold
signed/subtract-unfold : (left right : ℚ) → left - right = signed/make (signed/positive left + signed/negative right) (signed/negative left + signed/positive right)
+ = nnrat/add- = signed/subtract= = equality/Eqℚ = signed/SignedRational
signed/equivalent-reflexive
signed/equivalent-reflexive : (value : ℚ) → value = value
= = signed/equivalent: equality of rational valuesℚ = signed/SignedRational