fact: Definition eval_goal_bnd (prec : I.precision) (g : gol) : I.type -> bool := let check := match g with | Gle _ v => let j := I.lower_complement (E.eval_bnd prec v) in fun i => I.subset i j | Gge _ u => let j := I.upper_complement (E.eval_bnd prec u) in fun i => I.subset i j | Glele u v => let u := I.upper_complement (E.eval_bnd prec u) in let v := I.lower_complement (E.eval_bnd prec v) in let j := I.meet u v in fun i => I.subset i j | Gltle u v => let u := E.eval_bnd prec u in let v := I.lower_complement (E.eval_bnd prec v) in fun i => match I.sign_strict (I.sub prec i u) with Xgt => I.subset i v | _ => false end | Glelt u v => let u := I.upper_complement (E.eval_bnd prec u) in let v := E.eval_bnd prec v in fun i => match I.sign_strict (I.sub prec i v) with Xlt => I.subset i u | _ => false end | Gltlt u v => let u := E.eval_bnd prec u in let v := E.eval_bnd prec v in fun i => match I.sign_strict (I.sub prec i u) with Xgt => match I.sign_strict (I.sub prec i v) with Xlt => true | _ => false end | _ => false end | Gabsle _ v => let v := I.lower_complement (E.eval_bnd prec v) in let j := I.meet (I.neg v) v in fun i => I.subset i j | Glt v => let j := E.eval_bnd prec v in fun i => match I.sign_strict (I.sub prec i j) with Xlt => true | _ => false end | Ggt u => let j := E.eval_bnd prec u in fun i => match I.sign_strict (I.sub prec i j) with Xgt => true | _ => false end | Gne _ v => let j := E.eval_bnd prec v in fun i => match I.sign_strict (I.sub prec i j) with Xlt => true | Xgt => true | _ => false end end in fun xi => if I.is_empty xi then true else check xi.
imports: Coq(Reals Psatz) Flocq(Raux) Coq(List) Xreal Interval Tree Prog