Skip to content

Commit

Permalink
Add some lemmas to the Lean backend
Browse files Browse the repository at this point in the history
  • Loading branch information
sonmarcho committed Jan 27, 2024
1 parent c709ead commit d8247d9
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions backends/lean/Base/Primitives/Scalar.lean
Original file line number Diff line number Diff line change
Expand Up @@ -1038,16 +1038,26 @@ instance {ty} : LT (Scalar ty) where

instance {ty} : LE (Scalar ty) where le a b := LE.le a.val b.val

-- Not marking this one with @[simp] on purpose
theorem Scalar.eq_equiv {ty : ScalarTy} (x y : Scalar ty) :
x = y ↔ x.val = y.val := by
cases x; cases y; simp_all

-- This is sometimes useful when rewriting the goal with the local assumptions
@[simp] theorem Scalar.eq_imp {ty : ScalarTy} (x y : Scalar ty) :
x = y → x.val = y.val := (eq_equiv x y).mp

theorem Scalar.lt_equiv {ty : ScalarTy} (x y : Scalar ty) :
x < y ↔ x.val < y.val := by simp [LT.lt]

@[simp] theorem Scalar.lt_imp {ty : ScalarTy} (x y : Scalar ty) :
x < y → x.val < y.val := (lt_equiv x y).mp

theorem Scalar.le_equiv {ty : ScalarTy} (x y : Scalar ty) :
x ≤ y ↔ x.val ≤ y.val := by simp [LE.le]

-- Not marking this one with @[simp] on purpose
theorem Scalar.eq_equiv {ty : ScalarTy} (x y : Scalar ty) :
x = y ↔ x.val = y.val := by
cases x; cases y; simp_all
@[simp] theorem Scalar.le_imp {ty : ScalarTy} (x y : Scalar ty) :
x ≤ y → x.val ≤ y.val := (le_equiv x y).mp

instance Scalar.decLt {ty} (a b : Scalar ty) : Decidable (LT.lt a b) := Int.decLt ..
instance Scalar.decLe {ty} (a b : Scalar ty) : Decidable (LE.le a b) := Int.decLe ..
Expand Down

0 comments on commit d8247d9

Please sign in to comment.