They are based on: - Boolean arithmetic simplifications - setting variables that are not accessed - constant variables