Exact expanded PA statement
forall n m. (exists pmt_u_n_m pmt_v_n_m. n + 2 * pmt_u_n_m = m + 2 * pmt_v_n_m) -> (((((exists pmt_even_n. n = 2 * pmt_even_n) -> (exists pmt_even_m. m = 2 * pmt_even_m)) /\ ((exists pmt_even_m. m = 2 * pmt_even_m) -> (exists pmt_even_n. n = 2 * pmt_even_n)))) /\ ((((exists pmt_odd_n. n = 2 * pmt_odd_n + 1) -> (exists pmt_odd_m. m = 2 * pmt_odd_m + 1)) /\ ((exists pmt_odd_m. m = 2 * pmt_odd_m + 1) -> (exists pmt_odd_n. n = 2 * pmt_odd_n + 1)))))Structural proof guide
Generated structural guide
Balanced congruence modulo two preserves both parity predicates.
Use the direct prerequisites even_to_mod_two_zero, mod_two_zero_to_even, odd_to_mod_two_one, mod_two_one_to_odd, mod_eq_symm, mod_eq_trans as previously established PA formulas.
The proof proceeds by intermediate claims (9).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA00CH even_to_mod_two_zero PA00D4 mod_two_zero_to_even PA00CI odd_to_mod_two_one PA00FK mod_two_one_to_odd PA003L mod_eq_symm PA0024 mod_eq_transDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro n - 0002
intro m - 0003
intro hmod - 0004
have hback : exists pmt_u_m_n pmt_v_m_n. m + 2 * pmt_u_m_n = n + 2 * pmt_v_m_n - 0005
specialize mod_eq_symm 2 - 0006
specialize mod_eq_symm n - 0007
specialize mod_eq_symm m - 0008
apply mod_eq_symm - 0009
exact hmod - 0010
split - 0011
split - 0012
intro hneven - 0013
have hnzero : exists pmt_u_n_zero pmt_v_n_zero. n + 2 * pmt_u_n_zero = 0 + 2 * pmt_v_n_zero - 0014
specialize even_to_mod_two_zero n - 0015
apply even_to_mod_two_zero - 0016
exact hneven - 0017
have hmzero : exists pmt_u_m_zero pmt_v_m_zero. m + 2 * pmt_u_m_zero = 0 + 2 * pmt_v_m_zero - 0018
specialize mod_eq_trans 2 - 0019
specialize mod_eq_trans m - 0020
specialize mod_eq_trans n - 0021
specialize mod_eq_trans 0 - 0022
apply mod_eq_trans - 0023
exact hback - 0024
exact hnzero - 0025
specialize mod_two_zero_to_even m - 0026
apply mod_two_zero_to_even - 0027
exact hmzero - 0028
intro hmeven - 0029
have hmzero : exists pmt_u_m_zero pmt_v_m_zero. m + 2 * pmt_u_m_zero = 0 + 2 * pmt_v_m_zero - 0030
specialize even_to_mod_two_zero m - 0031
apply even_to_mod_two_zero - 0032
exact hmeven - 0033
have hnzero : exists pmt_u_n_zero pmt_v_n_zero. n + 2 * pmt_u_n_zero = 0 + 2 * pmt_v_n_zero - 0034
specialize mod_eq_trans 2 - 0035
specialize mod_eq_trans n - 0036
specialize mod_eq_trans m - 0037
specialize mod_eq_trans 0 - 0038
apply mod_eq_trans - 0039
exact hmod - 0040
exact hmzero - 0041
specialize mod_two_zero_to_even n - 0042
apply mod_two_zero_to_even - 0043
exact hnzero - 0044
split - 0045
intro hnodd - 0046
have hnone : exists pmt_u_n_one pmt_v_n_one. n + 2 * pmt_u_n_one = 1 + 2 * pmt_v_n_one - 0047
specialize odd_to_mod_two_one n - 0048
apply odd_to_mod_two_one - 0049
exact hnodd - 0050
have hmone : exists pmt_u_m_one pmt_v_m_one. m + 2 * pmt_u_m_one = 1 + 2 * pmt_v_m_one - 0051
specialize mod_eq_trans 2 - 0052
specialize mod_eq_trans m - 0053
specialize mod_eq_trans n - 0054
specialize mod_eq_trans 1 - 0055
apply mod_eq_trans - 0056
exact hback - 0057
exact hnone - 0058
specialize mod_two_one_to_odd m - 0059
apply mod_two_one_to_odd - 0060
exact hmone - 0061
intro hmodd - 0062
have hmone : exists pmt_u_m_one pmt_v_m_one. m + 2 * pmt_u_m_one = 1 + 2 * pmt_v_m_one - 0063
specialize odd_to_mod_two_one m - 0064
apply odd_to_mod_two_one - 0065
exact hmodd - 0066
have hnone : exists pmt_u_n_one pmt_v_n_one. n + 2 * pmt_u_n_one = 1 + 2 * pmt_v_n_one - 0067
specialize mod_eq_trans 2 - 0068
specialize mod_eq_trans n - 0069
specialize mod_eq_trans m - 0070
specialize mod_eq_trans 1 - 0071
apply mod_eq_trans - 0072
exact hmod - 0073
exact hmone - 0074
specialize mod_two_one_to_odd n - 0075
apply mod_two_one_to_odd - 0076
exact hnone