File: Mathlib/Tactic/NormNum/Ineq.lean

full_name: Mathlib.Meta.NormNum.inferOrderedSemiring
code: /-- Helper function to synthesize a typed `OrderedSemiring α` expression. -/
def inferOrderedSemiring (α : Q(Type u)) : MetaM Q(OrderedSemiring $α) 
goal: Lean.MetaM Q(OrderedSemiring «$α»)

full_name: Mathlib.Meta.NormNum.inferOrderedRing
code: /-- Helper function to synthesize a typed `OrderedRing α` expression. -/
def inferOrderedRing (α : Q(Type u)) : MetaM Q(OrderedRing $α) 
goal: Lean.MetaM Q(OrderedRing «$α»)

full_name: Mathlib.Meta.NormNum.inferLinearOrderedField
code: /-- Helper function to synthesize a typed `LinearOrderedField α` expression. -/
def inferLinearOrderedField (α : Q(Type u)) : MetaM Q(LinearOrderedField $α) 
goal: Lean.MetaM Q(LinearOrderedField «$α»)

full_name: Mathlib.Meta.NormNum.isNat_le_true
code: theorem isNat_le_true [OrderedSemiring α] : {a b : α} → {a' b' : ℕ} →
    IsNat a a' → IsNat b b' → Nat.ble a' b' = true → a ≤ b
  
goal: Mathlib.Meta.NormNum.IsNat a a' → Mathlib.Meta.NormNum.IsNat b b' → a'.ble b' = true → a ≤ b

full_name: Mathlib.Meta.NormNum.isNat_lt_false
code: theorem isNat_lt_false [OrderedSemiring α] {a b : α} {a' b' : ℕ}
    (ha : IsNat a a') (hb : IsNat b b') (h : Nat.ble b' a' = true) : ¬a < b 
goal: ¬a < b

full_name: Mathlib.Meta.NormNum.isRat_le_true
code: theorem isRat_le_true [LinearOrderedRing α] : {a b : α} → {na nb : ℤ} → {da db : ℕ} →
    IsRat a na da → IsRat b nb db →
    decide (Int.mul na (.ofNat db) ≤ Int.mul nb (.ofNat da)) → a ≤ b
  
goal: Mathlib.Meta.NormNum.IsRat a na da →
  Mathlib.Meta.NormNum.IsRat b nb db → decide (na.mul (Int.ofNat db) ≤ nb.mul (Int.ofNat da)) = true → a ≤ b

full_name: Mathlib.Meta.NormNum.isRat_lt_true
code: theorem isRat_lt_true [LinearOrderedRing α] [Nontrivial α] : {a b : α} → {na nb : ℤ} → {da db : ℕ} →
    IsRat a na da → IsRat b nb db → decide (na * db < nb * da) → a < b
  
goal: Mathlib.Meta.NormNum.IsRat a na da → Mathlib.Meta.NormNum.IsRat b nb db → decide (na * ↑db < nb * ↑da) = true → a < b

full_name: Mathlib.Meta.NormNum.isRat_le_false
code: theorem isRat_le_false [LinearOrderedRing α] [Nontrivial α] {a b : α} {na nb : ℤ} {da db : ℕ}
    (ha : IsRat a na da) (hb : IsRat b nb db) (h : decide (nb * da < na * db)) : ¬a ≤ b 
goal: ¬a ≤ b

full_name: Mathlib.Meta.NormNum.isRat_lt_false
code: theorem isRat_lt_false [LinearOrderedRing α] {a b : α} {na nb : ℤ} {da db : ℕ}
    (ha : IsRat a na da) (hb : IsRat b nb db) (h : decide (nb * da ≤ na * db)) : ¬a < b 
goal: ¬a < b

full_name: Mathlib.Meta.NormNum.isNat_lt_true
code: theorem isNat_lt_true [OrderedSemiring α] [CharZero α] : {a b : α} → {a' b' : ℕ} →
    IsNat a a' → IsNat b b' → Nat.ble b' a' = false → a < b
  
goal: Mathlib.Meta.NormNum.IsNat a a' → Mathlib.Meta.NormNum.IsNat b b' → b'.ble a' = false → a < b

