import proveit
theory = proveit.Theory() # the theorem's theory
from proveit import b, l, defaults
from proveit.logic import Forall, InSet, NotEquals, Set
from proveit.numbers import Integer, Mult
from proveit.physics.quantum.QPE import (
_b_floor, _best_floor_is_int, _b_round,
_best_round_def, _best_round_is_int, _delta_b,
_delta_b_is_real, _scaled_delta_b_not_eq_nonzeroInt,
_two_pow_t, _two_pow_t_is_nat_pos)
%proving _delta_b_not_eq_scaledNonzeroInt
defaults.assumptions = _delta_b_not_eq_scaledNonzeroInt.all_conditions()
_scaled_delta_b_not_eq_nonzeroInt
all_scaled_deltas_ne_ell_inst = (
_scaled_delta_b_not_eq_nonzeroInt.instantiate())
_two_pow_t_is_nat_pos
_delta_b_is_real
_best_round_is_int
_best_floor_is_int
all_b_in_best_set_are_int = (
Forall(b, InSet(b, Integer),
domain=Set(_b_floor, _b_round)).prove())
all_b_in_best_set_are_int.instantiate()
_delta_b_is_real.instantiate()
all_scaled_deltas_ne_ell_inst.divide_both_sides(_two_pow_t)
%qed