lean4-htt/tests/lean/run/1226.lean
Leonardo de Moura 3b38f71f11 fix(library,tests/lean): fix run/interactive tests, and problems in the standard library due to the new interpretation for Type
We had to change subtype to use Sort since the axiom
strong_indefinite_description uses it.

see #1341
2017-01-30 11:54: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 {u} vec (α : Type u) : → Type u
| 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