For a Copyable
type, copies are literally interchangeable with each other without changing the surface meaning of the program (though obviously can affect the performance characteristics). If you have
foo(a)
then
let b = copy a
foo(b)
will behave exactly the same. The compiler by this principle is free to insert or remove copies to improve performance or maintain language semantics.