This PR sets up the new integrated test/bench suite. It then migrates all benchmarks and some related tests to the new suite. There's also some documentation and some linting. For now, a lot of the old tests are left alone so this PR doesn't become even larger than it already is. Eventually, all tests should be migrated to the new suite though so there isn't a confusing mix of two systems.
60 lines
1.6 KiB
Text
60 lines
1.6 KiB
Text
universe u
|
||
|
||
inductive Vec (α : Type u) : Nat → Type u
|
||
| nil : Vec α 0
|
||
| cons : α → {n : Nat} → Vec α n → Vec α (n+1)
|
||
|
||
def Vec.append1 {α} : {m n : Nat} → Vec α m → Vec α n → Vec α (n + m)
|
||
| _, m, nil, ys => ys
|
||
| _, m, cons x xs, ys => cons x (append1 xs ys)
|
||
|
||
def Vec.append2 {α} : {m n : Nat} → Vec α m → Vec α n → Vec α (n + m)
|
||
| _, _, nil, ys => ys
|
||
| _, _, cons x xs, ys => cons x (append2 xs ys)
|
||
|
||
def Vec.append3 {α} : {m n : Nat} → Vec α m → Vec α n → Vec α (n + m)
|
||
| .(_), m, nil, ys => ys
|
||
| .(_), m, cons x xs, ys => cons x (append3 xs ys)
|
||
|
||
inductive F : Nat → Type
|
||
| fzero : {n : Nat} → F (n+1)
|
||
|
||
namespace F
|
||
|
||
def fmin1 : {n : Nat} → (x y : F n) → F n
|
||
| .(_), fzero, fzero => fzero
|
||
|
||
def fmin2 : {n : Nat} → (x y : F n) → F n
|
||
| _, fzero, fzero => fzero
|
||
|
||
-- TODO: uncomment after we implement smart unfolding
|
||
-- def fmin3 : {n : Nat} → (x y : F n) → F n
|
||
-- | n+1, fzero, fzero => fzero
|
||
|
||
def fmin4 : {n : Nat} → (x y : F n) → F n
|
||
| .(n+1), @fzero n, @fzero .(n) => fzero
|
||
|
||
def fmin5 : {n : Nat} → (x y : F n) → F n
|
||
| .(Nat.succ n), @fzero .(n), @fzero n => fzero
|
||
|
||
def fmin6 : {n : Nat} → (x y : F n) → F n
|
||
| .(Nat.succ _), fzero, fzero => fzero
|
||
|
||
theorem ex1 (n : Nat) (x y : F n) : fmin1 x y = fmin2 x y :=
|
||
rfl
|
||
|
||
-- TODO: see comment above
|
||
-- theorem ex2 (n : Nat) (x y : F n) : fmin1 x y = fmin3 x y := by
|
||
-- cases x; exact rfl
|
||
|
||
theorem ex3 (n : Nat) (x y : F n) : fmin1 x y = fmin4 x y :=
|
||
rfl
|
||
|
||
theorem ex4 (n : Nat) (x y : F n) : fmin1 x y = fmin4 x y :=
|
||
rfl
|
||
|
||
theorem ex5 (n : Nat) (x y : F n) : fmin1 x y = fmin5 x y :=
|
||
rfl
|
||
|
||
theorem ex6 (n : Nat) (x y : F n) : fmin1 x y = fmin6 x y :=
|
||
rfl
|