Reference · Non-negative rationals
rainbow.math.rational.nnrat.positive
Constructive strict positivity for exact nonnegative rationals. A nonnegative rational is positive exactly when its numerator is a positive natural. This representation-facing definition is executable and avoids quotient reasoning. Positivity is invariant under exact-rational equivalence, and addition, multiplication, division, and minimum preserve it. These are the algebraic prerequisites for full-support Hastings reachability. Native, kernel-checked, and axiom-free on D63.
nnrat/positive
nnrat/positive : (x₁ : ℚ≥0) → Prop
ℚ≥0 = nnrat/NonnegativeRational
nnrat/one-positive
nnrat/one-positive : → nnrat/positive 1
1 = nnrat/one
nnrat/multiply-positive
nnrat/multiply-positive : (left right : ℚ≥0) (left-positive : nnrat/positive left) (right-positive : nnrat/positive right) → nnrat/positive (left · right)
· = nnrat/multiplyℚ≥0 = nnrat/NonnegativeRational
nnrat/positive-respects-equivalence
nnrat/positive-respects-equivalence : (left right : ℚ≥0) (same : left = right) (left-positive : nnrat/positive left) → nnrat/positive right
= = nnrat/equivalent: equality of rational valuesℚ≥0 = nnrat/NonnegativeRational
nat/add-positive-left
nat/add-positive-left : (left right : ℕ) (left-positive : nat/strict-below 0 left) → nat/strict-below 0 (algebra/nat-add left right)
ℕ = data/Nat
nnrat/denominator-positive
nnrat/denominator-positive : (value : ℚ≥0) → nat/strict-below 0 (nnrat/denominator value)
ℚ≥0 = nnrat/NonnegativeRational
nnrat/add-positive-left
nnrat/add-positive-left : (left right : ℚ≥0) (left-positive : nnrat/positive left) → nnrat/positive (left + right)
+ = nnrat/addℚ≥0 = nnrat/NonnegativeRational
nnrat/add-positive-right
nnrat/add-positive-right : (left right : ℚ≥0) (right-positive : nnrat/positive right) → nnrat/positive (left + right)
+ = nnrat/addℚ≥0 = nnrat/NonnegativeRational
nnrat/min-positive
nnrat/min-positive : (left right : ℚ≥0) (left-positive : nnrat/positive left) (right-positive : nnrat/positive right) → nnrat/positive (minmax/min left right)
ℚ≥0 = nnrat/NonnegativeRational
nnrat/reciprocal-positive
nnrat/reciprocal-positive : (value : ℚ≥0) → nnrat/positive (nnrat/reciprocal value)
ℚ≥0 = nnrat/NonnegativeRational
nnrat/divide-positive-left
nnrat/divide-positive-left : (left right : ℚ≥0) (left-positive : nnrat/positive left) → nnrat/positive (nnrat/divide left right)
ℚ≥0 = nnrat/NonnegativeRational