let spec funspec =
let require p =
JCCrequires(locate (pred (Logic_const.pred_of_id_pred p)))
in
let requires = List.map require funspec.spec_requires in
let behavior b =
JCCbehavior(
Loc.dummy_position,
b.b_name,
None,
Some(conjunct Loc.dummy_position b.b_assumes),
None,
assigns b.b_assigns,
locate (conjunct Loc.dummy_position b.b_ensures))
in
let behaviors = List.map behavior funspec.spec_behavior in
if funspec.spec_complete_behaviors <> [] then
warn_general "Complete behaviors specification(s) ignored" ;
if funspec.spec_disjoint_behaviors <> [] then
warn_general "Disjoint behaviors specification(s) ignored" ;
if funspec.spec_variant <> None then
warn_general "Variant(s) for recursive function ignored" ;
if funspec.spec_terminates <> None then
warn_general "Termination condition(s) ignored" ;
requires @ behaviors