diff options
author | 2010-07-21 09:46:51 +0200 | |
---|---|---|
committer | 2010-07-21 09:46:51 +0200 | |
commit | 5b7eafd0f00a16d78f99a27f5c7d5a0de77dc7e6 (patch) | |
tree | 631ad791a7685edafeb1fb2e8faeedc8379318ae /contrib/correctness/Arrays.v | |
parent | da178a880e3ace820b41d38b191d3785b82991f5 (diff) |
Imported Upstream snapshot 8.3~beta0+13298
Diffstat (limited to 'contrib/correctness/Arrays.v')
-rw-r--r-- | contrib/correctness/Arrays.v | 78 |
1 files changed, 0 insertions, 78 deletions
diff --git a/contrib/correctness/Arrays.v b/contrib/correctness/Arrays.v deleted file mode 100644 index 3a6aaaf8..00000000 --- a/contrib/correctness/Arrays.v +++ /dev/null @@ -1,78 +0,0 @@ -(************************************************************************) -(* v * The Coq Proof Assistant / The Coq Development Team *) -(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *) -(* \VV/ **************************************************************) -(* // * This file is distributed under the terms of the *) -(* * GNU Lesser General Public License Version 2.1 *) -(************************************************************************) - -(* Certification of Imperative Programs / Jean-Christophe Filliātre *) - -(* $Id: Arrays.v 5920 2004-07-16 20:01:26Z herbelin $ *) - -(**********************************************) -(* Functional arrays, for use in Correctness. *) -(**********************************************) - -(* This is an axiomatization of arrays. - * - * The type (array N T) is the type of arrays ranging from 0 to N-1 - * which elements are of type T. - * - * Arrays are created with new, accessed with access and modified with store. - * - * Operations of accessing and storing are not guarded, but axioms are. - * So these arrays can be viewed as arrays where accessing and storing - * out of the bounds has no effect. - *) - - -Require Export ProgInt. - -Set Implicit Arguments. - - -(* The type of arrays *) - -Parameter array : Z -> Set -> Set. - - -(* Functions to create, access and modify arrays *) - -Parameter new : forall (n:Z) (T:Set), T -> array n T. - -Parameter access : forall (n:Z) (T:Set), array n T -> Z -> T. - -Parameter store : forall (n:Z) (T:Set), array n T -> Z -> T -> array n T. - - -(* Axioms *) - -Axiom - new_def : - forall (n:Z) (T:Set) (v0:T) (i:Z), - (0 <= i < n)%Z -> access (new n v0) i = v0. - -Axiom - store_def_1 : - forall (n:Z) (T:Set) (t:array n T) (v:T) (i:Z), - (0 <= i < n)%Z -> access (store t i v) i = v. - -Axiom - store_def_2 : - forall (n:Z) (T:Set) (t:array n T) (v:T) (i j:Z), - (0 <= i < n)%Z -> - (0 <= j < n)%Z -> i <> j -> access (store t i v) j = access t j. - -Hint Resolve new_def store_def_1 store_def_2: datatypes v62. - -(* A tactic to simplify access in arrays *) - -Ltac array_access i j H := - elim (Z_eq_dec i j); - [ intro H; rewrite H; rewrite store_def_1 - | intro H; rewrite store_def_2; [ idtac | idtac | idtac | exact H ] ]. - -(* Symbolic notation for access *) - -Notation "# t [ c ]" := (access t c) (at level 0, t at level 0).
\ No newline at end of file |