Reference · Foundations
rainbow.math.nonnegative-rational
Nonnegative rationals as proof data: numerator plus denominator predecessor. The representation makes a zero denominator unrepresentable. Equality is deliberately cross-multiplication equivalence rather than product equality; no quotient rule or normalization axiom is added to the kernel.
nnrat/NonnegativeRational
nnrat/NonnegativeRational : → Type
nnrat/make
nnrat/make : (x₁ x₂ : ℕ) → ℚ≥0
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
nnrat/numerator
nnrat/numerator : (x₁ : ℚ≥0) → ℕ
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
nnrat/denominator-predecessor
nnrat/denominator-predecessor : (x₁ : ℚ≥0) → ℕ
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
nnrat/denominator
nnrat/denominator : (x₁ : ℚ≥0) → ℕ
ℕ = data/Natℚ≥0 = nnrat/NonnegativeRational
nnrat/combine-denominator-predecessors
nnrat/combine-denominator-predecessors : (x₁ x₂ : ℕ) → ℕ
ℕ = data/Nat
nnrat/zero
nnrat/zero : → ℚ≥0
ℚ≥0 = nnrat/NonnegativeRational
nnrat/one
nnrat/one : → ℚ≥0
ℚ≥0 = nnrat/NonnegativeRational
nnrat/half
nnrat/half : → ℚ≥0
ℚ≥0 = nnrat/NonnegativeRational
nnrat/quarter
nnrat/quarter : → ℚ≥0
ℚ≥0 = nnrat/NonnegativeRational
nnrat/equivalent
nnrat/equivalent : (x₁ x₂ : ℚ≥0) → Prop
ℚ≥0 = nnrat/NonnegativeRational
nnrat/add
nnrat/add : (x₁ x₂ : ℚ≥0) → ℚ≥0
ℚ≥0 = nnrat/NonnegativeRational
nnrat/multiply
nnrat/multiply : (x₁ x₂ : ℚ≥0) → ℚ≥0
ℚ≥0 = nnrat/NonnegativeRational
nnrat/denominator-combine
nnrat/denominator-combine : (left right : ℕ) → data/succ (nnrat/combine-denominator-predecessors left right) = nat/multiply (data/succ left) (data/succ right)
= = equality/Eqℕ = data/Nat
nnrat/equivalent-reflexive
nnrat/equivalent-reflexive : (value : ℚ≥0) → value = value
= = nnrat/equivalent: equality of rational valuesℚ≥0 = nnrat/NonnegativeRational
nnrat/equivalent-symmetric
nnrat/equivalent-symmetric : (left right : ℚ≥0) (same : left = right) → right = left
= = nnrat/equivalent: equality of rational valuesℚ≥0 = nnrat/NonnegativeRational
nnrat/equivalent-transitive
nnrat/equivalent-transitive : (left middle right : ℚ≥0) (left-middle : left = middle) (middle-right : middle = right) → left = right
= = nnrat/equivalent: equality of rational valuesℚ≥0 = nnrat/NonnegativeRational
nnrat/add-respects-equivalence
nnrat/add-respects-equivalence : (left left-equivalent right right-equivalent : ℚ≥0) (same-left : left = left-equivalent) (same-right : right = right-equivalent) → left + right = left-equivalent + right-equivalent
+ = nnrat/add= = nnrat/equivalent: equality of rational valuesℚ≥0 = nnrat/NonnegativeRational
nnrat/multiply-respects-equivalence
nnrat/multiply-respects-equivalence : (left left-equivalent right right-equivalent : ℚ≥0) (same-left : left = left-equivalent) (same-right : right = right-equivalent) → left · right = left-equivalent · right-equivalent
= = nnrat/equivalent: equality of rational values· = nnrat/multiplyℚ≥0 = nnrat/NonnegativeRational