Exact expanded first-order arithmetic statement
forall p l. (forall i. (exists pfa_gap_addchoice_domain. pfa_gap_addchoice_domain + S (i) = (l)) -> exists v. (exists pft_row_addchoice_value pft_column_addchoice_value. (((i) = pft_row_addchoice_value * (p) + pft_column_addchoice_value) /\ ((((exists pfa_gap_addchoice_valueoperationleft. pfa_gap_addchoice_valueoperationleft + S (pft_row_addchoice_value) = (p)) /\ (((exists pfa_gap_addchoice_valueoperationright. pfa_gap_addchoice_valueoperationright + S (pft_column_addchoice_value) = (p)) /\ ((((exists pfa_gap_addchoice_valueoperationresultbound. pfa_gap_addchoice_valueoperationresultbound + S (v) = (p)) /\ ((exists pfa_offset_left_addchoice_valueoperationresultcongruence pfa_offset_right_addchoice_valueoperationresultcongruence. ((pft_row_addchoice_value) + (pft_column_addchoice_value)) + (p) * pfa_offset_left_addchoice_valueoperationresultcongruence = (v) + (p) * pfa_offset_right_addchoice_valueoperationresultcongruence))))))))))))) -> (exists b c. (forall pft_index_addchoice_result. (exists pfa_gap_addchoice_resultprefix. pfa_gap_addchoice_resultprefix + S (pft_index_addchoice_result) = (l)) -> exists pft_value_addchoice_result. (((((exists ff_h_pft_addchoice_resultpointentry. ff_h_pft_addchoice_resultpointentry + S (pft_value_addchoice_result) = S ((S (pft_index_addchoice_result)) * c)) /\ exists ff_q_pft_addchoice_resultpointentry. b = ff_q_pft_addchoice_resultpointentry * S ((S (pft_index_addchoice_result)) * c) + (pft_value_addchoice_result))) /\ ((exists pft_row_addchoice_resultpointvalue pft_column_addchoice_resultpointvalue. (((pft_index_addchoice_result) = pft_row_addchoice_resultpointvalue * (p) + pft_column_addchoice_resultpointvalue) /\ ((((exists pfa_gap_addchoice_resultpointvalueoperationleft. pfa_gap_addchoice_resultpointvalueoperationleft + S (pft_row_addchoice_resultpointvalue) = (p)) /\ (((exists pfa_gap_addchoice_resultpointvalueoperationright. pfa_gap_addchoice_resultpointvalueoperationright + S (pft_column_addchoice_resultpointvalue) = (p)) /\ ((((exists pfa_gap_addchoice_resultpointvalueoperationresultbound. pfa_gap_addchoice_resultpointvalueoperationresultbound + S (pft_value_addchoice_result) = (p)) /\ ((exists pfa_offset_left_addchoice_resultpointvalueoperationresultcongruence pfa_offset_right_addchoice_resultpointvalueoperationresultcongruence. ((pft_row_addchoice_resultpointvalue) + (pft_column_addchoice_resultpointvalue)) + (p) * pfa_offset_left_addchoice_resultpointvalueoperationresultcongruence = (pft_value_addchoice_result) + (p) * pfa_offset_right_addchoice_resultpointvalueoperationresultcongruence)))))))))))))))))Constructive proof overview
Generated structural guide
Ordinary finite induction codes actual pointwise add witnesses; no choice axiom or unproved field law is introduced.
The unchanged tactic script uses 6 declared prerequisites and contains 74 exact native proof lines.
Public research checkpoint: original HA and independently compiled Lean verified; not Alpha-enrolled, no Alpha checked-use authority; not Stable
Proof neighborhood
Direct dependencies
lt_not_le Alpha theorem; checked-use authorized zero_le Alpha theorem; checked-use authorized le_succ Alpha theorem; checked-use authorized zero_add Alpha theorem; checked-use authorized beta_prefix_extend Alpha theorem; checked-use authorized finite_lt_succ_eq_or_lt Alpha theorem; checked-use authorizedDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. The literal dependency-closed bundle is checked by original HA and the independently compiled Lean verifier. Public delivery grants no Alpha checked-use authority or Stable membership.
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.
01Fix variables and assumptionsL1–2
02Induction on lL3–4
03Construct an explicit witnessL5–6
04Fix variables and assumptionsL7–8
05Separate the logical casesL9–9
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L9
exfalso
06Use earlier factsL10–15
07Fix variables and assumptionsL16–16
Work with arbitrary variables or the premises of the current implication.
- L16
intro htotal
08Establish hprevL17–26
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
09Separate the logical casesL27–28
10Establish hvL29–31
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply htotal.
- L29
have hv : ∃ v. FpAddGridValue(p,l,v)Definitions: FpAddGridValue - L30
specialize htotal (l) - L31
apply htotal
11Construct an explicit witnessL32–32
Supply the displayed value, then prove that it has the required property.
- L32
exists 0
12Use earlier factsL33–33
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
apply zero_add
13Separate the logical casesL34–34
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L34
cases hv
14Establish hextL35–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta prefix extend.
15Separate the logical casesL41–43
16Construct an explicit witnessL44–45
17Fix variables and assumptionsL46–47
18Establish hcasesL48–52
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
19Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
cases hcases
20Calculate and transport equalitiesL54–56
21Construct an explicit witnessL57–57
Supply the displayed value, then prove that it has the required property.
- L57
exists x2
22Separate the logical casesL58–58
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L58
split
23Use earlier factsL59–60
24Establish holdL61–64
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprev witness witness.
25Separate the logical casesL65–66
26Construct an explicit witnessL67–67
Supply the displayed value, then prove that it has the required property.
- L67
exists x5
27Separate the logical casesL68–68
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L68
split
28Use earlier factsL69–74
Original exact command ledger · 74 lines
- 0001
intro p - 0002
intro l - 0003
induction l - 0004
intro htotal - 0005
exists 0 - 0006
exists 0 - 0007
intro i - 0008
intro hi - 0009
exfalso - 0010
specialize lt_not_le (i) - 0011
specialize lt_not_le (0) - 0012
apply lt_not_le - 0013
exact hi - 0014
specialize zero_le (i) - 0015
apply zero_le - 0016
intro htotal - 0017
have hprev : exists b c. (forall pft_index_addchoice_previous. (exists pfa_gap_addchoice_previousprefix. pfa_gap_addchoice_previousprefix + S (pft_index_addchoice_previous) = (l)) -> exists pft_value_addchoice_previous. (((((exists ff_h_pft_addchoice_previouspointentry. ff_h_pft_addchoice_previouspointentry + S (pft_value_addchoice_previous) = S ((S (pft_index_addchoice_previous)) * c)) /\ exists ff_q_pft_addchoice_previouspointentry. b = ff_q_pft_addchoice_previouspointentry * S ((S (pft_index_addchoice_previous)) * c) + (pft_value_addchoice_previous))) /\ ((exists pft_row_addchoice_previouspointvalue pft_column_addchoice_previouspointvalue. (((pft_index_addchoice_previous) = pft_row_addchoice_previouspointvalue * (p) + pft_column_addchoice_previouspointvalue) /\ ((((exists pfa_gap_addchoice_previouspointvalueoperationleft. pfa_gap_addchoice_previouspointvalueoperationleft + S (pft_row_addchoice_previouspointvalue) = (p)) /\ (((exists pfa_gap_addchoice_previouspointvalueoperationright. pfa_gap_addchoice_previouspointvalueoperationright + S (pft_column_addchoice_previouspointvalue) = (p)) /\ ((((exists pfa_gap_addchoice_previouspointvalueoperationresultbound. pfa_gap_addchoice_previouspointvalueoperationresultbound + S (pft_value_addchoice_previous) = (p)) /\ ((exists pfa_offset_left_addchoice_previouspointvalueoperationresultcongruence pfa_offset_right_addchoice_previouspointvalueoperationresultcongruence. ((pft_row_addchoice_previouspointvalue) + (pft_column_addchoice_previouspointvalue)) + (p) * pfa_offset_left_addchoice_previouspointvalueoperationresultcongruence = (pft_value_addchoice_previous) + (p) * pfa_offset_right_addchoice_previouspointvalueoperationresultcongruence)))))))))))))))) - 0018
apply IH - 0019
intro i - 0020
intro hi - 0021
specialize htotal (i) - 0022
apply htotal - 0023
specialize le_succ (S i) - 0024
specialize le_succ (l) - 0025
apply le_succ - 0026
exact hi - 0027
cases hprev - 0028
cases hprev_witness - 0029
have hv : exists v. (exists pft_row_addchoice_last_value pft_column_addchoice_last_value. (((l) = pft_row_addchoice_last_value * (p) + pft_column_addchoice_last_value) /\ ((((exists pfa_gap_addchoice_last_valueoperationleft. pfa_gap_addchoice_last_valueoperationleft + S (pft_row_addchoice_last_value) = (p)) /\ (((exists pfa_gap_addchoice_last_valueoperationright. pfa_gap_addchoice_last_valueoperationright + S (pft_column_addchoice_last_value) = (p)) /\ ((((exists pfa_gap_addchoice_last_valueoperationresultbound. pfa_gap_addchoice_last_valueoperationresultbound + S (v) = (p)) /\ ((exists pfa_offset_left_addchoice_last_valueoperationresultcongruence pfa_offset_right_addchoice_last_valueoperationresultcongruence. ((pft_row_addchoice_last_value) + (pft_column_addchoice_last_value)) + (p) * pfa_offset_left_addchoice_last_valueoperationresultcongruence = (v) + (p) * pfa_offset_right_addchoice_last_valueoperationresultcongruence)))))))))))) - 0030
specialize htotal (l) - 0031
apply htotal - 0032
exists 0 - 0033
apply zero_add - 0034
cases hv - 0035
have hext : exists b c. (((exists ff_h_pft_addchoice_last_entry. ff_h_pft_addchoice_last_entry + S (x2) = S ((S (l)) * c)) /\ exists ff_q_pft_addchoice_last_entry. b = ff_q_pft_addchoice_last_entry * S ((S (l)) * c) + (x2))) /\ (forall i v. (exists pfa_gap_addchoice_preserve_bound. pfa_gap_addchoice_preserve_bound + S (i) = (l)) -> (((exists ff_h_pft_addchoice_old. ff_h_pft_addchoice_old + S (v) = S ((S (i)) * x1)) /\ exists ff_q_pft_addchoice_old. x = ff_q_pft_addchoice_old * S ((S (i)) * x1) + (v))) -> (((exists ff_h_pft_addchoice_new. ff_h_pft_addchoice_new + S (v) = S ((S (i)) * c)) /\ exists ff_q_pft_addchoice_new. b = ff_q_pft_addchoice_new * S ((S (i)) * c) + (v)))) - 0036
specialize beta_prefix_extend (l) - 0037
specialize beta_prefix_extend (x) - 0038
specialize beta_prefix_extend (x1) - 0039
specialize beta_prefix_extend (x2) - 0040
apply beta_prefix_extend - 0041
cases hext - 0042
cases hext_witness - 0043
cases hext_witness_witness - 0044
exists x3 - 0045
exists x4 - 0046
intro i - 0047
intro hi - 0048
have hcases : i = l \/ (exists pfa_gap_addchoice_cases. pfa_gap_addchoice_cases + S (i) = (l)) - 0049
specialize finite_lt_succ_eq_or_lt (l) - 0050
specialize finite_lt_succ_eq_or_lt (i) - 0051
apply finite_lt_succ_eq_or_lt - 0052
exact hi - 0053
cases hcases - 0054
rewrite hcases_left - 0055
rewrite hcases_left - 0056
rewrite hcases_left - 0057
exists x2 - 0058
split - 0059
exact hext_witness_witness_left - 0060
exact hv_witness - 0061
have hold : exists v. (((((exists ff_h_pft_addchoice_old_entryentry. ff_h_pft_addchoice_old_entryentry + S (v) = S ((S (i)) * x1)) /\ exists ff_q_pft_addchoice_old_entryentry. x = ff_q_pft_addchoice_old_entryentry * S ((S (i)) * x1) + (v))) /\ ((exists pft_row_addchoice_old_entryvalue pft_column_addchoice_old_entryvalue. (((i) = pft_row_addchoice_old_entryvalue * (p) + pft_column_addchoice_old_entryvalue) /\ ((((exists pfa_gap_addchoice_old_entryvalueoperationleft. pfa_gap_addchoice_old_entryvalueoperationleft + S (pft_row_addchoice_old_entryvalue) = (p)) /\ (((exists pfa_gap_addchoice_old_entryvalueoperationright. pfa_gap_addchoice_old_entryvalueoperationright + S (pft_column_addchoice_old_entryvalue) = (p)) /\ ((((exists pfa_gap_addchoice_old_entryvalueoperationresultbound. pfa_gap_addchoice_old_entryvalueoperationresultbound + S (v) = (p)) /\ ((exists pfa_offset_left_addchoice_old_entryvalueoperationresultcongruence pfa_offset_right_addchoice_old_entryvalueoperationresultcongruence. ((pft_row_addchoice_old_entryvalue) + (pft_column_addchoice_old_entryvalue)) + (p) * pfa_offset_left_addchoice_old_entryvalueoperationresultcongruence = (v) + (p) * pfa_offset_right_addchoice_old_entryvalueoperationresultcongruence))))))))))))))) - 0062
specialize hprev_witness_witness (i) - 0063
apply hprev_witness_witness - 0064
exact hcases_right - 0065
cases hold - 0066
cases hold_witness - 0067
exists x5 - 0068
split - 0069
specialize hext_witness_witness_right (i) - 0070
specialize hext_witness_witness_right (x5) - 0071
apply hext_witness_witness_right - 0072
exact hcases_right - 0073
exact hold_witness_left - 0074
exact hold_witness_right