# HG changeset patch # User hoelzl # Date 1311842544 -7200 # Node ID c479836d9048caee062bdb0439a202e2a6812215 # Parent 5de4bde3ad41577870c3cb29f3277802ade238da simplified definition of vector (also removed Cartesian_Euclidean_Space.from_nat which collides with Countable.from_nat) diff -r 5de4bde3ad41 -r c479836d9048 src/HOL/Multivariate_Analysis/Cartesian_Euclidean_Space.thy --- a/src/HOL/Multivariate_Analysis/Cartesian_Euclidean_Space.thy Thu Jul 28 05:52:28 2011 -0200 +++ b/src/HOL/Multivariate_Analysis/Cartesian_Euclidean_Space.thy Thu Jul 28 10:42:24 2011 +0200 @@ -1915,20 +1915,7 @@ subsection{* Explicit vector construction from lists. *} -primrec from_nat :: "nat \ 'a::{monoid_add,one}" -where "from_nat 0 = 0" | "from_nat (Suc n) = 1 + from_nat n" - -lemma from_nat [simp]: "from_nat = of_nat" -by (rule ext, induct_tac x, simp_all) - -primrec - list_fun :: "nat \ _ list \ _ \ _" -where - "list_fun n [] = (\x. 0)" -| "list_fun n (x # xs) = fun_upd (list_fun (Suc n) xs) (from_nat n) x" - -definition "vector l = (\ i. list_fun 1 l i)" -(*definition "vector l = (\ i. if i <= length l then l ! (i - 1) else 0)"*) +definition "vector l = (\ i. foldr (\x f n. fun_upd (f (n+1)) n x) l (\n x. 0) 1 i)" lemma vector_1: "(vector[x]) $1 = x" unfolding vector_def by simp