Origin of the terms "safety" and "liveness" for concurrent algorithm properties?
Lamport commented on his paper "Proving the Correctness of Multiprocess Programs" as follows:


  This paper introduced the concepts of safety and liveness as the proper generalizations of partial correctness and termination to concurrent programs. It also introduced the terms "safety" and "liveness" for those classes of properties. I stole those terms from Petri nets, where they have similar but formally very different meanings. (Safety of a Petri net is a particular safety property; liveness of a Petri net is not a liveness property.)


This can be seen as a claim that he (Lamport) has introduced the terms.