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.
70 lines
1.4 KiB
Text
70 lines
1.4 KiB
Text
def f1 (x : Nat × Nat) : Nat :=
|
||
match x with
|
||
| { fst := x, snd := y } => x - y
|
||
|
||
#eval f1 (20, 15)
|
||
|
||
def g1 (h : Nat × Nat × Nat → Nat) : Nat :=
|
||
h (1, 2, 3)
|
||
|
||
def f2 (w : Nat) : Nat :=
|
||
g1 fun (x, y, z) => x + y + z + w
|
||
|
||
#eval f2 10
|
||
|
||
def g2 (h : Nat × Nat → Nat × Nat → Nat) : Nat :=
|
||
h (1, 2) (20, 40)
|
||
|
||
def f3 (a : Nat) : Nat :=
|
||
g2 fun (x, y) (z, w) => a*(y - x) + (w - z)
|
||
|
||
#eval f3 100
|
||
|
||
def f4 (x : Nat × Nat) : Nat :=
|
||
let (a, b) := x;
|
||
a + b
|
||
|
||
#eval f4 (10, 20)
|
||
|
||
def f5 (x y : Nat) : Nat :=
|
||
let h : Nat → Nat → Nat
|
||
| 0, b => b
|
||
| a, b => a*b;
|
||
h x y
|
||
|
||
#eval f5 0 10
|
||
#eval f5 20 10
|
||
|
||
def f6 (x : Nat × Nat) : Nat :=
|
||
match x with
|
||
| { fst := x, .. } => x * 10
|
||
|
||
#eval f6 (5, 20)
|
||
|
||
def Vector' (α : Type) (n : Nat) := { a : Array α // a.size = n }
|
||
|
||
def mkVec {α : Type} (n : Nat) (a : α) : Vector' α n :=
|
||
⟨Array.replicate n a, Array.size_replicate ..⟩
|
||
|
||
structure S :=
|
||
(n : Nat)
|
||
(y : Vector' Nat n)
|
||
(z : Vector' Nat n)
|
||
(h : y = z)
|
||
(m : { v : Nat // v = y.val.size })
|
||
|
||
def f7 (s : S) : Nat :=
|
||
match s with
|
||
| { n := n, m := m, .. } => n + m.val
|
||
|
||
#eval f7 { n := 10, y := mkVec 10 0, z := mkVec 10 0, h := rfl, m := ⟨10, rfl⟩ }
|
||
|
||
inductive Bla : Unit → Unit × Unit → Type where
|
||
| left : Bla a (a, b)
|
||
| right : Bla b (a, b)
|
||
|
||
def f8 : ∀ x y, Bla x y → Unit
|
||
| _, _, .left => ()
|
||
| _, _, .right => ()
|
||
|
||
example (x : Bla () ((), ())) : f8 () ((), ()) x = () := by simp only [f8]
|