51 lines
1.8 KiB
Text
51 lines
1.8 KiB
Text
/-
|
||
Copyright (c) 2018 Microsoft Corporation. All rights reserved.
|
||
Released under Apache 2.0 license as described in the file LICENSE.
|
||
Authors: Leonardo de Moura
|
||
-/
|
||
prelude
|
||
import init.data.array.basic init.meta
|
||
universes u v w
|
||
|
||
namespace d_array
|
||
variables {n : nat} {α : fin n → Type u} {β : Type v}
|
||
|
||
@[simp] theorem read_write (a : d_array n α) (i : fin n) (v : α i) : read (write a i v) i = v :=
|
||
by simp [read, write]
|
||
|
||
@[simp] theorem read_write_of_ne (a : d_array n α) {i j : fin n} (v : α i) : i ≠ j → read (write a i v) j = read a j :=
|
||
by intro h; simp [read, write, h]
|
||
|
||
protected theorem ext {a b : d_array n α} (h : ∀ i, read a i = read b i) : a = b :=
|
||
by cases a; cases b; congr; exact funext h
|
||
|
||
protected theorem ext' {a b : d_array n α} (h : ∀ (i : nat) (h : i < n), read a ⟨i, h⟩ = read b ⟨i, h⟩) : a = b :=
|
||
begin cases a, cases b, congr, funext i, cases i, apply h end
|
||
|
||
end d_array
|
||
|
||
namespace array
|
||
variables {n : nat} {α : Type u} {β : Type v}
|
||
|
||
theorem read_mem (a : array n α) (i) : read a i ∈ a :=
|
||
exists.intro i rfl
|
||
|
||
@[simp] theorem read_write (a : array n α) (i : fin n) (v : α) : read (write a i v) i = v :=
|
||
d_array.read_write a i v
|
||
|
||
@[simp] theorem read_write_of_ne (a : array n α) {i j : fin n} (v : α) : i ≠ j → read (write a i v) j = read a j :=
|
||
d_array.read_write_of_ne a v
|
||
|
||
theorem read_eq_read' [inhabited α] (a : array n α) {i : nat} (h : i < n) : read a ⟨i, h⟩ = read' a i :=
|
||
by simp [read', h]
|
||
|
||
theorem write_eq_write' (a : array n α) {i : nat} (h : i < n) (v : α) : write a ⟨i, h⟩ v = write' a i v :=
|
||
by simp [write', h]
|
||
|
||
protected theorem ext {a b : array n α} (h : ∀ i, read a i = read b i) : a = b :=
|
||
d_array.ext h
|
||
|
||
protected theorem ext' {a b : array n α} (h : ∀ (i : nat) (h : i < n), read a ⟨i, h⟩ = read b ⟨i, h⟩) : a = b :=
|
||
d_array.ext' h
|
||
|
||
end array
|