import proveit
theory = proveit.Theory() # the theorem's theory
from proveit.physics.quantum.QPE import (
_b_floor,
_best_floor_def, _phase_in_interval, _phase_is_real, _two_pow_t_is_nat_pos)
%proving _best_floor_is_in_m_domain
_best_floor_def
scaled_phase_floor = _best_floor_def.rhs
scaled_phase = _best_floor_def.rhs.operand
from proveit.logic import InSet
from proveit.numbers import Integer
InSet(scaled_phase_floor, Integer).prove()
_phase_in_interval
_two_pow_t_is_nat_pos
_phase_upper_bound = _phase_in_interval.derive_element_upper_bound()
_phase_lower_bound = _phase_in_interval.derive_element_lower_bound()
scaled_phase_upper_bound = scaled_phase.deduce_bound([_phase_upper_bound])
scaled_phase_lower_bound = (
scaled_phase.deduce_bound(
[_phase_lower_bound.with_styles(direction='reversed')]))
scaled_phase_floor.deduce_bound([scaled_phase_upper_bound])
scaled_phase_floor.deduce_bound([scaled_phase_lower_bound])
%qed