Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved. Exact original first-admission records.
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-v25 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
Read the argument
Proof checkpoints
This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.
Named ingredients (6)
01Fix variables and assumptionsL1–3
02Establish hbackL4–9
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq symm.
03Separate the logical casesL10–11
04Fix variables and assumptionsL12–12
Work with arbitrary variables or the premises of the current implication.
- L12
intro hneven
05Establish hnzeroL13–16
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply even to mod two zero.
06Establish hmzeroL17–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L17
have hmzero : exists pmt_u_m_zero pmt_v_m_zero. m + 2 * pmt_u_m_zero = 0 + 2 * pmt_v_m_zero - L18
specialize mod_eq_trans 2 - L19
specialize mod_eq_trans m - L20
specialize mod_eq_trans n - L21
specialize mod_eq_trans 0 - L22
apply mod_eq_trans - L23
exact hback - L24
exact hnzero - L25
specialize mod_two_zero_to_even m - L26
apply mod_two_zero_to_even
07Use earlier factsL27–27
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L27
exact hmzero
08Fix variables and assumptionsL28–28
Work with arbitrary variables or the premises of the current implication.
- L28
intro hmeven
09Establish hmzeroL29–32
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply even to mod two zero.
10Establish hnzeroL33–42
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L33
have hnzero : exists pmt_u_n_zero pmt_v_n_zero. n + 2 * pmt_u_n_zero = 0 + 2 * pmt_v_n_zero - L34
specialize mod_eq_trans 2 - L35
specialize mod_eq_trans n - L36
specialize mod_eq_trans m - L37
specialize mod_eq_trans 0 - L38
apply mod_eq_trans - L39
exact hmod - L40
exact hmzero - L41
specialize mod_two_zero_to_even n - L42
apply mod_two_zero_to_even
11Use earlier factsL43–43
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L43
exact hnzero
12Separate the logical casesL44–44
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L44
split
13Fix variables and assumptionsL45–45
Work with arbitrary variables or the premises of the current implication.
- L45
intro hnodd
14Establish hnoneL46–49
15Establish hmoneL50–59
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L50
have hmone : exists pmt_u_m_one pmt_v_m_one. m + 2 * pmt_u_m_one = 1 + 2 * pmt_v_m_one - L51
specialize mod_eq_trans 2 - L52
specialize mod_eq_trans m - L53
specialize mod_eq_trans n - L54
specialize mod_eq_trans 1 - L55
apply mod_eq_trans - L56
exact hback - L57
exact hnone - L58
specialize mod_two_one_to_odd m - L59
apply mod_two_one_to_odd
16Use earlier factsL60–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L60
exact hmone
17Fix variables and assumptionsL61–61
Work with arbitrary variables or the premises of the current implication.
- L61
intro hmodd
18Establish hmoneL62–65
19Establish hnoneL66–75
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply mod eq trans.
- L66
have hnone : exists pmt_u_n_one pmt_v_n_one. n + 2 * pmt_u_n_one = 1 + 2 * pmt_v_n_one - L67
specialize mod_eq_trans 2 - L68
specialize mod_eq_trans n - L69
specialize mod_eq_trans m - L70
specialize mod_eq_trans 1 - L71
apply mod_eq_trans - L72
exact hmod - L73
exact hmone - L74
specialize mod_two_one_to_odd n - L75
apply mod_two_one_to_odd
20Use earlier factsL76–76
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L76
exact hnone
Original exact command ledger · 76 lines
- 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