refactor(library/data): move vector as indexed family to examples folder
This commit is contained in:
parent
840c1a3693
commit
b4024982a2
27 changed files with 32 additions and 28 deletions
|
@ -16,9 +16,9 @@ the expression =v = w= since it would not be able to establish that
|
||||||
_definitionally equal_.
|
_definitionally equal_.
|
||||||
|
|
||||||
#+BEGIN_SRC lean
|
#+BEGIN_SRC lean
|
||||||
import data.vector data.nat
|
import data.fixed_list data.nat
|
||||||
open nat
|
open nat
|
||||||
check λ (v : vector nat (2+3)) (w : vector nat 5), v = w
|
check λ (v : fixed_list nat (2+3)) (w : fixed_list nat 5), v = w
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Similarly, the following definition only type checks because =id= is transparent, and the type checker can establish that
|
Similarly, the following definition only type checks because =id= is transparent, and the type checker can establish that
|
||||||
|
|
|
@ -4,4 +4,5 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
||||||
Author: Jeremy Avigad
|
Author: Jeremy Avigad
|
||||||
-/
|
-/
|
||||||
import .empty .unit .bool .num .string .nat .int .rat .fintype
|
import .empty .unit .bool .num .string .nat .int .rat .fintype
|
||||||
import .prod .sum .sigma .option .subtype .quotient .list .vector .finset .set .stream
|
import .prod .sum .sigma .option .subtype .quotient .list .finset .set .stream
|
||||||
|
import .fin
|
||||||
|
|
|
@ -2,8 +2,11 @@
|
||||||
Copyright (c) 2014 Floris van Doorn. All rights reserved.
|
Copyright (c) 2014 Floris van Doorn. All rights reserved.
|
||||||
Released under Apache 2.0 license as described in the file LICENSE.
|
Released under Apache 2.0 license as described in the file LICENSE.
|
||||||
Author: Floris van Doorn, Leonardo de Moura
|
Author: Floris van Doorn, Leonardo de Moura
|
||||||
|
|
||||||
|
This file demonstrates how to encode vectors using indexed inductive families.
|
||||||
|
In standard library we do not use this approach.
|
||||||
-/
|
-/
|
||||||
import data.nat data.list data.fin
|
import data.nat data.list data.fin data.fixed_list
|
||||||
open nat prod fin
|
open nat prod fin
|
||||||
|
|
||||||
inductive vector (A : Type) : nat → Type :=
|
inductive vector (A : Type) : nat → Type :=
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
definition fib : nat → nat,
|
definition fib : nat → nat,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
set_option pp.implicit true
|
set_option pp.implicit true
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
theorem tst (n : nat) (v : vector nat n) : v = v :=
|
theorem tst (n : nat) (v : vector nat n) : v = v :=
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
variable {A : Type}
|
variable {A : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
|
|
||||||
example (A : Type) (n : nat) (v : vector A n) : v = v :=
|
example (A : Type) (n : nat) (v : vector A n) : v = v :=
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat prod.ops
|
open nat prod.ops
|
||||||
|
|
||||||
example (n : nat) (v₁ : vector nat n) (v₂ : vector nat 0) (h₁ : (v₂, n).2 = 0) (h₂ : n = 0) (h₃ : eq.rec_on h₁ v₁ = v₂) : v₂ = eq.rec_on h₂ v₁ :=
|
example (n : nat) (v₁ : vector nat n) (v₂ : vector nat 0) (h₁ : (v₂, n).2 = 0) (h₂ : n = 0) (h₃ : eq.rec_on h₁ v₁ = v₂) : v₂ = eq.rec_on h₂ v₁ :=
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open vector nat decidable
|
open vector nat decidable
|
||||||
|
|
||||||
variable A : Type
|
variable A : Type
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import logic data.prod data.vector
|
import logic data.prod data.examples.vector
|
||||||
open prod nat inhabited vector
|
open prod nat inhabited vector
|
||||||
|
|
||||||
theorem tst1 : inhabited (vector nat 2)
|
theorem tst1 : inhabited (vector nat 2)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
namespace vector
|
namespace vector
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
definition last {A : Type} : Π {n}, vector A (succ n) → A
|
definition last {A : Type} : Π {n}, vector A (succ n) → A
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector data.prod
|
import data.examples.vector data.prod
|
||||||
open nat vector prod
|
open nat vector prod
|
||||||
|
|
||||||
variables {A B : Type}
|
variables {A B : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
definition swap {A : Type} : Π {n}, vector A (succ (succ n)) → vector A (succ (succ n))
|
definition swap {A : Type} : Π {n}, vector A (succ (succ n)) → vector A (succ (succ n))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
definition diag {A : Type} : Π {n}, vector (vector A n) n → vector A n
|
definition diag {A : Type} : Π {n}, vector (vector A n) n → vector A n
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open vector
|
open vector
|
||||||
|
|
||||||
definition map {A B C : Type} (f : A → B → C) : Π {n}, vector A n → vector B n → vector C n
|
definition map {A B C : Type} (f : A → B → C) : Π {n}, vector A n → vector B n → vector C n
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open vector
|
open vector
|
||||||
|
|
||||||
set_option pp.implicit true
|
set_option pp.implicit true
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
example (a b : nat) : succ a = succ b → a + 2 = b + 2 :=
|
example (a b : nat) : succ a = succ b → a + 2 = b + 2 :=
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat
|
open nat
|
||||||
|
|
||||||
namespace vector
|
namespace vector
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
variables {A B : Type}
|
variables {A B : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
variable {A : Type}
|
variable {A : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.list data.vector
|
import data.list data.examples.vector
|
||||||
|
|
||||||
variables {A B : Type}
|
variables {A B : Type}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector prod
|
open nat vector prod
|
||||||
|
|
||||||
variables {A B : Type}
|
variables {A B : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector
|
open nat vector
|
||||||
|
|
||||||
variables {A B : Type}
|
variables {A B : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.vector
|
import data.examples.vector
|
||||||
open nat vector prod
|
open nat vector prod
|
||||||
|
|
||||||
variables {A B : Type}
|
variables {A B : Type}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import data.nat data.vector data.list.basic
|
import data.nat data.examples.vector data.list.basic
|
||||||
|
|
||||||
attribute nat [recursor]
|
attribute nat [recursor]
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue