let call_normal_only caller_env stmt lv kf args ~pre ~post ~assigns ~p_post =
on_context caller_env "call_normal" p_post Keep_opened Keep_assigns
(fun env assigns_method p_post ->
add_dependencies (WpAnnot.get_called_assigns kf) ;
add_dependencies (WpAnnot.get_called_post_conditions kf) ;
add_dependencies (WpAnnot.get_called_preconditions_at kf stmt) ;
let call = callenv env stmt args in
let p_after , x_result = do_return call kf lv p_post in
let env_pre = L.call_pre env kf call.v_args call.m_pre in
let env_post = L.call_post env kf call.v_args call.m_pre call.m_post x_result in
let p_called = do_hypothesis env_post "post-condition" post p_after in
let p_called = match x_result with
| None -> p_called
| Some x -> D.forall [x] p_called
in
let asgnd = assigned_of_assigns env_pre assigns in
let p_havoc = havoc_region WpPropId.StmtAssigns call.m_post asgnd p_called in
let p_before = do_hypothesis env_pre "pre-condition" pre p_havoc in
check_assigns call.m_pre assigns_method asgnd p_before)