Let n be given.
Assume Hn.
Let n' be given.
Assume Hn'.
We prove the intermediate
claim L1b:
2 ^ m * (2 * n + 1) ∈ int.
An
exact proof term for the current goal is
nat_2.
An exact proof term for the current goal is Hn.
An
exact proof term for the current goal is
nat_1.
Apply L1 m n n' Hm Hn Hn' to the current goal.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is H1.
Let m' be given.
Assume Hm'.
Let n be given.
Assume Hn.
Let n' be given.
Assume Hn'.
Use f_equal.
Set k' to be the term
2 ^ m * (2 * n + 1).
We prove the intermediate
claim L2mS:
SNo (2 ^ m).
We prove the intermediate
claim L2m'S:
SNo (2 ^ m').
We prove the intermediate
claim L2mpos:
0 < 2 ^ m.
We prove the intermediate
claim L2nS:
SNo (2 * n).
We prove the intermediate
claim L2n1S:
SNo (2 * n + 1).
We prove the intermediate
claim L2n'S:
SNo (2 * n').
We prove the intermediate
claim L2n'1S:
SNo (2 * n' + 1).
We prove the intermediate
claim L2n1pos:
0 < 2 * n + 1.
An
exact proof term for the current goal is
SNoLt_0_2.
rewrite the current goal using
add_SNo_0R (2 * n) ?? (from right to left) at position 1.
We prove the intermediate
claim L2:
k' < k.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using
mul_SNo_oneL (2 ^ m) ?? (from right to left) at position 1.
An
exact proof term for the current goal is
SNoLt_1_2.
We prove the intermediate
claim L3:
k' ∈ k.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is L2.
We prove the intermediate
claim L4:
2 ^ m * (2 * n + 1) = k'.
We prove the intermediate
claim L5:
2 ^ m' * (2 * n' + 1) = k'.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is H2.
Use symmetry.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is IHk k' L3 m Hm m' Hm' n Hn n' Hn' L4 L5.