(
` !s vv.
(* {{{ proof *)
[
REPEAT GEN_TAC
THEN STRIP_TAC
THEN MRESA_TAC
XWITCCN[`s:scs_v39`;`vv:num->real^3`]
THEN POP_ASSUM MP_TAC
THEN REWRITE_TAC[SET_RULE`~(A={})<=> ?vv1. vv1
IN A`;
BBprime2_v39;
IN;
BBindex_min_v39;]
THEN STRIP_TAC
THEN SUBGOAL_THEN`?n. (?vv1.
BBprime_v39 s vv1 /\
BBindex_v39 s vv1=n)` ASSUME_TAC;
EXISTS_TAC`
BBindex_v39 s vv1`
THEN EXISTS_TAC`vv1:num->real^3`
THEN ASM_REWRITE_TAC[];
POP_ASSUM MP_TAC
THEN REWRITE_TAC[
MINIMAL]
THEN STRIP_TAC
THEN EXISTS_TAC`vv1':num->real^3`
THEN POP_ASSUM MP_TAC
THEN POP_ASSUM(fun th-> ASM_REWRITE_TAC[SYM
th] THEN ASSUME_TAC (SYM
th))
THEN ASM_REWRITE_TAC[Misc_defs_and_lemmas.min_num;ARITH_RULE`(A=B:num)<=> (B=A)`]
THEN STRIP_TAC
THEN MATCH_MP_TAC
SELECT_UNIQUE
THEN ASM_REWRITE_TAC[
BETA_THM;
IMAGE;
IN_ELIM_THM;]
THEN REWRITE_TAC[
IN]
THEN STRIP_TAC
THEN EQ_TAC;
STRIP_TAC
THEN POP_ASSUM MP_TAC
THEN ASM_REWRITE_TAC[]
THEN SUBGOAL_THEN`(?x.
BBprime_v39 s x /\
BBindex_v39 s vv1' =
BBindex_v39 s x)`ASSUME_TAC;
EXISTS_TAC`vv1':num->real^3`
THEN ASM_REWRITE_TAC[];
STRIP_TAC
THEN POP_ASSUM(fun th-> MRESA1_TAC
th`
BBindex_v39 s vv1'`)
THEN MP_TAC(ARITH_RULE`
BBindex_v39 s x <=
BBindex_v39 s vv1' ==>
BBindex_v39 s x <
BBindex_v39 s vv1' \/
BBindex_v39 s x =
BBindex_v39 s vv1'`)
THEN RESA_TAC
THEN REPLICATE_TAC 5 (POP_ASSUM MP_TAC)
THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC THEN
MRESA1_TAC
th`
BBindex_v39 s x`)
THEN SUBGOAL_THEN`(?vv1.
BBprime_v39 s vv1 /\
BBindex_v39 s x =
BBindex_v39 s vv1)`ASSUME_TAC;
EXISTS_TAC`x:num->real^3`
THEN ASM_REWRITE_TAC[];
POP_ASSUM MP_TAC
THEN ASM_REWRITE_TAC[];
STRIP_TAC
THEN ASM_REWRITE_TAC[]
THEN STRIP_TAC;
EXISTS_TAC`vv1':num->real^3`
THEN ASM_REWRITE_TAC[];
REPEAT STRIP_TAC
THEN ASM_REWRITE_TAC[]
THEN MP_TAC(ARITH_RULE`
BBindex_v39 s x <
BBindex_v39 s vv1' \/
BBindex_v39 s vv1' <=
BBindex_v39 s x`)
THEN RESA_TAC;
REPLICATE_TAC 4 (POP_ASSUM MP_TAC)
THEN POP_ASSUM(fun th-> REPEAT STRIP_TAC THEN
MRESA1_TAC
th`
BBindex_v39 s x`)
THEN SUBGOAL_THEN`(?vv1.
BBprime_v39 s vv1 /\
BBindex_v39 s x =
BBindex_v39 s vv1)`ASSUME_TAC;
EXISTS_TAC`x:num->real^3`
THEN ASM_REWRITE_TAC[];
POP_ASSUM MP_TAC
THEN ASM_REWRITE_TAC[];
]);;