Dim:=8;
I1:=Interval[{-.0000001,.0000001}];
I2:={t2->I1,u2->I1,th2->I1,t3->I1,u3->I1,th3->I1,t4->I1,u4->I1,th4->I1};

Block[{$MinPrecision=10000,$MaxPrecision=10000},

GradObI=D[OB[t2,u2,th2,t3,u3,th3,t4,u4,th4],{{u2,th2,t3,u3,th3,t4,u4,th4},1}]/.I2;

GradConI=Table[D[Con[i,t2,u2,th2,t3,u3,th3,t4,u4,th4],{{u2,th2,t3,u3,th3,t4,u4,th4},1}],{i,1,9}]/.I2;

HessObI=D[OB[t2,u2,th2,t3,u3,th3,t4,u4,th4],{{t2,u2,th2,t3,u3,th3,t4,u4,th4},2}]/.I2;]

GenCandI:=Flatten/@Map[NullSpace,Subsets[GradConI,{Dim-1}]];
GenCandI2:=Join[GenCandI,-GenCandI];

Er0:=Max[Flatten[GenCandI//Map[Abs[Max[#]-Min[#]]&,#,{2}]&]]
Er1:=Max[GenCandI//Map[Norm[#,1]&,#]&];
Test[{u2_,th2_,t3_,u3_,th3_,t4_,u4_,th4_}]:=Union[Table[GradConI[[i]].{u2,th2,t3,u3,th3,t4,u4,th4}≥-Er0*Er1*2,{i,1,9}]]=={True}

GenCandI3=Select[GenCandI2,Test];

Cert=GenCandI3.GradObI;
(*This dominates the conical program*)

Er2=.01;
If[Select[Cert,Not[ TrueQ[#<- Er2]]&]=={}&&TrueQ[HessObI[[1,1]]<-Er2],Print["Valid :-) Gradient in interior of H polar cone by Er2. Positive Er2 better. Second order test passed."],Print["Error"] ]