lean4-htt/tests/lean/run/grind_fin.lean
Kim Morrison 85f168bbd0
chore: add test cases for grind on Fin lemmas (#10241)
This PR adds some test cases for `grind` working with `Fin`. There are
many still failing tests in `tests/lean/grind/grind_fin.lean` which I'm
intending to triage and work on.
2025-09-04 04:28:29 +00:00

93 lines
3.6 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

open Fin
example (a b : Fin n) : (a % b).val = a.val % b.val := by grind
example (a b : Fin n) : (a * b).val = (a.val * b.val) % n := by grind
example (a : Fin n) : a < n := by grind
example {a b : Fin n} : a.1 ≠ b.1 ↔ a ≠ b := by grind
example (a : Fin n) : a < n := by grind
example {a b : Fin n} : a.1 ≠ b.1 ↔ a ≠ b := by grind
example (a : Fin 1) : a.val = 0 := by grind
example (a : Fin 2) : a.val = 0 a.val = 1 := by grind
example (a : Fin 37) : a.val < 47 := by grind
example (a : Fin (n + 37)) : a.val < n + 47 := by grind
example (a : Fin (2 * n + 1)) : a.val < 2 * (n + 1) := by grind
example {a b : Fin n} : a ≤ b ↔ a.1 ≤ b.1 := by grind
example {a b : Fin n} : a < b ↔ a.1 < b.1 := by grind
example {a b : Fin n} : a < b ↔ a.val < b.val := by grind
example {a b : Fin n} : ¬ a ≤ b ↔ b < a := by grind
example {a b : Fin n} : ¬ a < b ↔ b ≤ a := by grind
example (a : Fin n) : a ≤ a := by grind
example (a : Fin n) : ¬ a < a := by grind
example {a b c : Fin n} : a ≤ b → b ≤ c → a ≤ c := by grind
example {a b c : Fin n} : a < b → b < c → a < c := by grind
example (a b : Fin n) : a ≤ b b ≤ a := by grind
example {a b : Fin n} (h : a < b) : ¬ b < a := by grind
example {a b : Fin n} (h : a < b) : a ≠ b := by grind
example {a b : Fin n} (h : a < b) : b ≠ a := by grind
example {a b : Fin n} (h : a < b) : a ≤ b := by grind
example {a b c : Fin n} : a ≤ b → b < c → a < c := by grind
example {a b c : Fin n} : a < b → b ≤ c → a < c := by grind
example {a : Fin n} : a ≤ a := by grind
example {a b : Fin n} : a < b ↔ a ≤ b ∧ a ≠ b := by grind
example {a b : Fin n} (h : a ≠ b) : a < b b < a := by grind
example (a b : Fin n) : a < b b ≤ a := by grind
example (a b : Fin n) : a ≤ b b < a := by grind
example {a b : Fin n} (hab : a = b) : a ≤ b := by grind
example {a b : Fin n} (hab : a = b) : b ≤ a := by grind
example {a b : Fin n} : a ≤ b → a = b a < b := by grind
example {a b : Fin n} : a ≤ b → a < b a = b := by grind
example (i : Fin (n + 1)) : i.1 ≤ n := by grind
example {x y : Fin n} : x = y ↔ x ≤ y ∧ y ≤ x := by grind
example : (Fin.last 0 : Fin 1) = 0 := by grind
example (h : n ≤ m) (i : Fin n) : (castLE h i : Nat) = i := by grind
example {k : Nat} (h : n = m) (h' : m = k) {i : Fin n} :
(i.cast h).cast h' = i.cast (Eq.trans h h') := by grind
example (n : Nat) (j : Fin n) :
j.succ.castSucc = (j.castSucc).succ := by grind
example {n : Nat} (i : Fin n) : i.castSucc.succ = i.succ.castSucc := by grind
example {m n : Nat} {i : Fin m} : natAdd n (castSucc i) = castSucc (natAdd n i) := by grind
example (i : Fin n) : i.succ.castSucc = i.castSucc.succ := by grind
example (h : n ≤ n) (i : Fin n) : i.castLE h = i := by grind
example (h : n ≤ m) (i : Fin n) :
(i.castLE h).castSucc = i.castLE (by omega) := by grind
example (n : Nat) (i : Fin k) :
(i.natAdd n).castSucc = (i.castSucc).natAdd n := by grind
example : ∀ {a b : Fin 2}, (a = 0 ↔ b = 0) → a = b := by grind
example [NeZero n] {x : Fin n} : x - x = 0 := by grind
example {n : Nat} : ∀ a b : Fin n, (a * b).val = a.val * b.val % n := by grind
example {n : Nat} : ∀ a b : Fin n, ((a * b : Fin n) : Nat) = a * b % n := by grind
example [i : NeZero n] (k : Fin n) : k * 1 = k := by grind
example (a b : Fin n) : a * b = b * a := by grind
example (a b c : Fin n) : a * b * c = a * (b * c) := by grind
example [NeZero n] (k : Fin n) : (1 : Fin n) * k = k := by grind
example [NeZero n] (k : Fin n) : k * 0 = 0 := by grind
example [NeZero n] (k : Fin n) : (0 : Fin n) * k = 0 := by grind