let set_po_result g r =
try
let pi = ( g.po_model , WpPropId.property_of_id g.po_pid ) in
let proof =
try Hproof.find system.proofs pi
with Not_found ->
let proof = WpAnnot.create_proof g.po_pid in
Hproof.add system.proofs pi proof ; proof
in
if r = Valid then WpAnnot.add_proof proof g.po_pid g.po_dep ;
let status =
if WpAnnot.is_proved proof then Property_status.True
else Property_status.Dont_know
in
let target = WpAnnot.target proof in
let depends = WpAnnot.dependencies proof in
Property_status.emit g.po_updater ~hyps:depends target status ;
with
| Log.AbortFatal plugin as err ->
Wp_parameters.failure
"Update-status failed (problem in %s)" plugin ;
raise err
| err ->
Wp_parameters.failure
"Update-status failed (%s)" (Printexc.to_string err);
raise err