Try following dirty function and check if can help to solve your issue. From cursor position it looks forward and backwards for those strings. Delete them only when both match:
function! RemoveSurrondingIfCondition()
let s:current_line = line('.')
"" Look backwards for the key string.
let s:beginif = search( '\v^if\s+false\s+then\s*$', 'bWn' )
if s:beginif == 0 || s:current_line <= s:beginif
return
endif
"" Set a mark where the _if_ begins
execute s:beginif 'mark b'
"" Look forward for the end of the _if_
let s:endif = search( '\v^end;\s*$', 'Wn' )
if s:endif == 0 || s:endif <= s:beginif || s:current_line >= s:endif
return
endif
"" Delete both end points if searches succeed.
execute s:endif . 'delete'
'b delete
endfunction
noremap <space>d :call RemoveSurrondingIfCondition()<CR>