full_name: Mathlib.Meta.NormNum.isNat_le_false
code: theorem isNat_le_false [OrderedSemiring α] [CharZero α] {a b : α} {a' b' : ℕ}
    (ha : IsNat a a') (hb : IsNat b b') (h : Nat.ble a' b' = false) : ¬a ≤ b 
goal: ¬a ≤ b

full_name: Mathlib.Meta.NormNum.isInt_le_true
code: theorem isInt_le_true [OrderedRing α] : {a b : α} → {a' b' : ℤ} →
    IsInt a a' → IsInt b b' → decide (a' ≤ b') → a ≤ b
  
goal: Mathlib.Meta.NormNum.IsInt a a' → Mathlib.Meta.NormNum.IsInt b b' → decide (a' ≤ b') = true → a ≤ b

full_name: Mathlib.Meta.NormNum.isInt_lt_true
code: theorem isInt_lt_true [OrderedRing α] [Nontrivial α] : {a b : α} → {a' b' : ℤ} →
    IsInt a a' → IsInt b b' → decide (a' < b') → a < b
  
goal: Mathlib.Meta.NormNum.IsInt a a' → Mathlib.Meta.NormNum.IsInt b b' → decide (a' < b') = true → a < b

full_name: Mathlib.Meta.NormNum.isInt_le_false
code: theorem isInt_le_false [OrderedRing α] [Nontrivial α] {a b : α} {a' b' : ℤ}
    (ha : IsInt a a') (hb : IsInt b b') (h : decide (b' < a')) : ¬a ≤ b 
goal: ¬a ≤ b

full_name: Mathlib.Meta.NormNum.isInt_lt_false
code: theorem isInt_lt_false [OrderedRing α] {a b : α} {a' b' : ℤ}
    (ha : IsInt a a') (hb : IsInt b b') (h : decide (b' ≤ a')) : ¬a < b 
goal: ¬a < b

full_name: Mathlib.Meta.NormNum.evalLE.ratArm
code: /-- The `norm_num` extension which identifies expressions of the form `a ≤ b`,
such that `norm_num` successfully recognises both `a` and `b`. -/
@[norm_num _ ≤ _] def evalLE : NormNumExt 
goal: Lean.MetaM (Mathlib.Meta.NormNum.Result e)

full_name: Mathlib.Meta.NormNum.evalLE.intArm
code: /-- The `norm_num` extension which identifies expressions of the form `a ≤ b`,
such that `norm_num` successfully recognises both `a` and `b`. -/
@[norm_num _ ≤ _] def evalLE : NormNumExt 
goal: Lean.MetaM (Mathlib.Meta.NormNum.Result e)

full_name: Mathlib.Meta.NormNum.evalLE
code: /-- The `norm_num` extension which identifies expressions of the form `a ≤ b`,
such that `norm_num` successfully recognises both `a` and `b`. -/
@[norm_num _ ≤ _] def evalLE : NormNumExt 
goal: Mathlib.Meta.NormNum.NormNumExt

full_name: Mathlib.Meta.NormNum.evalLT.intArm
code: /-- The `norm_num` extension which identifies expressions of the form `a < b`,
such that `norm_num` successfully recognises both `a` and `b`. -/
@[norm_num _ < _] def evalLT : NormNumExt 
goal: Lean.MetaM (Mathlib.Meta.NormNum.Result e)

full_name: Mathlib.Meta.NormNum.evalLT.ratArm
code: /-- The `norm_num` extension which identifies expressions of the form `a < b`,
such that `norm_num` successfully recognises both `a` and `b`. -/
@[norm_num _ < _] def evalLT : NormNumExt 
goal: Lean.MetaM (Mathlib.Meta.NormNum.Result e)

full_name: Mathlib.Meta.NormNum.evalLT
code: /-- The `norm_num` extension which identifies expressions of the form `a < b`,
such that `norm_num` successfully recognises both `a` and `b`. -/
@[norm_num _ < _] def evalLT : NormNumExt 
goal: Mathlib.Meta.NormNum.NormNumExt