Exact expanded first-order arithmetic statement
forall p l. (forall i. (exists pfa_gap_negatechoice_domain. pfa_gap_negatechoice_domain + S (i) = (l)) -> exists v. (((exists pfa_gap_negatechoice_valueadditionleft. pfa_gap_negatechoice_valueadditionleft + S (i) = (p)) /\ (((exists pfa_gap_negatechoice_valueadditionright. pfa_gap_negatechoice_valueadditionright + S (v) = (p)) /\ ((((exists pfa_gap_negatechoice_valueadditionresultbound. pfa_gap_negatechoice_valueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negatechoice_valueadditionresultcongruence pfa_offset_right_negatechoice_valueadditionresultcongruence. ((i) + (v)) + (p) * pfa_offset_left_negatechoice_valueadditionresultcongruence = (0) + (p) * pfa_offset_right_negatechoice_valueadditionresultcongruence)))))))))) -> (exists b c. (forall pft_index_negatechoice_result. (exists pfa_gap_negatechoice_resultprefix. pfa_gap_negatechoice_resultprefix + S (pft_index_negatechoice_result) = (l)) -> exists pft_value_negatechoice_result. (((((exists ff_h_pft_negatechoice_resultpointentry. ff_h_pft_negatechoice_resultpointentry + S (pft_value_negatechoice_result) = S ((S (pft_index_negatechoice_result)) * c)) /\ exists ff_q_pft_negatechoice_resultpointentry. b = ff_q_pft_negatechoice_resultpointentry * S ((S (pft_index_negatechoice_result)) * c) + (pft_value_negatechoice_result))) /\ ((((exists pfa_gap_negatechoice_resultpointvalueadditionleft. pfa_gap_negatechoice_resultpointvalueadditionleft + S (pft_index_negatechoice_result) = (p)) /\ (((exists pfa_gap_negatechoice_resultpointvalueadditionright. pfa_gap_negatechoice_resultpointvalueadditionright + S (pft_value_negatechoice_result) = (p)) /\ ((((exists pfa_gap_negatechoice_resultpointvalueadditionresultbound. pfa_gap_negatechoice_resultpointvalueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negatechoice_resultpointvalueadditionresultcongruence pfa_offset_right_negatechoice_resultpointvalueadditionresultcongruence. ((pft_index_negatechoice_result) + (pft_value_negatechoice_result)) + (p) * pfa_offset_left_negatechoice_resultpointvalueadditionresultcongruence = (0) + (p) * pfa_offset_right_negatechoice_resultpointvalueadditionresultcongruence))))))))))))))Constructive proof overview
Generated structural guide
Ordinary finite induction codes actual pointwise negate witnesses; no choice axiom or unproved field law is introduced.
The unchanged tactic script uses 6 declared prerequisites and contains 75 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
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–57
21Construct an explicit witnessL58–58
Supply the displayed value, then prove that it has the required property.
- L58
exists x2
22Separate the logical casesL59–59
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L59
split
23Use earlier factsL60–61
24Establish holdL62–65
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprev witness witness.
25Separate the logical casesL66–67
26Construct an explicit witnessL68–68
Supply the displayed value, then prove that it has the required property.
- L68
exists x5
27Separate the logical casesL69–69
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L69
split
28Use earlier factsL70–75
Original exact command ledger · 75 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_negatechoice_previous. (exists pfa_gap_negatechoice_previousprefix. pfa_gap_negatechoice_previousprefix + S (pft_index_negatechoice_previous) = (l)) -> exists pft_value_negatechoice_previous. (((((exists ff_h_pft_negatechoice_previouspointentry. ff_h_pft_negatechoice_previouspointentry + S (pft_value_negatechoice_previous) = S ((S (pft_index_negatechoice_previous)) * c)) /\ exists ff_q_pft_negatechoice_previouspointentry. b = ff_q_pft_negatechoice_previouspointentry * S ((S (pft_index_negatechoice_previous)) * c) + (pft_value_negatechoice_previous))) /\ ((((exists pfa_gap_negatechoice_previouspointvalueadditionleft. pfa_gap_negatechoice_previouspointvalueadditionleft + S (pft_index_negatechoice_previous) = (p)) /\ (((exists pfa_gap_negatechoice_previouspointvalueadditionright. pfa_gap_negatechoice_previouspointvalueadditionright + S (pft_value_negatechoice_previous) = (p)) /\ ((((exists pfa_gap_negatechoice_previouspointvalueadditionresultbound. pfa_gap_negatechoice_previouspointvalueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negatechoice_previouspointvalueadditionresultcongruence pfa_offset_right_negatechoice_previouspointvalueadditionresultcongruence. ((pft_index_negatechoice_previous) + (pft_value_negatechoice_previous)) + (p) * pfa_offset_left_negatechoice_previouspointvalueadditionresultcongruence = (0) + (p) * pfa_offset_right_negatechoice_previouspointvalueadditionresultcongruence))))))))))))) - 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 pfa_gap_negatechoice_last_valueadditionleft. pfa_gap_negatechoice_last_valueadditionleft + S (l) = (p)) /\ (((exists pfa_gap_negatechoice_last_valueadditionright. pfa_gap_negatechoice_last_valueadditionright + S (v) = (p)) /\ ((((exists pfa_gap_negatechoice_last_valueadditionresultbound. pfa_gap_negatechoice_last_valueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negatechoice_last_valueadditionresultcongruence pfa_offset_right_negatechoice_last_valueadditionresultcongruence. ((l) + (v)) + (p) * pfa_offset_left_negatechoice_last_valueadditionresultcongruence = (0) + (p) * pfa_offset_right_negatechoice_last_valueadditionresultcongruence))))))))) - 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_negatechoice_last_entry. ff_h_pft_negatechoice_last_entry + S (x2) = S ((S (l)) * c)) /\ exists ff_q_pft_negatechoice_last_entry. b = ff_q_pft_negatechoice_last_entry * S ((S (l)) * c) + (x2))) /\ (forall i v. (exists pfa_gap_negatechoice_preserve_bound. pfa_gap_negatechoice_preserve_bound + S (i) = (l)) -> (((exists ff_h_pft_negatechoice_old. ff_h_pft_negatechoice_old + S (v) = S ((S (i)) * x1)) /\ exists ff_q_pft_negatechoice_old. x = ff_q_pft_negatechoice_old * S ((S (i)) * x1) + (v))) -> (((exists ff_h_pft_negatechoice_new. ff_h_pft_negatechoice_new + S (v) = S ((S (i)) * c)) /\ exists ff_q_pft_negatechoice_new. b = ff_q_pft_negatechoice_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_negatechoice_cases. pfa_gap_negatechoice_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
rewrite hcases_left - 0058
exists x2 - 0059
split - 0060
exact hext_witness_witness_left - 0061
exact hv_witness - 0062
have hold : exists v. (((((exists ff_h_pft_negatechoice_old_entryentry. ff_h_pft_negatechoice_old_entryentry + S (v) = S ((S (i)) * x1)) /\ exists ff_q_pft_negatechoice_old_entryentry. x = ff_q_pft_negatechoice_old_entryentry * S ((S (i)) * x1) + (v))) /\ ((((exists pfa_gap_negatechoice_old_entryvalueadditionleft. pfa_gap_negatechoice_old_entryvalueadditionleft + S (i) = (p)) /\ (((exists pfa_gap_negatechoice_old_entryvalueadditionright. pfa_gap_negatechoice_old_entryvalueadditionright + S (v) = (p)) /\ ((((exists pfa_gap_negatechoice_old_entryvalueadditionresultbound. pfa_gap_negatechoice_old_entryvalueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negatechoice_old_entryvalueadditionresultcongruence pfa_offset_right_negatechoice_old_entryvalueadditionresultcongruence. ((i) + (v)) + (p) * pfa_offset_left_negatechoice_old_entryvalueadditionresultcongruence = (0) + (p) * pfa_offset_right_negatechoice_old_entryvalueadditionresultcongruence)))))))))))) - 0063
specialize hprev_witness_witness (i) - 0064
apply hprev_witness_witness - 0065
exact hcases_right - 0066
cases hold - 0067
cases hold_witness - 0068
exists x5 - 0069
split - 0070
specialize hext_witness_witness_right (i) - 0071
specialize hext_witness_witness_right (x5) - 0072
apply hext_witness_witness_right - 0073
exact hcases_right - 0074
exact hold_witness_left - 0075
exact hold_witness_right