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.
50 lines
1 KiB
Text
50 lines
1 KiB
Text
def diag : Bool → Bool → Bool → Nat
|
||
| b, true, false => 1
|
||
| false, b, true => 2
|
||
| true, false, b => 3
|
||
| b1, b2, b3 => default
|
||
|
||
theorem diag1 (a : Bool) : diag a true false = 1 :=
|
||
match a with
|
||
| true => rfl
|
||
| false => rfl
|
||
|
||
theorem diag2 (a : Bool) : diag false a true = 2 :=
|
||
by cases a; exact rfl; exact rfl
|
||
|
||
theorem diag3 (a : Bool) : diag true false a = 3 :=
|
||
by cases a; exact rfl; exact rfl
|
||
|
||
theorem diag4_1 : diag false false false = default :=
|
||
rfl
|
||
|
||
theorem diag4_2 : diag true true true = default :=
|
||
rfl
|
||
|
||
def f : Nat → Nat → Nat
|
||
| n, 0 => 0
|
||
| 0, n => 1
|
||
| n, m => default
|
||
|
||
theorem f_zero_right : (a : Nat) → f a 0 = 0
|
||
| 0 => rfl
|
||
| a+1 => rfl
|
||
|
||
theorem f_zero_succ (a : Nat) : f 0 (a+1) = 1 :=
|
||
rfl
|
||
|
||
theorem f_succ_succ (a b : Nat) : f (a+1) (b+1) = default :=
|
||
rfl
|
||
|
||
def app {α} : List α → List α → List α
|
||
| [], l => l
|
||
| h::t, l => h :: (app t l)
|
||
|
||
theorem app_nil {α} (l : List α) : app [] l = l :=
|
||
rfl
|
||
|
||
theorem app_cons {α} (h : α) (t l : List α) : app (h :: t) l = h :: (app t l) :=
|
||
rfl
|
||
|
||
theorem ex : app [1, 2] [3,4,5] = [1,2,3,4,5] :=
|
||
rfl
|