Orders #
Defines classes for linear orders and proves some basic lemmas about them.
Definition of LinearOrder
and lemmas about types with a linear order #
This attempts to prove that a given instance of compare
is equal to compareOfLessAndEq
by
introducing the arguments and trying the following approaches in order:
- seeing if
rfl
works - seeing if the
compare
at hand is nonetheless essentiallycompareOfLessAndEq
, but, because of implicit arguments, requires us to unfold the defs and split theif
s in the definition ofcompareOfLessAndEq
- seeing if we can split by cases on the arguments, then see if the defs work themselves out
(useful when
compare
is defined via amatch
statement, as it is forBool
)
Equations
- tacticCompareOfLessAndEq_rfl = Lean.ParserDescr.node `tacticCompareOfLessAndEq_rfl 1024 (Lean.ParserDescr.nonReservedSymbol "compareOfLessAndEq_rfl" false)
Instances For
A linear order is reflexive, transitive, antisymmetric and total relation ≤
.
We assume that every linear ordered type has decidable (≤)
, (<)
, and (=)
.
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- min : α → α → α
- max : α → α → α
A linear order is total.
- decidableLE : DecidableRel fun (x1 x2 : α) => x1 ≤ x2
In a linearly ordered type, we assume the order relations are all decidable.
- decidableEq : DecidableEq α
In a linearly ordered type, we assume the order relations are all decidable.
- decidableLT : DecidableRel fun (x1 x2 : α) => x1 < x2
In a linearly ordered type, we assume the order relations are all decidable.
The minimum function is equivalent to the one you get from
minOfLe
.The minimum function is equivalent to the one you get from
maxOfLe
.- compare_eq_compareOfLessAndEq : ∀ (a b : α), compare a b = compareOfLessAndEq a b
Comparison via
compare
is equal to the canonical comparison given decidable<
and=
.
Instances
Equations
Equations
Equations
Deprecated properties of inequality on Nat
Equations
- Nat.ltGeByCases h₁ h₂ = Decidable.byCases h₁ fun (h : ¬a < b) => h₂ ⋯
Instances For
Equations
- Nat.ltByCases h₁ h₂ h₃ = Nat.ltGeByCases h₁ fun (h₁ : b ≤ a) => Nat.ltGeByCases h₃ fun (h : a ≤ b) => h₂ ⋯