module Sharp = struct (* SHARP CASES *) (* let gamma4f_delta0 = prove_by_refinement( mk_imp (`NONLIN:bool`,Sphere.all_forall `ineq [(sqrt8,y1,sqrt8); (&2,y2,&2); (&2,y3,&2); (sqrt8,y4,sqrt8); (&2,y5,&2); (&2,y6,&2)] (gamma4f y1 y2 y3 y4 y5 y6 lmfun = &0)`), (* {{{ proof *) [ BRANCH_TAC; X_OF_Y_TAC; REWRITE_TAC[Sphere.ineq]; REPEAT STRIP_TAC; SUBGOAL_THEN `x1 = &8 /\ x2 = &4 /\ x3 = &4 /\ x4 = &8 /\ x5 = &4 /\ x6 = &4` (fun t -> REWRITE_TAC[t]); REPEAT (POP_ASSUM MP_TAC); REAL_ARITH_TAC; REPEAT (POP_ASSUM (fun t -> ALL_TAC)); REWRITE_TAC[Sphere.vol_x;Sphere.gchi2_x;Sphere.gchi3_x;Sphere.gchi5_x; Sphere.gchi6_x;Sphere.dih_x;Sphere.dih2_x;Sphere.dih3_x;Sphere.dih4_x; Sphere.dih4_y;Sphere.dih5_x;Sphere.dih5_y;Sphere.dih6_x;Sphere.dih6_y; Sphere.dih_y]; REWRITE_TAC[LET_DEF;LET_END_DEF]; SUBGOAL_THEN `sqrt (&4) * sqrt(&4) = &4 /\ sqrt(&8) *sqrt (&8) = &8` (fun t-> REWRITE_TAC[t]); CONJ_TAC THEN MATCH_MP_TAC sq_pow2 THEN EXISTS_TAC `&0` THEN REAL_ARITH_TAC; REWRITE_TAC[delta_x_eq0;REAL_ARITH `x * &0 = &0 /\ -- -- x = x`; SQRT_0;delta_x4_eq64;atn2_0y]; MP_TAC PI_POS; CONV_TAC REAL_FIELD; ]);; (* }}} *) *) end;;