Encyclopedia Foundation Foundation Primitive Recognition Calculus Integer Order
ARTICLE 3 claims 3 theorems
Foundation Primitive Recognition Calculus Integer Order
A machine-checked library proves that the basic objects of Recognition Science, signed orbits, form a totally ordered line, and that this order behaves exactly like the usual order on whole numbers.
Integer order in the signed orbit
In Recognition Science, the primitive objects are signed orbits, a discrete record of events that carries a magnitude and a sign. The integer order module in the machine-checked library of formal theorems asks a simple question: can these objects be compared, and does that comparison behave like the order on ordinary integers? The answer, proved as a theorem, is yes. The library shows that every pair of signed orbits is comparable, that the comparison is transitive, and that adding the same orbit to both sides of a comparison leaves the result unchanged.
The key structure is a comparison function, written cmp, which returns whether one signed orbit is less than, equal to, or greater than another. The library proves that this function is consistent with the underlying order relation: if cmp a b says less, then a is indeed less than b, and similarly for greater. It also proves that the comparison is invariant under adding a common orbit, and that negating both sides swaps the order. These are exactly the properties one expects from an ordered group, and they hold here without any extra assumptions.
The module also establishes a certificate, a single theorem that bundles all these order properties into one statement. This certificate is a formal guarantee that the signed orbits form a totally ordered set, meaning there are no incomparable pairs and no cycles in the ordering. The proof uses the underlying representation of signed orbits as integers, so the order on signed orbits is not a new invention but a faithful mirror of the standard order on the integers.
This matters because the rest of the framework builds on these objects. If the order were inconsistent, any later theorem that relies on comparing magnitudes or signs would be built on sand. The integer order module closes that gap: it shows that the basic vocabulary of comparison, less than, greater than, and equality, is well founded and behaves exactly as the integers do. This is a foundation stone, not a headline result, but it is the kind of stone that lets the rest of the building stand.
THEOREM le_total · le_trans · cmp_add_left · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
theorem le_total (a b : SignedOrbit) :
SignedOrbit.le a b ∨ SignedOrbit.le b a := by
rw [SignedOrbit.le_iff_toInt_le, SignedOrbit.le_iff_toInt_le]
omega
theorem le_trans {a b c : SignedOrbit}
(hab : SignedOrbit.le a b) (hbc : SignedOrbit.le b c) :
SignedOrbit.le a c := by
rw [SignedOrbit.le_iff_toInt_le] at *
omega
theorem cmp_add_left (a b c : SignedOrbit) :
SignedOrbit.cmp (SignedOrbit.add c a) (SignedOrbit.add c b) =
SignedOrbit.cmp a b := by
cases hcmp : SignedOrbit.cmp a b with
| lt =>
have hlt : SignedOrbit.lt a b :=
(SignedOrbit.cmp_eq_lt_iff a b).mp hcmp
exact SignedOrbit.cmp_eq_lt_of_lt
((SignedOrbit.lt_add_left_iff a b c).mpr hlt)
| eq =>
have hbal : SignedOrbit.balanced a b :=
(SignedOrbit.cmp_eq_eq_iff a b).mp hcmp
exact SignedOrbit.cmp_eq_eq_of_balanced
((SignedOrbit.balanced_add_left_iff a b c).mpr hbal)
| gt =>
have hgt : SignedOrbit.lt b a :=
(SignedOrbit.cmp_eq_gt_iff a b).mp hcmp
exact SignedOrbit.cmp_eq_gt_of_gt
((SignedOrbit.lt_add_left_iff b a c).mpr hgt)
THEOREM cmp_eq_lt_iff · cmp_eq_gt_iff · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
theorem cmp_eq_lt_iff (a b : SignedOrbit) :
SignedOrbit.cmp a b = Ordering.lt ↔ SignedOrbit.lt a b := by
constructor
· intro hcmp
unfold SignedOrbit.cmp at hcmp
by_cases hbal : SignedOrbit.balanced a b
· simp [hbal] at hcmp
· by_cases hflag : (SignedOrbit.sub b a).nonnegFlag = true
· rw [SignedOrbit.lt_iff_toInt_lt]
rw [SignedOrbit.nonnegFlag_eq_true_iff, SignedOrbit.sub_toInt] at hflag
rw [SignedOrbit.balanced_iff_toInt_eq] at hbal
omega
· simp [hbal, hflag] at hcmp
· intro hlt
exact SignedOrbit.cmp_eq_lt_of_lt hlt
theorem cmp_eq_gt_iff (a b : SignedOrbit) :
SignedOrbit.cmp a b = Ordering.gt ↔ SignedOrbit.lt b a := by
constructor
· intro hcmp
unfold SignedOrbit.cmp at hcmp
by_cases hbal : SignedOrbit.balanced a b
· simp [hbal] at hcmp
· by_cases hflag : (SignedOrbit.sub b a).nonnegFlag = true
· simp [hbal, hflag] at hcmp
· rw [SignedOrbit.lt_iff_toInt_lt]
have hflagFalse : (SignedOrbit.sub b a).nonnegFlag = false := by
cases hbranch : (SignedOrbit.sub b a).nonnegFlag with
| false => rfl
| true =>
exfalso
exact hflag hbranch
rw [SignedOrbit.nonnegFlag_eq_false_iff, SignedOrbit.sub_toInt] at hflagFalse
omega
· intro hgt
exact SignedOrbit.cmp_eq_gt_of_gt hgt
THEOREM integer_order_certificate · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
/-- The internal signed-orbit order surface is closed. -/
theorem integer_order_certificate : IntegerOrderCertificate where
truncated_sub_display := DistinctionNat.toNat_truncatedSub
leq_display := DistinctionNat.leq_eq_true_iff
absdiff_display := DistinctionNat.toNat_absDiff
signed_nonneg_display := SignedOrbit.nonneg_iff_toInt_nonneg
signed_nonneg_flag_display := SignedOrbit.nonnegFlag_eq_true_iff
signed_abs_display := SignedOrbit.abs_toNat
signed_le_display := SignedOrbit.le_iff_toInt_le
signed_lt_display := SignedOrbit.lt_iff_toInt_lt
abs_nonzero_internal := by
intro z h
exact SignedOrbit.abs_ne_zero_of_not_balanced_zero h
signed_le_reflexive := SignedOrbit.le_refl
signed_le_transitive := by
intro a b c
exact SignedOrbit.le_trans
signed_le_antisymmetric_balanced := by
intro a b
exact SignedOrbit.le_antisymm_balanced
signed_le_total := SignedOrbit.le_total
signed_order_trichotomy := SignedOrbit.trichotomy
signed_negativeFlag_eq_true_iff_nonnegFlag_eq_false :=
SignedOrbit.negativeFlag_eq_true_iff_nonnegFlag_eq_false
signed_negativeFlag_eq_false_iff_nonnegFlag_eq_true :=
SignedOrbit.negativeFlag_eq_false_iff_nonnegFlag_eq_true
signed_flags_exclusive := SignedOrbit.signFlags_exclusive
signed_flags_exhaustive := SignedOrbit.signFlags_exhaustive
signed_zero_le_iff_nonnegFlag := SignedOrbit.zero_le_iff_nonnegFlag
signed_lt_zero_iff_negativeFlag := SignedOrbit.lt_zero_iff_negativeFlag
signed_zero_lt_iff_nonnegFlag_and_not_balanced_zero :=
SignedOrbit.zero_lt_iff_nonnegFlag_and_not_balanced_zero
signed_nonnegFlag_eq_of_balanced := by
intro z w
exact SignedOrbit.nonnegFlag_eq_of_balanced
signed_negativeFlag_eq_of_balanced := by
intro z w
exact SignedOrbit.negativeFlag_eq_of_balanced
signed_nonneg_iff_of_balanced := by
intro z w
exact SignedOrbit.nonneg_iff_of_balanced
signed_add_congr_of_balanced := by
intro a a' b b'
exact SignedOrbit.add_congr_of_balanced
signed_negate_congr_of_balanced := by
intro a a'
exact SignedOrbit.negate_congr_of_balanced
signed_sub_congr_of_balanced := by
intro a a' b b'
exact SignedOrbit.sub_congr_of_balanced
signed_sub_congr_of_balanced_left := by
intro a a' b
exact SignedOrbit.sub_congr_of_balanced_left
signed_sub_congr_of_balanced_right := by
intro a b b'
exact SignedOrbit.sub_congr_of_balanced_right
signed_nonnegFlag_sub_eq_of_balanced_left := by
intro a a' b
exact SignedOrbit.nonnegFlag_sub_eq_of_balanced_left
signed_nonnegFlag_sub_eq_of_balanced_right := by
intro a b b'
exact SignedOrbit.nonnegFlag_sub_eq_of_balanced_right
signed_negativeFlag_sub_eq_of_balanced_left := by
intro a a' b
exact SignedOrbit.negativeFlag_sub_eq_of_balanced_left
signed_negativeFlag_sub_eq_of_balanced_right := by
intro a b b'
exact SignedOrbit.negativeFlag_sub_eq_of_balanced_right
signed_nonnegFlag_sub_eq_of_balanced := by
intro a a' b b'
exact SignedOrbit.nonnegFlag_sub_eq_of_balanced
signed_negativeFlag_sub_eq_of_balanced := by
intro a a' b b'
exact SignedOrbit.negativeFlag_sub_eq_of_balanced
signed_scaleByNat_congr_of_balanced := by
intro z w
exact SignedOrbit.scaleByNat_congr_of_balanced
signed_scaleByNat_balanced_zero_of_balanced_zero := by
intro z
exact SignedOrbit.scaleByNat_balanced_zero_of_balanced_zero
signed_mul_ofOrbit_balanced_scaleByNat :=
SignedOrbit.mul_ofOrbit_balanced_scaleByNat
signed_ofOrbit_mul_balanced_scaleByNat :=
SignedOrbit.ofOrbit_mul_balanced_scaleByNat
signed_abs_mul := SignedOrbit.abs_mul
signed_mul_balanced_zero_iff := SignedOrbit.mul_balanced_zero_iff
signed_mul_not_balanced_zero_iff := SignedOrbit.mul_not_balanced_zero_iff
signed_balanced_mul_left_iff_of_not_balanced_zero :=
SignedOrbit.balanced_mul_left_iff_of_not_balanced_zero
signed_balanced_mul_right_iff_of_not_balanced_zero :=
SignedOrbit.balanced_mul_right_iff_of_not_balanced_zero
signed_le_mul_left_iff_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.le_mul_left_iff_of_nonnegFlag_of_not_balanced_zero
signed_lt_mul_left_iff_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.lt_mul_left_iff_of_nonnegFlag_of_not_balanced_zero
signed_le_mul_right_iff_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.le_mul_right_iff_of_nonnegFlag_of_not_balanced_zero
signed_lt_mul_right_iff_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.lt_mul_right_iff_of_nonnegFlag_of_not_balanced_zero
signed_le_mul_left_iff_of_negativeFlag :=
SignedOrbit.le_mul_left_iff_of_negativeFlag
signed_lt_mul_left_iff_of_negativeFlag :=
SignedOrbit.lt_mul_left_iff_of_negativeFlag
signed_le_mul_right_iff_of_negativeFlag :=
SignedOrbit.le_mul_right_iff_of_negativeFlag
signed_lt_mul_right_iff_of_negativeFlag :=
SignedOrbit.lt_mul_right_iff_of_negativeFlag
signed_abs_mul_eq_zero_iff := SignedOrbit.abs_mul_eq_zero_iff
signed_abs_mul_ne_zero_iff := SignedOrbit.abs_mul_ne_zero_iff
signed_abs_mul_eq_zero_iff_balanced_zero :=
SignedOrbit.abs_mul_eq_zero_iff_balanced_zero
signed_abs_mul_ne_zero_iff_not_balanced_zero :=
SignedOrbit.abs_mul_ne_zero_iff_not_balanced_zero
signed_abs_scaleByNat := SignedOrbit.abs_scaleByNat
signed_abs_mul_ofOrbit_right := SignedOrbit.abs_mul_ofOrbit_right
signed_abs_mul_ofOrbit_left := SignedOrbit.abs_mul_ofOrbit_left
signed_mul_ofOrbit_right_balanced_zero_iff :=
SignedOrbit.mul_ofOrbit_right_balanced_zero_iff
signed_mul_ofOrbit_left_balanced_zero_iff :=
SignedOrbit.mul_ofOrbit_left_balanced_zero_iff
signed_mul_ofOrbit_right_not_balanced_zero_iff :=
SignedOrbit.mul_ofOrbit_right_not_balanced_zero_iff
signed_mul_ofOrbit_left_not_balanced_zero_iff :=
SignedOrbit.mul_ofOrbit_left_not_balanced_zero_iff
signed_nonnegFlag_scaleByNat_of_ne_zero :=
SignedOrbit.nonnegFlag_scaleByNat_of_ne_zero
signed_negativeFlag_scaleByNat_of_ne_zero :=
SignedOrbit.negativeFlag_scaleByNat_of_ne_zero
signed_scaleByNat_balanced_zero_iff := SignedOrbit.scaleByNat_balanced_zero_iff
signed_scaleByNat_not_balanced_zero_iff :=
SignedOrbit.scaleByNat_not_balanced_zero_iff
signed_abs_scaleByNat_eq_zero_iff := SignedOrbit.abs_scaleByNat_eq_zero_iff
signed_abs_scaleByNat_ne_zero_iff := SignedOrbit.abs_scaleByNat_ne_zero_iff
signed_abs_mul_ofOrbit_right_eq_zero_iff :=
SignedOrbit.abs_mul_ofOrbit_right_eq_zero_iff
signed_abs_mul_ofOrbit_left_eq_zero_iff :=
SignedOrbit.abs_mul_ofOrbit_left_eq_zero_iff
signed_abs_mul_ofOrbit_right_ne_zero_iff :=
SignedOrbit.abs_mul_ofOrbit_right_ne_zero_iff
signed_abs_mul_ofOrbit_left_ne_zero_iff :=
SignedOrbit.abs_mul_ofOrbit_left_ne_zero_iff
signed_le_scaleByNat_of_le := by
intro z w
exact SignedOrbit.le_scaleByNat_of_le
signed_le_scaleByNat_iff_of_ne_zero :=
SignedOrbit.le_scaleByNat_iff_of_ne_zero
signed_lt_scaleByNat_iff_of_ne_zero :=
SignedOrbit.lt_scaleByNat_iff_of_ne_zero
signed_balanced_scaleByNat_iff_of_ne_zero :=
SignedOrbit.balanced_scaleByNat_iff_of_ne_zero
signed_cmp_scaleByNat_of_ne_zero :=
SignedOrbit.cmp_scaleByNat_of_ne_zero
signed_le_mul_ofOrbit_right_iff_of_ne_zero :=
SignedOrbit.le_mul_ofOrbit_right_iff_of_ne_zero
signed_lt_mul_ofOrbit_right_iff_of_ne_zero :=
SignedOrbit.lt_mul_ofOrbit_right_iff_of_ne_zero
signed_balanced_mul_ofOrbit_right_iff_of_ne_zero :=
SignedOrbit.balanced_mul_ofOrbit_right_iff_of_ne_zero
signed_cmp_mul_ofOrbit_right_of_ne_zero :=
SignedOrbit.cmp_mul_ofOrbit_right_of_ne_zero
signed_le_mul_ofOrbit_left_iff_of_ne_zero :=
SignedOrbit.le_mul_ofOrbit_left_iff_of_ne_zero
signed_lt_mul_ofOrbit_left_iff_of_ne_zero :=
SignedOrbit.lt_mul_ofOrbit_left_iff_of_ne_zero
signed_balanced_mul_ofOrbit_left_iff_of_ne_zero :=
SignedOrbit.balanced_mul_ofOrbit_left_iff_of_ne_zero
signed_cmp_mul_ofOrbit_left_of_ne_zero :=
SignedOrbit.cmp_mul_ofOrbit_left_of_ne_zero
signed_cmp_mul_left_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.cmp_mul_left_of_nonnegFlag_of_not_balanced_zero
signed_cmp_mul_right_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.cmp_mul_right_of_nonnegFlag_of_not_balanced_zero
signed_cmp_mul_left_of_negativeFlag :=
SignedOrbit.cmp_mul_left_of_negativeFlag
signed_cmp_mul_right_of_negativeFlag :=
SignedOrbit.cmp_mul_right_of_negativeFlag
signed_nonnegFlag_mul_of_nonnegFlag_of_nonnegFlag :=
SignedOrbit.nonnegFlag_mul_of_nonnegFlag_of_nonnegFlag
signed_nonnegFlag_mul_of_negativeFlag_of_negativeFlag :=
SignedOrbit.nonnegFlag_mul_of_negativeFlag_of_negativeFlag
signed_negativeFlag_mul_of_nonnegFlag_of_not_balanced_zero_of_negativeFlag :=
SignedOrbit.negativeFlag_mul_of_nonnegFlag_of_not_balanced_zero_of_negativeFlag
signed_negativeFlag_mul_of_negativeFlag_of_nonnegFlag_of_not_balanced_zero :=
SignedOrbit.negativeFlag_mul_of_negativeFlag_of_nonnegFlag_of_not_balanced_zero
signed_negativeFlag_mul_iff := SignedOrbit.negativeFlag_mul_iff
signed_nonnegFlag_mul_iff_not_strict_opposite_sign :=
SignedOrbit.nonnegFlag_mul_iff_not_strict_opposite_sign
signed_nonnegFlag_mul_of_balanced_zero_left :=
SignedOrbit.nonnegFlag_mul_of_balanced_zero_left
signed_nonnegFlag_mul_of_balanced_zero_right :=
SignedOrbit.nonnegFlag_mul_of_balanced_zero_right
signed_negativeFlag_mul_eq_false_of_balanced_zero_left :=
SignedOrbit.negativeFlag_mul_eq_false_of_balanced_zero_left
signed_negativeFlag_mul_eq_false_of_balanced_zero_right :=
SignedOrbit.negativeFlag_mul_eq_false_of_balanced_zero_right
signed_mul_balanced_zero_of_balanced_zero_left :=
SignedOrbit.mul_balanced_zero_of_balanced_zero_left
signed_mul_balanced_zero_of_balanced_zero_right :=
SignedOrbit.mul_balanced_zero_of_balanced_zero_right
signed_abs_mul_eq_zero_of_balanced_zero_left :=
SignedOrbit.abs_mul_eq_zero_of_balanced_zero_left
signed_abs_mul_eq_zero_of_balanced_zero_right :=
SignedOrbit.abs_mul_eq_zero_of_balanced_zero_right
signed_mul_congr_of_balanced := by
intro a a' b b'
exact SignedOrbit.mul_congr_of_balanced
signed_mul_congr_of_balanced_left := by
intro a a' b
exact SignedOrbit.mul_congr_of_balanced_left
signed_mul_congr_of_balanced_right := by
intro a b b'
exact SignedOrbit.mul_congr_of_balanced_right
signed_nonnegFlag_mul_eq_of_balanced := by
intro a a' b b'
exact SignedOrbit.nonnegFlag_mul_eq_of_balanced
signed_nonnegFlag_mul_eq_of_balanced_left := by
intro a a' b
exact SignedOrbit.nonnegFlag_mul_eq_of_balanced_left
signed_nonnegFlag_mul_eq_of_balanced_right := by
intro a b b'
exact SignedOrbit.nonnegFlag_mul_eq_of_balanced_right
signed_negativeFlag_mul_eq_of_balanced := by
intro a a' b b'
exact SignedOrbit.negativeFlag_mul_eq_of_balanced
signed_negativeFlag_mul_eq_of_balanced_left := by
intro a a' b
exact SignedOrbit.negativeFlag_mul_eq_of_balanced_left
signed_negativeFlag_mul_eq_of_balanced_right := by
intro a b b'
exact SignedOrbit.negativeFlag_mul_eq_of_balanced_right
signed_abs_mul_eq_of_balanced := by
intro a a' b b'
exact SignedOrbit.abs_mul_eq_of_balanced
signed_abs_mul_eq_of_balanced_left := by
intro a a' b
exact SignedOrbit.abs_mul_eq_of_balanced_left
signed_abs_mul_eq_of_balanced_right := by
intro a b b'
exact SignedOrbit.abs_mul_eq_of_balanced_right
signed_mul_balanced_zero_iff_of_balanced_left := by
intro a a' b
exact SignedOrbit.mul_balanced_zero_iff_of_balanced_left
signed_mul_balanced_zero_iff_of_balanced_right := by
intro a b b'
exact SignedOrbit.mul_balanced_zero_iff_of_balanced_right
signed_abs_mul_eq_zero_iff_of_balanced_left := by
intro a a' b
exact SignedOrbit.abs_mul_eq_zero_iff_of_balanced_left
signed_abs_mul_eq_zero_iff_of_balanced_right := by
intro a b b'
exact SignedOrbit.abs_mul_eq_zero_iff_of_balanced_right
signed_abs_mul_ne_zero_iff_of_balanced_left := b
-- … truncated for the page; open the module for the rest.
What this page does not claim
This module does not define the cost function J or prove its uniqueness. It does not establish the golden ratio or the eight-tick recognition cycle. It does not connect the integer order to any physical measurement or empirical prediction.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- How are signed orbits constructed from the primitive ledger of recognition events?
- What is the ratio orbit, and how does its order relate to the integer order?
- Which later theorems in the framework rely on the total order of signed orbits?
- Does the order on signed orbits extend to a full ordered ring structure?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM le_total · le_trans · cmp_add_left · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
theorem le_total (a b : SignedOrbit) : SignedOrbit.le a b ∨ SignedOrbit.le b a := by rw [SignedOrbit.le_iff_toInt_le, SignedOrbit.le_iff_toInt_le] omegatheorem le_trans {a b c : SignedOrbit} (hab : SignedOrbit.le a b) (hbc : SignedOrbit.le b c) : SignedOrbit.le a c := by rw [SignedOrbit.le_iff_toInt_le] at * omegatheorem cmp_add_left (a b c : SignedOrbit) : SignedOrbit.cmp (SignedOrbit.add c a) (SignedOrbit.add c b) = SignedOrbit.cmp a b := by cases hcmp : SignedOrbit.cmp a b with | lt => have hlt : SignedOrbit.lt a b := (SignedOrbit.cmp_eq_lt_iff a b).mp hcmp exact SignedOrbit.cmp_eq_lt_of_lt ((SignedOrbit.lt_add_left_iff a b c).mpr hlt) | eq => have hbal : SignedOrbit.balanced a b := (SignedOrbit.cmp_eq_eq_iff a b).mp hcmp exact SignedOrbit.cmp_eq_eq_of_balanced ((SignedOrbit.balanced_add_left_iff a b c).mpr hbal) | gt => have hgt : SignedOrbit.lt b a := (SignedOrbit.cmp_eq_gt_iff a b).mp hcmp exact SignedOrbit.cmp_eq_gt_of_gt ((SignedOrbit.lt_add_left_iff b a c).mpr hgt)The library shows that every pair of signed orbits is comparable, that the comparison is transitive, and that adding the same orbit to both sides of a comparison leaves the result unchanged. le_total · le_trans · cmp_add_left · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.leanTHEOREM cmp_eq_lt_iff · cmp_eq_gt_iff · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
theorem cmp_eq_lt_iff (a b : SignedOrbit) : SignedOrbit.cmp a b = Ordering.lt ↔ SignedOrbit.lt a b := by constructor · intro hcmp unfold SignedOrbit.cmp at hcmp by_cases hbal : SignedOrbit.balanced a b · simp [hbal] at hcmp · by_cases hflag : (SignedOrbit.sub b a).nonnegFlag = true · rw [SignedOrbit.lt_iff_toInt_lt] rw [SignedOrbit.nonnegFlag_eq_true_iff, SignedOrbit.sub_toInt] at hflag rw [SignedOrbit.balanced_iff_toInt_eq] at hbal omega · simp [hbal, hflag] at hcmp · intro hlt exact SignedOrbit.cmp_eq_lt_of_lt hlttheorem cmp_eq_gt_iff (a b : SignedOrbit) : SignedOrbit.cmp a b = Ordering.gt ↔ SignedOrbit.lt b a := by constructor · intro hcmp unfold SignedOrbit.cmp at hcmp by_cases hbal : SignedOrbit.balanced a b · simp [hbal] at hcmp · by_cases hflag : (SignedOrbit.sub b a).nonnegFlag = true · simp [hbal, hflag] at hcmp · rw [SignedOrbit.lt_iff_toInt_lt] have hflagFalse : (SignedOrbit.sub b a).nonnegFlag = false := by cases hbranch : (SignedOrbit.sub b a).nonnegFlag with | false => rfl | true => exfalso exact hflag hbranch rw [SignedOrbit.nonnegFlag_eq_false_iff, SignedOrbit.sub_toInt] at hflagFalse omega · intro hgt exact SignedOrbit.cmp_eq_gt_of_gt hgtThe library proves that this function is consistent with the underlying order relation: if cmp a b says less, then a is indeed less than b, and similarly for greater. cmp_eq_lt_iff · cmp_eq_gt_iff · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.leanTHEOREM integer_order_certificate · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean
/-- The internal signed-orbit order surface is closed. -/ theorem integer_order_certificate : IntegerOrderCertificate where truncated_sub_display := DistinctionNat.toNat_truncatedSub leq_display := DistinctionNat.leq_eq_true_iff absdiff_display := DistinctionNat.toNat_absDiff signed_nonneg_display := SignedOrbit.nonneg_iff_toInt_nonneg signed_nonneg_flag_display := SignedOrbit.nonnegFlag_eq_true_iff signed_abs_display := SignedOrbit.abs_toNat signed_le_display := SignedOrbit.le_iff_toInt_le signed_lt_display := SignedOrbit.lt_iff_toInt_lt abs_nonzero_internal := by intro z h exact SignedOrbit.abs_ne_zero_of_not_balanced_zero h signed_le_reflexive := SignedOrbit.le_refl signed_le_transitive := by intro a b c exact SignedOrbit.le_trans signed_le_antisymmetric_balanced := by intro a b exact SignedOrbit.le_antisymm_balanced signed_le_total := SignedOrbit.le_total signed_order_trichotomy := SignedOrbit.trichotomy signed_negativeFlag_eq_true_iff_nonnegFlag_eq_false := SignedOrbit.negativeFlag_eq_true_iff_nonnegFlag_eq_false signed_negativeFlag_eq_false_iff_nonnegFlag_eq_true := SignedOrbit.negativeFlag_eq_false_iff_nonnegFlag_eq_true signed_flags_exclusive := SignedOrbit.signFlags_exclusive signed_flags_exhaustive := SignedOrbit.signFlags_exhaustive signed_zero_le_iff_nonnegFlag := SignedOrbit.zero_le_iff_nonnegFlag signed_lt_zero_iff_negativeFlag := SignedOrbit.lt_zero_iff_negativeFlag signed_zero_lt_iff_nonnegFlag_and_not_balanced_zero := SignedOrbit.zero_lt_iff_nonnegFlag_and_not_balanced_zero signed_nonnegFlag_eq_of_balanced := by intro z w exact SignedOrbit.nonnegFlag_eq_of_balanced signed_negativeFlag_eq_of_balanced := by intro z w exact SignedOrbit.negativeFlag_eq_of_balanced signed_nonneg_iff_of_balanced := by intro z w exact SignedOrbit.nonneg_iff_of_balanced signed_add_congr_of_balanced := by intro a a' b b' exact SignedOrbit.add_congr_of_balanced signed_negate_congr_of_balanced := by intro a a' exact SignedOrbit.negate_congr_of_balanced signed_sub_congr_of_balanced := by intro a a' b b' exact SignedOrbit.sub_congr_of_balanced signed_sub_congr_of_balanced_left := by intro a a' b exact SignedOrbit.sub_congr_of_balanced_left signed_sub_congr_of_balanced_right := by intro a b b' exact SignedOrbit.sub_congr_of_balanced_right signed_nonnegFlag_sub_eq_of_balanced_left := by intro a a' b exact SignedOrbit.nonnegFlag_sub_eq_of_balanced_left signed_nonnegFlag_sub_eq_of_balanced_right := by intro a b b' exact SignedOrbit.nonnegFlag_sub_eq_of_balanced_right signed_negativeFlag_sub_eq_of_balanced_left := by intro a a' b exact SignedOrbit.negativeFlag_sub_eq_of_balanced_left signed_negativeFlag_sub_eq_of_balanced_right := by intro a b b' exact SignedOrbit.negativeFlag_sub_eq_of_balanced_right signed_nonnegFlag_sub_eq_of_balanced := by intro a a' b b' exact SignedOrbit.nonnegFlag_sub_eq_of_balanced signed_negativeFlag_sub_eq_of_balanced := by intro a a' b b' exact SignedOrbit.negativeFlag_sub_eq_of_balanced signed_scaleByNat_congr_of_balanced := by intro z w exact SignedOrbit.scaleByNat_congr_of_balanced signed_scaleByNat_balanced_zero_of_balanced_zero := by intro z exact SignedOrbit.scaleByNat_balanced_zero_of_balanced_zero signed_mul_ofOrbit_balanced_scaleByNat := SignedOrbit.mul_ofOrbit_balanced_scaleByNat signed_ofOrbit_mul_balanced_scaleByNat := SignedOrbit.ofOrbit_mul_balanced_scaleByNat signed_abs_mul := SignedOrbit.abs_mul signed_mul_balanced_zero_iff := SignedOrbit.mul_balanced_zero_iff signed_mul_not_balanced_zero_iff := SignedOrbit.mul_not_balanced_zero_iff signed_balanced_mul_left_iff_of_not_balanced_zero := SignedOrbit.balanced_mul_left_iff_of_not_balanced_zero signed_balanced_mul_right_iff_of_not_balanced_zero := SignedOrbit.balanced_mul_right_iff_of_not_balanced_zero signed_le_mul_left_iff_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.le_mul_left_iff_of_nonnegFlag_of_not_balanced_zero signed_lt_mul_left_iff_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.lt_mul_left_iff_of_nonnegFlag_of_not_balanced_zero signed_le_mul_right_iff_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.le_mul_right_iff_of_nonnegFlag_of_not_balanced_zero signed_lt_mul_right_iff_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.lt_mul_right_iff_of_nonnegFlag_of_not_balanced_zero signed_le_mul_left_iff_of_negativeFlag := SignedOrbit.le_mul_left_iff_of_negativeFlag signed_lt_mul_left_iff_of_negativeFlag := SignedOrbit.lt_mul_left_iff_of_negativeFlag signed_le_mul_right_iff_of_negativeFlag := SignedOrbit.le_mul_right_iff_of_negativeFlag signed_lt_mul_right_iff_of_negativeFlag := SignedOrbit.lt_mul_right_iff_of_negativeFlag signed_abs_mul_eq_zero_iff := SignedOrbit.abs_mul_eq_zero_iff signed_abs_mul_ne_zero_iff := SignedOrbit.abs_mul_ne_zero_iff signed_abs_mul_eq_zero_iff_balanced_zero := SignedOrbit.abs_mul_eq_zero_iff_balanced_zero signed_abs_mul_ne_zero_iff_not_balanced_zero := SignedOrbit.abs_mul_ne_zero_iff_not_balanced_zero signed_abs_scaleByNat := SignedOrbit.abs_scaleByNat signed_abs_mul_ofOrbit_right := SignedOrbit.abs_mul_ofOrbit_right signed_abs_mul_ofOrbit_left := SignedOrbit.abs_mul_ofOrbit_left signed_mul_ofOrbit_right_balanced_zero_iff := SignedOrbit.mul_ofOrbit_right_balanced_zero_iff signed_mul_ofOrbit_left_balanced_zero_iff := SignedOrbit.mul_ofOrbit_left_balanced_zero_iff signed_mul_ofOrbit_right_not_balanced_zero_iff := SignedOrbit.mul_ofOrbit_right_not_balanced_zero_iff signed_mul_ofOrbit_left_not_balanced_zero_iff := SignedOrbit.mul_ofOrbit_left_not_balanced_zero_iff signed_nonnegFlag_scaleByNat_of_ne_zero := SignedOrbit.nonnegFlag_scaleByNat_of_ne_zero signed_negativeFlag_scaleByNat_of_ne_zero := SignedOrbit.negativeFlag_scaleByNat_of_ne_zero signed_scaleByNat_balanced_zero_iff := SignedOrbit.scaleByNat_balanced_zero_iff signed_scaleByNat_not_balanced_zero_iff := SignedOrbit.scaleByNat_not_balanced_zero_iff signed_abs_scaleByNat_eq_zero_iff := SignedOrbit.abs_scaleByNat_eq_zero_iff signed_abs_scaleByNat_ne_zero_iff := SignedOrbit.abs_scaleByNat_ne_zero_iff signed_abs_mul_ofOrbit_right_eq_zero_iff := SignedOrbit.abs_mul_ofOrbit_right_eq_zero_iff signed_abs_mul_ofOrbit_left_eq_zero_iff := SignedOrbit.abs_mul_ofOrbit_left_eq_zero_iff signed_abs_mul_ofOrbit_right_ne_zero_iff := SignedOrbit.abs_mul_ofOrbit_right_ne_zero_iff signed_abs_mul_ofOrbit_left_ne_zero_iff := SignedOrbit.abs_mul_ofOrbit_left_ne_zero_iff signed_le_scaleByNat_of_le := by intro z w exact SignedOrbit.le_scaleByNat_of_le signed_le_scaleByNat_iff_of_ne_zero := SignedOrbit.le_scaleByNat_iff_of_ne_zero signed_lt_scaleByNat_iff_of_ne_zero := SignedOrbit.lt_scaleByNat_iff_of_ne_zero signed_balanced_scaleByNat_iff_of_ne_zero := SignedOrbit.balanced_scaleByNat_iff_of_ne_zero signed_cmp_scaleByNat_of_ne_zero := SignedOrbit.cmp_scaleByNat_of_ne_zero signed_le_mul_ofOrbit_right_iff_of_ne_zero := SignedOrbit.le_mul_ofOrbit_right_iff_of_ne_zero signed_lt_mul_ofOrbit_right_iff_of_ne_zero := SignedOrbit.lt_mul_ofOrbit_right_iff_of_ne_zero signed_balanced_mul_ofOrbit_right_iff_of_ne_zero := SignedOrbit.balanced_mul_ofOrbit_right_iff_of_ne_zero signed_cmp_mul_ofOrbit_right_of_ne_zero := SignedOrbit.cmp_mul_ofOrbit_right_of_ne_zero signed_le_mul_ofOrbit_left_iff_of_ne_zero := SignedOrbit.le_mul_ofOrbit_left_iff_of_ne_zero signed_lt_mul_ofOrbit_left_iff_of_ne_zero := SignedOrbit.lt_mul_ofOrbit_left_iff_of_ne_zero signed_balanced_mul_ofOrbit_left_iff_of_ne_zero := SignedOrbit.balanced_mul_ofOrbit_left_iff_of_ne_zero signed_cmp_mul_ofOrbit_left_of_ne_zero := SignedOrbit.cmp_mul_ofOrbit_left_of_ne_zero signed_cmp_mul_left_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.cmp_mul_left_of_nonnegFlag_of_not_balanced_zero signed_cmp_mul_right_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.cmp_mul_right_of_nonnegFlag_of_not_balanced_zero signed_cmp_mul_left_of_negativeFlag := SignedOrbit.cmp_mul_left_of_negativeFlag signed_cmp_mul_right_of_negativeFlag := SignedOrbit.cmp_mul_right_of_negativeFlag signed_nonnegFlag_mul_of_nonnegFlag_of_nonnegFlag := SignedOrbit.nonnegFlag_mul_of_nonnegFlag_of_nonnegFlag signed_nonnegFlag_mul_of_negativeFlag_of_negativeFlag := SignedOrbit.nonnegFlag_mul_of_negativeFlag_of_negativeFlag signed_negativeFlag_mul_of_nonnegFlag_of_not_balanced_zero_of_negativeFlag := SignedOrbit.negativeFlag_mul_of_nonnegFlag_of_not_balanced_zero_of_negativeFlag signed_negativeFlag_mul_of_negativeFlag_of_nonnegFlag_of_not_balanced_zero := SignedOrbit.negativeFlag_mul_of_negativeFlag_of_nonnegFlag_of_not_balanced_zero signed_negativeFlag_mul_iff := SignedOrbit.negativeFlag_mul_iff signed_nonnegFlag_mul_iff_not_strict_opposite_sign := SignedOrbit.nonnegFlag_mul_iff_not_strict_opposite_sign signed_nonnegFlag_mul_of_balanced_zero_left := SignedOrbit.nonnegFlag_mul_of_balanced_zero_left signed_nonnegFlag_mul_of_balanced_zero_right := SignedOrbit.nonnegFlag_mul_of_balanced_zero_right signed_negativeFlag_mul_eq_false_of_balanced_zero_left := SignedOrbit.negativeFlag_mul_eq_false_of_balanced_zero_left signed_negativeFlag_mul_eq_false_of_balanced_zero_right := SignedOrbit.negativeFlag_mul_eq_false_of_balanced_zero_right signed_mul_balanced_zero_of_balanced_zero_left := SignedOrbit.mul_balanced_zero_of_balanced_zero_left signed_mul_balanced_zero_of_balanced_zero_right := SignedOrbit.mul_balanced_zero_of_balanced_zero_right signed_abs_mul_eq_zero_of_balanced_zero_left := SignedOrbit.abs_mul_eq_zero_of_balanced_zero_left signed_abs_mul_eq_zero_of_balanced_zero_right := SignedOrbit.abs_mul_eq_zero_of_balanced_zero_right signed_mul_congr_of_balanced := by intro a a' b b' exact SignedOrbit.mul_congr_of_balanced signed_mul_congr_of_balanced_left := by intro a a' b exact SignedOrbit.mul_congr_of_balanced_left signed_mul_congr_of_balanced_right := by intro a b b' exact SignedOrbit.mul_congr_of_balanced_right signed_nonnegFlag_mul_eq_of_balanced := by intro a a' b b' exact SignedOrbit.nonnegFlag_mul_eq_of_balanced signed_nonnegFlag_mul_eq_of_balanced_left := by intro a a' b exact SignedOrbit.nonnegFlag_mul_eq_of_balanced_left signed_nonnegFlag_mul_eq_of_balanced_right := by intro a b b' exact SignedOrbit.nonnegFlag_mul_eq_of_balanced_right signed_negativeFlag_mul_eq_of_balanced := by intro a a' b b' exact SignedOrbit.negativeFlag_mul_eq_of_balanced signed_negativeFlag_mul_eq_of_balanced_left := by intro a a' b exact SignedOrbit.negativeFlag_mul_eq_of_balanced_left signed_negativeFlag_mul_eq_of_balanced_right := by intro a b b' exact SignedOrbit.negativeFlag_mul_eq_of_balanced_right signed_abs_mul_eq_of_balanced := by intro a a' b b' exact SignedOrbit.abs_mul_eq_of_balanced signed_abs_mul_eq_of_balanced_left := by intro a a' b exact SignedOrbit.abs_mul_eq_of_balanced_left signed_abs_mul_eq_of_balanced_right := by intro a b b' exact SignedOrbit.abs_mul_eq_of_balanced_right signed_mul_balanced_zero_iff_of_balanced_left := by intro a a' b exact SignedOrbit.mul_balanced_zero_iff_of_balanced_left signed_mul_balanced_zero_iff_of_balanced_right := by intro a b b' exact SignedOrbit.mul_balanced_zero_iff_of_balanced_right signed_abs_mul_eq_zero_iff_of_balanced_left := by intro a a' b exact SignedOrbit.abs_mul_eq_zero_iff_of_balanced_left signed_abs_mul_eq_zero_iff_of_balanced_right := by intro a b b' exact SignedOrbit.abs_mul_eq_zero_iff_of_balanced_right signed_abs_mul_ne_zero_iff_of_balanced_left := b -- … truncated for the page; open the module for the rest.The module also establishes a certificate, a single theorem that bundles all these order properties into one statement. integer_order_certificate · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/IntegerOrder.lean