lean4-htt/tests/lean/run/1226.lean
2016-12-06 16:51:00 -08:00

63 lines
1.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 nat
inductive vec (α : Type*) : → Type*
| nil {} : vec 0
| cons : α → Π {n : nat}, vec n → vec (n+1)
namespace vec
def head {α : Type*} : Π {n : }, vec α (n+1) → α
| n (cons x xs) := x
end vec
constants (dret : Π {n : }, vec nat n → (vec nat n → nat) → nat)
axiom dret_spec : Π {n : } (xs : vec nat n) (f : vec nat n → nat), dret xs f = f xs
example (v : vec nat 1) : dret v vec.head = vec.head v :=
by rw dret_spec
example (v : vec nat 2) : dret v vec.head = vec.head v :=
by rw dret_spec
example (v : vec nat 3) : dret v vec.head = vec.head v :=
by rw dret_spec
example (v : vec nat 6) : dret v vec.head = vec.head v :=
by rw dret_spec
example (v : vec nat 32) : dret v vec.head = vec.head v :=
by rw dret_spec
example (v : vec nat 63) : dret v vec.head = vec.head v :=
by rw dret_spec
example (v : vec nat 64) : dret v vec.head = vec.head v :=
by rw dret_spec
example {n : nat} (v : vec nat (n+1)) : dret v vec.head = vec.head v :=
by rw dret_spec
example {n : nat} (v : vec nat (n+2)) : dret v vec.head = vec.head v :=
by rw dret_spec
example {n : nat} (v : vec nat (n+3)) : dret v vec.head = vec.head v :=
by rw dret_spec
attribute [simp] dret_spec
example (v : vec nat 1) : dret v vec.head = vec.head v :=
by simp
example (v : vec nat 2) : dret v vec.head = vec.head v :=
by simp
example (v : vec nat 3) : dret v vec.head = vec.head v :=
by simp
example {n : nat} (v : vec nat (n+1)) : dret v vec.head = vec.head v :=
by simp
example {n : nat} (v : vec nat (n+2)) : dret v vec.head = vec.head v :=
by simp
example {n : nat} (v : vec nat (n+3)) : dret v vec.head = vec.head v :=
by simp