A Pawn Push is a quiet, irreversible move of a pawn one single step forward, or optionally but only from its initial rank, two steps forward. The condition for a pseudo-legal pawn push is that its target square ahead, the stop square, is empty, while the origin square is obviously occupied by the pawn of the side to move.
A push from the seventh (second) rank is a promotion.
The double pawn push from the initial rank requires both squares ahead empty. Making a double push is a precondition to set the en passant target square in the obtained position, as specified by initial Forsyth-Edwards Notation (FEN) unconditionally, where todays programs are instructed to set en passant target square if the en passant would be pseudo-legal (an opponent pawn left or right) or even better strictly legal , also considering updating Zobist keys during make move to avoid dissimilarity of otherwise repeated positions if the first occurrence happened after a double pawn push with no en passant capture actually possible .