Discrete Hamiltonian mechanics