Exact expanded first-order arithmetic statement
forall p. (~((p) = 1) /\ forall pfa_factor_left_all_tables_domain pfa_factor_right_all_tables_domain. (p) = pfa_factor_left_all_tables_domain * pfa_factor_right_all_tables_domain -> pfa_factor_left_all_tables_domain = 1 \/ pfa_factor_right_all_tables_domain = 1) -> exists ab ac mb mc nb nc ib ic. (((forall pft_index_all_tablesadd. (exists pfa_gap_all_tablesaddprefix. pfa_gap_all_tablesaddprefix + S (pft_index_all_tablesadd) = ((p) * (p))) -> exists pft_value_all_tablesadd. (((((exists ff_h_pft_all_tablesaddpointentry. ff_h_pft_all_tablesaddpointentry + S (pft_value_all_tablesadd) = S ((S (pft_index_all_tablesadd)) * ac)) /\ exists ff_q_pft_all_tablesaddpointentry. ab = ff_q_pft_all_tablesaddpointentry * S ((S (pft_index_all_tablesadd)) * ac) + (pft_value_all_tablesadd))) /\ ((exists pft_row_all_tablesaddpointvalue pft_column_all_tablesaddpointvalue. (((pft_index_all_tablesadd) = pft_row_all_tablesaddpointvalue * (p) + pft_column_all_tablesaddpointvalue) /\ ((((exists pfa_gap_all_tablesaddpointvalueoperationleft. pfa_gap_all_tablesaddpointvalueoperationleft + S (pft_row_all_tablesaddpointvalue) = (p)) /\ (((exists pfa_gap_all_tablesaddpointvalueoperationright. pfa_gap_all_tablesaddpointvalueoperationright + S (pft_column_all_tablesaddpointvalue) = (p)) /\ ((((exists pfa_gap_all_tablesaddpointvalueoperationresultbound. pfa_gap_all_tablesaddpointvalueoperationresultbound + S (pft_value_all_tablesadd) = (p)) /\ ((exists pfa_offset_left_all_tablesaddpointvalueoperationresultcongruence pfa_offset_right_all_tablesaddpointvalueoperationresultcongruence. ((pft_row_all_tablesaddpointvalue) + (pft_column_all_tablesaddpointvalue)) + (p) * pfa_offset_left_all_tablesaddpointvalueoperationresultcongruence = (pft_value_all_tablesadd) + (p) * pfa_offset_right_all_tablesaddpointvalueoperationresultcongruence)))))))))))))))) /\ (((forall pft_index_all_tablesmultiply. (exists pfa_gap_all_tablesmultiplyprefix. pfa_gap_all_tablesmultiplyprefix + S (pft_index_all_tablesmultiply) = ((p) * (p))) -> exists pft_value_all_tablesmultiply. (((((exists ff_h_pft_all_tablesmultiplypointentry. ff_h_pft_all_tablesmultiplypointentry + S (pft_value_all_tablesmultiply) = S ((S (pft_index_all_tablesmultiply)) * mc)) /\ exists ff_q_pft_all_tablesmultiplypointentry. mb = ff_q_pft_all_tablesmultiplypointentry * S ((S (pft_index_all_tablesmultiply)) * mc) + (pft_value_all_tablesmultiply))) /\ ((exists pft_row_all_tablesmultiplypointvalue pft_column_all_tablesmultiplypointvalue. (((pft_index_all_tablesmultiply) = pft_row_all_tablesmultiplypointvalue * (p) + pft_column_all_tablesmultiplypointvalue) /\ ((((exists pfa_gap_all_tablesmultiplypointvalueoperationleft. pfa_gap_all_tablesmultiplypointvalueoperationleft + S (pft_row_all_tablesmultiplypointvalue) = (p)) /\ (((exists pfa_gap_all_tablesmultiplypointvalueoperationright. pfa_gap_all_tablesmultiplypointvalueoperationright + S (pft_column_all_tablesmultiplypointvalue) = (p)) /\ ((((exists pfa_gap_all_tablesmultiplypointvalueoperationresultbound. pfa_gap_all_tablesmultiplypointvalueoperationresultbound + S (pft_value_all_tablesmultiply) = (p)) /\ ((exists pfa_offset_left_all_tablesmultiplypointvalueoperationresultcongruence pfa_offset_right_all_tablesmultiplypointvalueoperationresultcongruence. ((pft_row_all_tablesmultiplypointvalue) * (pft_column_all_tablesmultiplypointvalue)) + (p) * pfa_offset_left_all_tablesmultiplypointvalueoperationresultcongruence = (pft_value_all_tablesmultiply) + (p) * pfa_offset_right_all_tablesmultiplypointvalueoperationresultcongruence)))))))))))))))) /\ (((forall pft_index_all_tablesnegate. (exists pfa_gap_all_tablesnegateprefix. pfa_gap_all_tablesnegateprefix + S (pft_index_all_tablesnegate) = (p)) -> exists pft_value_all_tablesnegate. (((((exists ff_h_pft_all_tablesnegatepointentry. ff_h_pft_all_tablesnegatepointentry + S (pft_value_all_tablesnegate) = S ((S (pft_index_all_tablesnegate)) * nc)) /\ exists ff_q_pft_all_tablesnegatepointentry. nb = ff_q_pft_all_tablesnegatepointentry * S ((S (pft_index_all_tablesnegate)) * nc) + (pft_value_all_tablesnegate))) /\ ((((exists pfa_gap_all_tablesnegatepointvalueadditionleft. pfa_gap_all_tablesnegatepointvalueadditionleft + S (pft_index_all_tablesnegate) = (p)) /\ (((exists pfa_gap_all_tablesnegatepointvalueadditionright. pfa_gap_all_tablesnegatepointvalueadditionright + S (pft_value_all_tablesnegate) = (p)) /\ ((((exists pfa_gap_all_tablesnegatepointvalueadditionresultbound. pfa_gap_all_tablesnegatepointvalueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_all_tablesnegatepointvalueadditionresultcongruence pfa_offset_right_all_tablesnegatepointvalueadditionresultcongruence. ((pft_index_all_tablesnegate) + (pft_value_all_tablesnegate)) + (p) * pfa_offset_left_all_tablesnegatepointvalueadditionresultcongruence = (0) + (p) * pfa_offset_right_all_tablesnegatepointvalueadditionresultcongruence))))))))))))) /\ ((forall pft_index_all_tablesinverse. (exists pfa_gap_all_tablesinverseprefix. pfa_gap_all_tablesinverseprefix + S (pft_index_all_tablesinverse) = (p)) -> exists pft_value_all_tablesinverse. (((((exists ff_h_pft_all_tablesinversepointentry. ff_h_pft_all_tablesinversepointentry + S (pft_value_all_tablesinverse) = S ((S (pft_index_all_tablesinverse)) * ic)) /\ exists ff_q_pft_all_tablesinversepointentry. ib = ff_q_pft_all_tablesinversepointentry * S ((S (pft_index_all_tablesinverse)) * ic) + (pft_value_all_tablesinverse))) /\ ((((exists pfa_gap_all_tablesinversepointvalueinput. pfa_gap_all_tablesinversepointvalueinput + S (pft_index_all_tablesinverse) = (p)) /\ (((exists pfa_gap_all_tablesinversepointvalueoutput. pfa_gap_all_tablesinversepointvalueoutput + S (pft_value_all_tablesinverse) = (p)) /\ ((((pft_index_all_tablesinverse) = 0 /\ (pft_value_all_tablesinverse) = 0) \/ (((~((pft_index_all_tablesinverse) = 0)) /\ ((((exists pfa_gap_all_tablesinversepointvaluenonzeromultiplicationleft. pfa_gap_all_tablesinversepointvaluenonzeromultiplicationleft + S (pft_index_all_tablesinverse) = (p)) /\ (((exists pfa_gap_all_tablesinversepointvaluenonzeromultiplicationright. pfa_gap_all_tablesinversepointvaluenonzeromultiplicationright + S (pft_value_all_tablesinverse) = (p)) /\ ((((exists pfa_gap_all_tablesinversepointvaluenonzeromultiplicationresultbound. pfa_gap_all_tablesinversepointvaluenonzeromultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_all_tablesinversepointvaluenonzeromultiplicationresultcongruence pfa_offset_right_all_tablesinversepointvaluenonzeromultiplicationresultcongruence. ((pft_index_all_tablesinverse) * (pft_value_all_tablesinverse)) + (p) * pfa_offset_left_all_tablesinversepointvaluenonzeromultiplicationresultcongruence = (1) + (p) * pfa_offset_right_all_tablesinversepointvaluenonzeromultiplicationresultcongruence)))))))))))))))))))))))))))))Constructive proof overview
Generated structural guide
Every prime has four actual finite beta-coded arithmetic tables; zero is only a totalized inverse-table convention.
The unchanged tactic script uses 4 declared prerequisites and contains 41 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
FP0033 prime_field_add_table_exists FP0034 prime_field_multiply_table_exists FP0035 prime_field_negate_table_exists FP0036 prime_field_inverse_table_existsDirect 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.
Named ingredients (4)
01Fix variables and assumptionsL1–2
02Establish haddL3–6
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field add table exists.
- L3
have hadd : ∃ b. ∃ c. FpAddPrefix(p,b,c,p · p)Definitions: FpAddPrefix - L4
specialize prime_field_add_table_exists (p) - L5
apply prime_field_add_table_exists - L6
exact hp
03Separate the logical casesL7–8
04Establish hmultiplyL9–12
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field multiply table exists.
- L9
have hmultiply : ∃ b. ∃ c. FpMulPrefix(p,b,c,p · p)Definitions: FpMulPrefix - L10
specialize prime_field_multiply_table_exists (p) - L11
apply prime_field_multiply_table_exists - L12
exact hp
05Separate the logical casesL13–14
06Establish hnegateL15–18
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field negate table exists.
- L15
have hnegate : ∃ b. ∃ c. FpNegPrefix(p,b,c,p)Definitions: FpNegPrefix - L16
specialize prime_field_negate_table_exists (p) - L17
apply prime_field_negate_table_exists - L18
exact hp
07Separate the logical casesL19–20
08Establish hinverseL21–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field inverse table exists.
- L21
have hinverse : ∃ b. ∃ c. FpInvPrefix(p,b,c,p)Definitions: FpInvPrefix - L22
specialize prime_field_inverse_table_exists (p) - L23
apply prime_field_inverse_table_exists - L24
exact hp
09Separate the logical casesL25–26
10Construct an explicit witnessL27–34
11Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
split
12Use earlier factsL36–36
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L36
exact hadd_witness_witness
13Separate the logical casesL37–37
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L37
split
14Use earlier factsL38–38
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L38
exact hmultiply_witness_witness
15Separate the logical casesL39–39
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L39
split
Original exact command ledger · 41 lines
- 0001
intro p - 0002
intro hp - 0003
have hadd : exists b c. (forall pft_index_addall_tables. (exists pfa_gap_addall_tablesprefix. pfa_gap_addall_tablesprefix + S (pft_index_addall_tables) = ((p) * (p))) -> exists pft_value_addall_tables. (((((exists ff_h_pft_addall_tablespointentry. ff_h_pft_addall_tablespointentry + S (pft_value_addall_tables) = S ((S (pft_index_addall_tables)) * c)) /\ exists ff_q_pft_addall_tablespointentry. b = ff_q_pft_addall_tablespointentry * S ((S (pft_index_addall_tables)) * c) + (pft_value_addall_tables))) /\ ((exists pft_row_addall_tablespointvalue pft_column_addall_tablespointvalue. (((pft_index_addall_tables) = pft_row_addall_tablespointvalue * (p) + pft_column_addall_tablespointvalue) /\ ((((exists pfa_gap_addall_tablespointvalueoperationleft. pfa_gap_addall_tablespointvalueoperationleft + S (pft_row_addall_tablespointvalue) = (p)) /\ (((exists pfa_gap_addall_tablespointvalueoperationright. pfa_gap_addall_tablespointvalueoperationright + S (pft_column_addall_tablespointvalue) = (p)) /\ ((((exists pfa_gap_addall_tablespointvalueoperationresultbound. pfa_gap_addall_tablespointvalueoperationresultbound + S (pft_value_addall_tables) = (p)) /\ ((exists pfa_offset_left_addall_tablespointvalueoperationresultcongruence pfa_offset_right_addall_tablespointvalueoperationresultcongruence. ((pft_row_addall_tablespointvalue) + (pft_column_addall_tablespointvalue)) + (p) * pfa_offset_left_addall_tablespointvalueoperationresultcongruence = (pft_value_addall_tables) + (p) * pfa_offset_right_addall_tablespointvalueoperationresultcongruence)))))))))))))))) - 0004
specialize prime_field_add_table_exists (p) - 0005
apply prime_field_add_table_exists - 0006
exact hp - 0007
cases hadd - 0008
cases hadd_witness - 0009
have hmultiply : exists b c. (forall pft_index_multiplyall_tables. (exists pfa_gap_multiplyall_tablesprefix. pfa_gap_multiplyall_tablesprefix + S (pft_index_multiplyall_tables) = ((p) * (p))) -> exists pft_value_multiplyall_tables. (((((exists ff_h_pft_multiplyall_tablespointentry. ff_h_pft_multiplyall_tablespointentry + S (pft_value_multiplyall_tables) = S ((S (pft_index_multiplyall_tables)) * c)) /\ exists ff_q_pft_multiplyall_tablespointentry. b = ff_q_pft_multiplyall_tablespointentry * S ((S (pft_index_multiplyall_tables)) * c) + (pft_value_multiplyall_tables))) /\ ((exists pft_row_multiplyall_tablespointvalue pft_column_multiplyall_tablespointvalue. (((pft_index_multiplyall_tables) = pft_row_multiplyall_tablespointvalue * (p) + pft_column_multiplyall_tablespointvalue) /\ ((((exists pfa_gap_multiplyall_tablespointvalueoperationleft. pfa_gap_multiplyall_tablespointvalueoperationleft + S (pft_row_multiplyall_tablespointvalue) = (p)) /\ (((exists pfa_gap_multiplyall_tablespointvalueoperationright. pfa_gap_multiplyall_tablespointvalueoperationright + S (pft_column_multiplyall_tablespointvalue) = (p)) /\ ((((exists pfa_gap_multiplyall_tablespointvalueoperationresultbound. pfa_gap_multiplyall_tablespointvalueoperationresultbound + S (pft_value_multiplyall_tables) = (p)) /\ ((exists pfa_offset_left_multiplyall_tablespointvalueoperationresultcongruence pfa_offset_right_multiplyall_tablespointvalueoperationresultcongruence. ((pft_row_multiplyall_tablespointvalue) * (pft_column_multiplyall_tablespointvalue)) + (p) * pfa_offset_left_multiplyall_tablespointvalueoperationresultcongruence = (pft_value_multiplyall_tables) + (p) * pfa_offset_right_multiplyall_tablespointvalueoperationresultcongruence)))))))))))))))) - 0010
specialize prime_field_multiply_table_exists (p) - 0011
apply prime_field_multiply_table_exists - 0012
exact hp - 0013
cases hmultiply - 0014
cases hmultiply_witness - 0015
have hnegate : exists b c. (forall pft_index_negateall_tables. (exists pfa_gap_negateall_tablesprefix. pfa_gap_negateall_tablesprefix + S (pft_index_negateall_tables) = (p)) -> exists pft_value_negateall_tables. (((((exists ff_h_pft_negateall_tablespointentry. ff_h_pft_negateall_tablespointentry + S (pft_value_negateall_tables) = S ((S (pft_index_negateall_tables)) * c)) /\ exists ff_q_pft_negateall_tablespointentry. b = ff_q_pft_negateall_tablespointentry * S ((S (pft_index_negateall_tables)) * c) + (pft_value_negateall_tables))) /\ ((((exists pfa_gap_negateall_tablespointvalueadditionleft. pfa_gap_negateall_tablespointvalueadditionleft + S (pft_index_negateall_tables) = (p)) /\ (((exists pfa_gap_negateall_tablespointvalueadditionright. pfa_gap_negateall_tablespointvalueadditionright + S (pft_value_negateall_tables) = (p)) /\ ((((exists pfa_gap_negateall_tablespointvalueadditionresultbound. pfa_gap_negateall_tablespointvalueadditionresultbound + S (0) = (p)) /\ ((exists pfa_offset_left_negateall_tablespointvalueadditionresultcongruence pfa_offset_right_negateall_tablespointvalueadditionresultcongruence. ((pft_index_negateall_tables) + (pft_value_negateall_tables)) + (p) * pfa_offset_left_negateall_tablespointvalueadditionresultcongruence = (0) + (p) * pfa_offset_right_negateall_tablespointvalueadditionresultcongruence))))))))))))) - 0016
specialize prime_field_negate_table_exists (p) - 0017
apply prime_field_negate_table_exists - 0018
exact hp - 0019
cases hnegate - 0020
cases hnegate_witness - 0021
have hinverse : exists b c. (forall pft_index_inverseall_tables. (exists pfa_gap_inverseall_tablesprefix. pfa_gap_inverseall_tablesprefix + S (pft_index_inverseall_tables) = (p)) -> exists pft_value_inverseall_tables. (((((exists ff_h_pft_inverseall_tablespointentry. ff_h_pft_inverseall_tablespointentry + S (pft_value_inverseall_tables) = S ((S (pft_index_inverseall_tables)) * c)) /\ exists ff_q_pft_inverseall_tablespointentry. b = ff_q_pft_inverseall_tablespointentry * S ((S (pft_index_inverseall_tables)) * c) + (pft_value_inverseall_tables))) /\ ((((exists pfa_gap_inverseall_tablespointvalueinput. pfa_gap_inverseall_tablespointvalueinput + S (pft_index_inverseall_tables) = (p)) /\ (((exists pfa_gap_inverseall_tablespointvalueoutput. pfa_gap_inverseall_tablespointvalueoutput + S (pft_value_inverseall_tables) = (p)) /\ ((((pft_index_inverseall_tables) = 0 /\ (pft_value_inverseall_tables) = 0) \/ (((~((pft_index_inverseall_tables) = 0)) /\ ((((exists pfa_gap_inverseall_tablespointvaluenonzeromultiplicationleft. pfa_gap_inverseall_tablespointvaluenonzeromultiplicationleft + S (pft_index_inverseall_tables) = (p)) /\ (((exists pfa_gap_inverseall_tablespointvaluenonzeromultiplicationright. pfa_gap_inverseall_tablespointvaluenonzeromultiplicationright + S (pft_value_inverseall_tables) = (p)) /\ ((((exists pfa_gap_inverseall_tablespointvaluenonzeromultiplicationresultbound. pfa_gap_inverseall_tablespointvaluenonzeromultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_inverseall_tablespointvaluenonzeromultiplicationresultcongruence pfa_offset_right_inverseall_tablespointvaluenonzeromultiplicationresultcongruence. ((pft_index_inverseall_tables) * (pft_value_inverseall_tables)) + (p) * pfa_offset_left_inverseall_tablespointvaluenonzeromultiplicationresultcongruence = (1) + (p) * pfa_offset_right_inverseall_tablespointvaluenonzeromultiplicationresultcongruence)))))))))))))))))))))) - 0022
specialize prime_field_inverse_table_exists (p) - 0023
apply prime_field_inverse_table_exists - 0024
exact hp - 0025
cases hinverse - 0026
cases hinverse_witness - 0027
exists x - 0028
exists x1 - 0029
exists x2 - 0030
exists x3 - 0031
exists x4 - 0032
exists x5 - 0033
exists x6 - 0034
exists x7 - 0035
split - 0036
exact hadd_witness_witness - 0037
split - 0038
exact hmultiply_witness_witness - 0039
split - 0040
exact hnegate_witness_witness - 0041
exact hinverse_witness_witness