Skip to content
Rainbow docs menu

Reference · Non-negative rationals

rainbow.math.rational.nnrat.positive

Non-negative rationalssrc/rainbow/math/rational/nnrat/positive.clj1 definitions, 10 theorems

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

DefinitionSource, line 87

nnrat/positive :
  (x₁ : ℚ≥0)
  → Prop

ℚ≥0 = nnrat/NonnegativeRational

nnrat/one-positive

TheoremWorked exampleNo axiomsSource, line 98

nnrat/one-positive :
  → nnrat/positive 1

1 = nnrat/one

nnrat/multiply-positive

TheoremFor all inputsNo axiomsSource, line 114

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

TheoremFor all inputsNo axiomsSource, line 133

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

TheoremFor all inputsNo axiomsSource, line 179

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

TheoremFor all inputsNo axiomsSource, line 225

nnrat/denominator-positive :
  (value : ℚ≥0)
  → nat/strict-below 0 (nnrat/denominator value)

ℚ≥0 = nnrat/NonnegativeRational

nnrat/add-positive-left

TheoremFor all inputsNo axiomsSource, line 247

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

TheoremFor all inputsNo axiomsSource, line 273

nnrat/add-positive-right :
  (left right : ℚ≥0) (right-positive : nnrat/positive right)
  → nnrat/positive (left + right)

+ = nnrat/addℚ≥0 = nnrat/NonnegativeRational

nnrat/min-positive

TheoremFor all inputsNo axiomsSource, line 306

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

TheoremFor all inputsNo axiomsSource, line 334

nnrat/reciprocal-positive :
  (value : ℚ≥0)
  → nnrat/positive (nnrat/reciprocal value)

ℚ≥0 = nnrat/NonnegativeRational

nnrat/divide-positive-left

TheoremFor all inputsNo axiomsSource, line 356

nnrat/divide-positive-left :
  (left right : ℚ≥0) (left-positive : nnrat/positive left)
  → nnrat/positive (nnrat/divide left right)

ℚ≥0 = nnrat/NonnegativeRational