k d (0..k-1) a b J (\i. ((1+i):num MOD k)) /\k=
{matvec(v:real^3^M) | (!i. 1<=i /\ i <=
[REWRITE_TAC[
CONDITION2_SY;
CONDITION1_SY;
tri_stable]
THEN REPEAT GEN_TAC THEN REWRITE_TAC[
CLOSED_SEQUENTIAL_LIMITS] THEN REWRITE_TAC[
LIM_SEQUENTIALLY;
IN_ELIM_THM;
dist]
THEN REPEAT STRIP_TAC
THEN ASM_TAC
THEN DISCH_THEN(LABEL_TAC"THYGIANG2")
THEN DISCH_THEN(LABEL_TAC"THYGIANG")
THEN DISCH_THEN(LABEL_TAC"THYGIANG1")
THEN REPEAT STRIP_TAC
THEN EXISTS_TAC`vecmats (l:real^(M,3)finite_product)`
THEN SIMP_TAC[
MATVEC_VECMATS_ID]
THEN POP_ASSUM MP_TAC
THEN POP_ASSUM MP_TAC
THEN REWRITE_TAC[
SKOLEM_THM]
THEN STRIP_TAC
THEN POP_ASSUM MP_TAC
THEN DISCH_THEN(LABEL_TAC"THY1")
THEN DISCH_THEN(LABEL_TAC"THY2")
THEN SUBGOAL_THEN`
!i j. 1 <= i /\ i <=
dimindex (:M) /\ 1 <= j /\ j <=
dimindex (:M)
==>
((\n.
row i (v n) -
row j ((v:num->real^3^M) n)) -->
row i (vecmats l) -
row j (vecmats (l:real^(M,3)finite_product)))
sequentially`ASSUME_TAC;
SIMP_TAC[
EVENTUALLY_SEQUENTIALLY;
TRIVIAL_LIMIT_SEQUENTIALLY;
LIM_SEQUENTIALLY]
THEN REPEAT STRIP_TAC
THEN SIMP_TAC[
dist;VECTOR_ARITH`A-B-(C-D)=(A-C)-(B-D):real^N`]
THEN MP_TAC(REAL_ARITH`&0< e==> &0< e/ &2`)
THEN RESA_TAC
THEN REMOVE_THEN "THY2"(fun th-> MRESA1_TAC
th`e/ &2:real`)
THEN POP_ASSUM MP_TAC
THEN DISCH_THEN(LABEL_TAC"THY2")
THEN EXISTS_TAC`N:num`
THEN REPEAT STRIP_TAC
THEN REMOVE_THEN "THY2"(fun th-> MRESA1_TAC
th`n:num`)
THEN MP_TAC(ARITH_RULE`1<=i /\ i <=
dimindex (:M)==> i -1 <
dimindex (:M)/\ SUC(i-1)=i`)
THEN RESA_TAC
THEN MP_TAC(ARITH_RULE`1<=j /\ j <=
dimindex (:M)==> j -1 <
dimindex (:M)/\ SUC(j-1)=j`)
THEN RESA_TAC
THEN MRESA_TAC (GEN_ALL
VECMAT_ROW)[`i-1`;`((v:num->real^3^M) n)`]
THEN MRESA_TAC (GEN_ALL
VECMAT_ROW)[`i-1`;`vecmats (l:real^(M,3)finite_product)`]
THEN POP_ASSUM MP_TAC
THEN SIMP_TAC[
MATVEC_VECMATS_ID]
THEN STRIP_TAC
THEN MRESAL_TAC (GEN_ALL
NORM_VECMAT)[`i-1`;`matvec ((v:num->real^3^M) n) - (l:real^(M,3)finite_product)`][
VECMAT_SUB]
THEN MRESA_TAC (GEN_ALL
VECMAT_ROW)[`j-1`;`((v:num->real^3^M) n)`]
THEN MRESA_TAC (GEN_ALL
VECMAT_ROW)[`j-1`;`vecmats (l:real^(M,3)finite_product)`]
THEN POP_ASSUM MP_TAC
THEN SIMP_TAC[
MATVEC_VECMATS_ID]
THEN STRIP_TAC
THEN MRESAL_TAC (GEN_ALL
NORM_VECMAT)[`j-1`;`matvec ((v:num->real^3^M) n) - (l:real^(M,3)finite_product)`][
VECMAT_SUB]
THEN MRESAL_TAC
NORM_TRIANGLE[`
row i ((v:num->real^3^M) n) -
row i (vecmats (l:real^(M,3)finite_product))`;`--(
row j ((v:num->real^3^M) n) -
row j (vecmats (l:real^(M,3)finite_product)))`][
NORM_NEG;VECTOR_ARITH`A+ --B=A-B:real^N` ]
THEN POP_ASSUM MP_TAC
THEN POP_ASSUM MP_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN POP_ASSUM MP_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN POP_ASSUM MP_TAC
THEN REAL_ARITH_TAC;
SUBGOAL_THEN`
!i. 1 <= i /\ i <=
dimindex (:M) ==>
((\n.
row i ((v:num->real^3^M) n)) -->
row i (vecmats (l:real^(M,3)finite_product)))
sequentially`ASSUME_TAC;
SIMP_TAC[
EVENTUALLY_SEQUENTIALLY;
TRIVIAL_LIMIT_SEQUENTIALLY;
LIM_SEQUENTIALLY]
THEN REPEAT STRIP_TAC
THEN SIMP_TAC[
dist;VECTOR_ARITH`A-B-(C-D)=(A-C)-(B-D):real^N`]
THEN MP_TAC(REAL_ARITH`&0< e==> &0< e/ &2`)
THEN RESA_TAC
THEN REMOVE_THEN "THY2"(fun th-> MRESA1_TAC
th`e:real`)
THEN POP_ASSUM MP_TAC
THEN DISCH_THEN(LABEL_TAC"THY2")
THEN EXISTS_TAC`N:num`
THEN REPEAT STRIP_TAC
THEN REMOVE_THEN "THY2"(fun th-> MRESA1_TAC
th`n:num`)
THEN MP_TAC(ARITH_RULE`1<=i /\ i <=
dimindex (:M)==> i -1 <
dimindex (:M)/\ SUC(i-1)=i`)
THEN RESA_TAC
THEN MP_TAC(ARITH_RULE`1<=j /\ j <=
dimindex (:M)==> j -1 <
dimindex (:M)/\ SUC(j-1)=j`)
THEN RESA_TAC
THEN MRESA_TAC (GEN_ALL
VECMAT_ROW)[`i-1`;`((v:num->real^3^M) n)`]
THEN MRESA_TAC (GEN_ALL
VECMAT_ROW)[`i-1`;`vecmats (l:real^(M,3)finite_product)`]
THEN POP_ASSUM MP_TAC
THEN SIMP_TAC[
MATVEC_VECMATS_ID]
THEN STRIP_TAC
THEN MRESAL_TAC (GEN_ALL
NORM_VECMAT)[`i-1`;`matvec ((v:num->real^3^M) n) - (l:real^(M,3)finite_product)`][
VECMAT_SUB]
THEN POP_ASSUM MP_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN REMOVE_ASSUM_TAC
THEN POP_ASSUM MP_TAC
THEN REAL_ARITH_TAC;
POP_ASSUM MP_TAC
THEN DISCH_THEN(LABEL_TAC"YEU2")
THEN SUBGOAL_THEN`(!i j.
1 <= i /\ i <=
dimindex (:M) /\ 1 <= j /\ j <=
dimindex (:M)
==> (a:num#num->
real) (i,j) <=
norm (
row i (vecmats l) -
row j (vecmats l)) /\
norm (
row i (vecmats l) -
row j (vecmats (l:real^(M,3)finite_product))) <= (b:num#num->
real) (i,j))` ASSUME_TAC;
REPEAT STRIP_TAC;
MRESA_TAC
LIM_NORM_LBOUND[`
sequentially`;`(\n.
row i (v n) -
row j ((v:num->real^3^M) n))`;`
row i (vecmats l) -
row j (vecmats (l:real^(M,3)finite_product))`;`(a:num#num->
real)(i,j)`]
THEN POP_ASSUM MATCH_MP_TAC
THEN ASM_SIMP_TAC[
EVENTUALLY_SEQUENTIALLY;
TRIVIAL_LIMIT_SEQUENTIALLY;
LIM_SEQUENTIALLY];
MRESA_TAC
LIM_NORM_UBOUND[`
sequentially`;`(\n.
row i (v n) -
row j ((v:num->real^3^M) n))`;`
row i (vecmats l) -
row j (vecmats (l:real^(M,3)finite_product))`;`(b:num#num->
real)(i,j)`]
THEN POP_ASSUM MATCH_MP_TAC
THEN ASM_SIMP_TAC[
EVENTUALLY_SEQUENTIALLY;
TRIVIAL_LIMIT_SEQUENTIALLY;
LIM_SEQUENTIALLY];
ASM_REWRITE_TAC[]
THEN MP_TAC
COMPACT_BALL_ANNULUS
THEN ASM_SIMP_TAC[
COMPACT_EQ_BOUNDED_CLOSED]
THEN REWRITE_TAC[
CLOSED_SEQUENTIAL_LIMITS] THEN REWRITE_TAC[
IN_ELIM_THM;
dist]
THEN REWRITE_TAC[
SKOLEM_THM]
THEN STRIP_TAC
THEN POP_ASSUM MP_TAC
THEN DISCH_THEN(LABEL_TAC"YEU")
THEN REPEAT STRIP_TAC
THEN REMOVE_THEN "YEU" (fun th-> MRESA_TAC
th[`(\n.
row i ((v:num->real^3^M) n)) `;`
row i (vecmats (l:real^(M,3)finite_product))`])
THEN POP_ASSUM MATCH_MP_TAC
THEN ASM_SIMP_TAC[]]);;