diff options
author | fbesson <fbesson@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2009-08-20 09:13:31 +0000 |
---|---|---|
committer | fbesson <fbesson@85f007b7-540e-0410-9357-904b9bb8a0f7> | 2009-08-20 09:13:31 +0000 |
commit | f3ac2308f8ed6f9a02df6e78a804cdbf54a62cea (patch) | |
tree | c0e731d39eb49bae78898664fa527bc07db625e0 /plugins/micromega/csdpcert.ml | |
parent | 05ba7289d4fc9b3b816ecbfabc76656107ee1015 (diff) |
new csdp cache + improved error message
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12286 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'plugins/micromega/csdpcert.ml')
-rw-r--r-- | plugins/micromega/csdpcert.ml | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/plugins/micromega/csdpcert.ml b/plugins/micromega/csdpcert.ml index 3bc81c576..96b369acf 100644 --- a/plugins/micromega/csdpcert.ml +++ b/plugins/micromega/csdpcert.ml @@ -20,6 +20,11 @@ module Mc = Micromega module Ml2C = Mutils.CamlToCoq module C2Ml = Mutils.CoqToCaml +type micromega_polys = (Micromega.q Mc.pol * Mc.op1) list +type csdp_certificate = S of Sos.positivstellensatz option | F of string +type provername = string * int option + + let debug = false module M = @@ -135,10 +140,10 @@ let real_nonlinear_prover d l = let proof = list_fold_right_elements (fun s t -> Sum(s,t)) (proof_ne :: proofs_ideal @ proofs_cone) in - Some proof + S (Some proof) with - | Sos.TooDeep -> None - + | Sos.TooDeep -> S None + | x -> F (Printexc.to_string x) (* This is somewhat buggy, over Z, strict inequality vanish... *) let pure_sos l = @@ -159,15 +164,11 @@ let pure_sos l = let proof = Sum(Axiom_lt i, pos) in (* let s,proof' = scale_certificate proof in let cert = snd (cert_of_pos proof') in *) - Some proof + S (Some proof) with - | Not_found -> (* This is no strict inequality *) None - | x -> None - + | Not_found -> (* This is no strict inequality *) F "pure_sos cannot solve this goal" + | x -> F (Printf.sprintf "pure_sos : %s" (Printexc.to_string x)) -type micromega_polys = (Micromega.q Mc.pol * Mc.op1) list -type csdp_certificate = Sos.positivstellensatz option -type provername = string * int option let run_prover prover pb = @@ -178,10 +179,10 @@ let run_prover prover pb = let main () = - let (prover,poly) = (input_value stdin : provername * micromega_polys) in - let cert = run_prover prover poly in - output_value stdout (cert:csdp_certificate); - exit 0;; + let (prover,poly) = (input_value stdin : provername * micromega_polys) in + let cert = run_prover prover poly in + output_value stdout (cert:csdp_certificate); + exit 0 ;; let _ = main () in () |