Communication abstractions in real-time distributed programming: Expediency, sematics and proof system