Exact expanded PA statement
forall b c l n u v m w d. (((((exists fs_h_functional_left_start. fs_h_functional_left_start + S (0) = S ((S (0)) * v)) /\ exists fs_q_functional_left_start. u = fs_q_functional_left_start * S ((S (0)) * v) + (0))) /\ ((((exists fs_h_functional_left_terminal. fs_h_functional_left_terminal + S (n) = S ((S (l)) * v)) /\ exists fs_q_functional_left_terminal. u = fs_q_functional_left_terminal * S ((S (l)) * v) + (n))) /\ forall fs_i_functional_left_steps. (exists fs_lt_functional_left_steps_bound. fs_lt_functional_left_steps_bound + S fs_i_functional_left_steps = l) -> exists fs_a_functional_left_steps fs_r_functional_left_steps fs_s_functional_left_steps. ((((exists fs_h_functional_left_steps_summand. fs_h_functional_left_steps_summand + S (fs_a_functional_left_steps) = S ((S (fs_i_functional_left_steps)) * c)) /\ exists fs_q_functional_left_steps_summand. b = fs_q_functional_left_steps_summand * S ((S (fs_i_functional_left_steps)) * c) + (fs_a_functional_left_steps))) /\ ((((exists fs_h_functional_left_steps_partial. fs_h_functional_left_steps_partial + S (fs_r_functional_left_steps) = S ((S (fs_i_functional_left_steps)) * v)) /\ exists fs_q_functional_left_steps_partial. u = fs_q_functional_left_steps_partial * S ((S (fs_i_functional_left_steps)) * v) + (fs_r_functional_left_steps))) /\ ((((exists fs_h_functional_left_steps_successor. fs_h_functional_left_steps_successor + S (fs_s_functional_left_steps) = S ((S (S fs_i_functional_left_steps)) * v)) /\ exists fs_q_functional_left_steps_successor. u = fs_q_functional_left_steps_successor * S ((S (S fs_i_functional_left_steps)) * v) + (fs_s_functional_left_steps))) /\ fs_s_functional_left_steps = fs_r_functional_left_steps + fs_a_functional_left_steps)))))) -> (((((exists fs_h_functional_right_start. fs_h_functional_right_start + S (0) = S ((S (0)) * d)) /\ exists fs_q_functional_right_start. w = fs_q_functional_right_start * S ((S (0)) * d) + (0))) /\ ((((exists fs_h_functional_right_terminal. fs_h_functional_right_terminal + S (m) = S ((S (l)) * d)) /\ exists fs_q_functional_right_terminal. w = fs_q_functional_right_terminal * S ((S (l)) * d) + (m))) /\ forall fs_i_functional_right_steps. (exists fs_lt_functional_right_steps_bound. fs_lt_functional_right_steps_bound + S fs_i_functional_right_steps = l) -> exists fs_a_functional_right_steps fs_r_functional_right_steps fs_s_functional_right_steps. ((((exists fs_h_functional_right_steps_summand. fs_h_functional_right_steps_summand + S (fs_a_functional_right_steps) = S ((S (fs_i_functional_right_steps)) * c)) /\ exists fs_q_functional_right_steps_summand. b = fs_q_functional_right_steps_summand * S ((S (fs_i_functional_right_steps)) * c) + (fs_a_functional_right_steps))) /\ ((((exists fs_h_functional_right_steps_partial. fs_h_functional_right_steps_partial + S (fs_r_functional_right_steps) = S ((S (fs_i_functional_right_steps)) * d)) /\ exists fs_q_functional_right_steps_partial. w = fs_q_functional_right_steps_partial * S ((S (fs_i_functional_right_steps)) * d) + (fs_r_functional_right_steps))) /\ ((((exists fs_h_functional_right_steps_successor. fs_h_functional_right_steps_successor + S (fs_s_functional_right_steps) = S ((S (S fs_i_functional_right_steps)) * d)) /\ exists fs_q_functional_right_steps_successor. w = fs_q_functional_right_steps_successor * S ((S (S fs_i_functional_right_steps)) * d) + (fs_s_functional_right_steps))) /\ fs_s_functional_right_steps = fs_r_functional_right_steps + fs_a_functional_right_steps)))))) -> n = mStructural proof guide
Two exact prefix-sum traces over one decoded prefix have equal endpoints.
Direct prerequisites: beta_at_unique, le_refl, le_succ, add_congr. The authored body proceeds by structural induction (1), case analysis (20), intermediate claims (11).
Proof neighborhood
Direct dependencies
Direct dependents
Formal native tactic body
Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 0001
intro b - 0002
intro c - 0003
induction l - 0004
intro n - 0005
intro u - 0006
intro v - 0007
intro m - 0008
intro w - 0009
intro d - 0010
intro h1 - 0011
intro h2 - 0012
cases h1 - 0013
cases h1_right - 0014
cases h2 - 0015
cases h2_right - 0016
have hn : n = 0 - 0017
specialize beta_at_unique u - 0018
specialize beta_at_unique v - 0019
specialize beta_at_unique 0 - 0020
specialize beta_at_unique n - 0021
specialize beta_at_unique 0 - 0022
apply beta_at_unique - 0023
exact h1_right_left - 0024
exact h1_left - 0025
have hm : m = 0 - 0026
specialize beta_at_unique w - 0027
specialize beta_at_unique d - 0028
specialize beta_at_unique 0 - 0029
specialize beta_at_unique m - 0030
specialize beta_at_unique 0 - 0031
apply beta_at_unique - 0032
exact h2_right_left - 0033
exact h2_left - 0034
trans 0 - 0035
exact hn - 0036
symm - 0037
exact hm - 0038
intro n - 0039
intro u - 0040
intro v - 0041
intro m - 0042
intro w - 0043
intro d - 0044
intro h1 - 0045
intro h2 - 0046
cases h1 - 0047
cases h1_right - 0048
cases h2 - 0049
cases h2_right - 0050
have hstep1 : exists a r s. ((((exists fs_h_functional_step1_factor. fs_h_functional_step1_factor + S (a) = S ((S (l)) * c)) /\ exists fs_q_functional_step1_factor. b = fs_q_functional_step1_factor * S ((S (l)) * c) + (a))) /\ ((((exists fs_h_functional_step1_partial. fs_h_functional_step1_partial + S (r) = S ((S (l)) * v)) /\ exists fs_q_functional_step1_partial. u = fs_q_functional_step1_partial * S ((S (l)) * v) + (r))) /\ ((((exists fs_h_functional_step1_successor. fs_h_functional_step1_successor + S (s) = S ((S (S l)) * v)) /\ exists fs_q_functional_step1_successor. u = fs_q_functional_step1_successor * S ((S (S l)) * v) + (s))) /\ s = r + a))) - 0051
specialize h1_right_right l - 0052
apply h1_right_right - 0053
specialize le_refl (S l) - 0054
exact le_refl - 0055
cases hstep1 - 0056
cases hstep1_witness - 0057
cases hstep1_witness_witness - 0058
cases hstep1_witness_witness_witness - 0059
cases hstep1_witness_witness_witness_right - 0060
cases hstep1_witness_witness_witness_right_right - 0061
have hstep2 : exists a r s. ((((exists fs_h_functional_step2_factor. fs_h_functional_step2_factor + S (a) = S ((S (l)) * c)) /\ exists fs_q_functional_step2_factor. b = fs_q_functional_step2_factor * S ((S (l)) * c) + (a))) /\ ((((exists fs_h_functional_step2_partial. fs_h_functional_step2_partial + S (r) = S ((S (l)) * d)) /\ exists fs_q_functional_step2_partial. w = fs_q_functional_step2_partial * S ((S (l)) * d) + (r))) /\ ((((exists fs_h_functional_step2_successor. fs_h_functional_step2_successor + S (s) = S ((S (S l)) * d)) /\ exists fs_q_functional_step2_successor. w = fs_q_functional_step2_successor * S ((S (S l)) * d) + (s))) /\ s = r + a))) - 0062
specialize h2_right_right l - 0063
apply h2_right_right - 0064
specialize le_refl (S l) - 0065
exact le_refl - 0066
cases hstep2 - 0067
cases hstep2_witness - 0068
cases hstep2_witness_witness - 0069
cases hstep2_witness_witness_witness - 0070
cases hstep2_witness_witness_witness_right - 0071
cases hstep2_witness_witness_witness_right_right - 0072
have hn : n = x2 - 0073
specialize beta_at_unique u - 0074
specialize beta_at_unique v - 0075
specialize beta_at_unique (S l) - 0076
specialize beta_at_unique n - 0077
specialize beta_at_unique x2 - 0078
apply beta_at_unique - 0079
exact h1_right_left - 0080
exact hstep1_witness_witness_witness_right_right_left - 0081
have hm : m = x5 - 0082
specialize beta_at_unique w - 0083
specialize beta_at_unique d - 0084
specialize beta_at_unique (S l) - 0085
specialize beta_at_unique m - 0086
specialize beta_at_unique x5 - 0087
apply beta_at_unique - 0088
exact h2_right_left - 0089
exact hstep2_witness_witness_witness_right_right_left - 0090
have ha : x = x3 - 0091
specialize beta_at_unique b - 0092
specialize beta_at_unique c - 0093
specialize beta_at_unique l - 0094
specialize beta_at_unique x - 0095
specialize beta_at_unique x3 - 0096
apply beta_at_unique - 0097
exact hstep1_witness_witness_witness_left - 0098
exact hstep2_witness_witness_witness_left - 0099
have hsum1 : ((((exists fs_h_functional_prefix1_start. fs_h_functional_prefix1_start + S (0) = S ((S (0)) * v)) /\ exists fs_q_functional_prefix1_start. u = fs_q_functional_prefix1_start * S ((S (0)) * v) + (0))) /\ ((((exists fs_h_functional_prefix1_terminal. fs_h_functional_prefix1_terminal + S (x1) = S ((S (l)) * v)) /\ exists fs_q_functional_prefix1_terminal. u = fs_q_functional_prefix1_terminal * S ((S (l)) * v) + (x1))) /\ forall fs_i_functional_prefix1_steps. (exists fs_lt_functional_prefix1_steps_bound. fs_lt_functional_prefix1_steps_bound + S fs_i_functional_prefix1_steps = l) -> exists fs_a_functional_prefix1_steps fs_r_functional_prefix1_steps fs_s_functional_prefix1_steps. ((((exists fs_h_functional_prefix1_steps_summand. fs_h_functional_prefix1_steps_summand + S (fs_a_functional_prefix1_steps) = S ((S (fs_i_functional_prefix1_steps)) * c)) /\ exists fs_q_functional_prefix1_steps_summand. b = fs_q_functional_prefix1_steps_summand * S ((S (fs_i_functional_prefix1_steps)) * c) + (fs_a_functional_prefix1_steps))) /\ ((((exists fs_h_functional_prefix1_steps_partial. fs_h_functional_prefix1_steps_partial + S (fs_r_functional_prefix1_steps) = S ((S (fs_i_functional_prefix1_steps)) * v)) /\ exists fs_q_functional_prefix1_steps_partial. u = fs_q_functional_prefix1_steps_partial * S ((S (fs_i_functional_prefix1_steps)) * v) + (fs_r_functional_prefix1_steps))) /\ ((((exists fs_h_functional_prefix1_steps_successor. fs_h_functional_prefix1_steps_successor + S (fs_s_functional_prefix1_steps) = S ((S (S fs_i_functional_prefix1_steps)) * v)) /\ exists fs_q_functional_prefix1_steps_successor. u = fs_q_functional_prefix1_steps_successor * S ((S (S fs_i_functional_prefix1_steps)) * v) + (fs_s_functional_prefix1_steps))) /\ fs_s_functional_prefix1_steps = fs_r_functional_prefix1_steps + fs_a_functional_prefix1_steps))))) - 0100
split - 0101
exact h1_left - 0102
split - 0103
exact hstep1_witness_witness_witness_right_left - 0104
intro i - 0105
intro hi - 0106
specialize h1_right_right i - 0107
apply h1_right_right - 0108
specialize le_succ (S i) - 0109
specialize le_succ l - 0110
apply le_succ - 0111
exact hi - 0112
have hsum2 : ((((exists fs_h_functional_prefix2_start. fs_h_functional_prefix2_start + S (0) = S ((S (0)) * d)) /\ exists fs_q_functional_prefix2_start. w = fs_q_functional_prefix2_start * S ((S (0)) * d) + (0))) /\ ((((exists fs_h_functional_prefix2_terminal. fs_h_functional_prefix2_terminal + S (x4) = S ((S (l)) * d)) /\ exists fs_q_functional_prefix2_terminal. w = fs_q_functional_prefix2_terminal * S ((S (l)) * d) + (x4))) /\ forall fs_i_functional_prefix2_steps. (exists fs_lt_functional_prefix2_steps_bound. fs_lt_functional_prefix2_steps_bound + S fs_i_functional_prefix2_steps = l) -> exists fs_a_functional_prefix2_steps fs_r_functional_prefix2_steps fs_s_functional_prefix2_steps. ((((exists fs_h_functional_prefix2_steps_summand. fs_h_functional_prefix2_steps_summand + S (fs_a_functional_prefix2_steps) = S ((S (fs_i_functional_prefix2_steps)) * c)) /\ exists fs_q_functional_prefix2_steps_summand. b = fs_q_functional_prefix2_steps_summand * S ((S (fs_i_functional_prefix2_steps)) * c) + (fs_a_functional_prefix2_steps))) /\ ((((exists fs_h_functional_prefix2_steps_partial. fs_h_functional_prefix2_steps_partial + S (fs_r_functional_prefix2_steps) = S ((S (fs_i_functional_prefix2_steps)) * d)) /\ exists fs_q_functional_prefix2_steps_partial. w = fs_q_functional_prefix2_steps_partial * S ((S (fs_i_functional_prefix2_steps)) * d) + (fs_r_functional_prefix2_steps))) /\ ((((exists fs_h_functional_prefix2_steps_successor. fs_h_functional_prefix2_steps_successor + S (fs_s_functional_prefix2_steps) = S ((S (S fs_i_functional_prefix2_steps)) * d)) /\ exists fs_q_functional_prefix2_steps_successor. w = fs_q_functional_prefix2_steps_successor * S ((S (S fs_i_functional_prefix2_steps)) * d) + (fs_s_functional_prefix2_steps))) /\ fs_s_functional_prefix2_steps = fs_r_functional_prefix2_steps + fs_a_functional_prefix2_steps))))) - 0113
split - 0114
exact h2_left - 0115
split - 0116
exact hstep2_witness_witness_witness_right_left - 0117
intro i - 0118
intro hi - 0119
specialize h2_right_right i - 0120
apply h2_right_right - 0121
specialize le_succ (S i) - 0122
specialize le_succ l - 0123
apply le_succ - 0124
exact hi - 0125
have hprev : x1 = x4 - 0126
specialize IH x1 - 0127
specialize IH u - 0128
specialize IH v - 0129
specialize IH x4 - 0130
specialize IH w - 0131
specialize IH d - 0132
apply IH - 0133
exact hsum1 - 0134
exact hsum2 - 0135
have hadd : x1 + x = x4 + x3 - 0136
specialize add_congr x1 - 0137
specialize add_congr x4 - 0138
specialize add_congr x - 0139
specialize add_congr x3 - 0140
apply add_congr - 0141
exact hprev - 0142
exact ha - 0143
trans x2 - 0144
exact hn - 0145
trans x1 + x - 0146
exact hstep1_witness_witness_witness_right_right_right - 0147
trans x4 + x3 - 0148
exact hadd - 0149
trans x5 - 0150
symm - 0151
exact hstep2_witness_witness_witness_right_right_right - 0152
symm - 0153
exact hm