FP0041

prime_field_inverse_table_reflect

Every genuine inverse value is stored at its actual unary table index.

Alpha v34 checked-use · first admitted v31 · independently kernel and Lean verified; not Stable

Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.

This checkpoint constructs prime-order fields (k=1), with genuine finite arithmetic tables, cardinality, and characteristic. Inversion is proved only for nonzero elements; the table's zero entry is a zero-to-zero convention. G091 for every prime power p^k, with an irreducible polynomial of degree k, remains open. No extension-field construction or G091 closure is claimed.

Exact theorem in conservative defined notation

∀ p. ∀ B. ∀ C. ∀ a. ∀ v. FpInvPrefix(p,B,C,p)FpZeroExtendedInv(p,a,v)BetaAt(B,C,a,v)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall p B C a v. (forall pft_index_inverseunary_reflect_table. (exists pfa_gap_inverseunary_reflect_tableprefix. pfa_gap_inverseunary_reflect_tableprefix + S (pft_index_inverseunary_reflect_table) = (p)) -> exists pft_value_inverseunary_reflect_table. (((((exists ff_h_pft_inverseunary_reflect_tablepointentry. ff_h_pft_inverseunary_reflect_tablepointentry + S (pft_value_inverseunary_reflect_table) = S ((S (pft_index_inverseunary_reflect_table)) * C)) /\ exists ff_q_pft_inverseunary_reflect_tablepointentry. B = ff_q_pft_inverseunary_reflect_tablepointentry * S ((S (pft_index_inverseunary_reflect_table)) * C) + (pft_value_inverseunary_reflect_table))) /\ ((((exists pfa_gap_inverseunary_reflect_tablepointvalueinput. pfa_gap_inverseunary_reflect_tablepointvalueinput + S (pft_index_inverseunary_reflect_table) = (p)) /\ (((exists pfa_gap_inverseunary_reflect_tablepointvalueoutput. pfa_gap_inverseunary_reflect_tablepointvalueoutput + S (pft_value_inverseunary_reflect_table) = (p)) /\ ((((pft_index_inverseunary_reflect_table) = 0 /\ (pft_value_inverseunary_reflect_table) = 0) \/ (((~((pft_index_inverseunary_reflect_table) = 0)) /\ ((((exists pfa_gap_inverseunary_reflect_tablepointvaluenonzeromultiplicationleft. pfa_gap_inverseunary_reflect_tablepointvaluenonzeromultiplicationleft + S (pft_index_inverseunary_reflect_table) = (p)) /\ (((exists pfa_gap_inverseunary_reflect_tablepointvaluenonzeromultiplicationright. pfa_gap_inverseunary_reflect_tablepointvaluenonzeromultiplicationright + S (pft_value_inverseunary_reflect_table) = (p)) /\ ((((exists pfa_gap_inverseunary_reflect_tablepointvaluenonzeromultiplicationresultbound. pfa_gap_inverseunary_reflect_tablepointvaluenonzeromultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_inverseunary_reflect_tablepointvaluenonzeromultiplicationresultcongruence pfa_offset_right_inverseunary_reflect_tablepointvaluenonzeromultiplicationresultcongruence. ((pft_index_inverseunary_reflect_table) * (pft_value_inverseunary_reflect_table)) + (p) * pfa_offset_left_inverseunary_reflect_tablepointvaluenonzeromultiplicationresultcongruence = (1) + (p) * pfa_offset_right_inverseunary_reflect_tablepointvaluenonzeromultiplicationresultcongruence)))))))))))))))))))))) -> (((exists pfa_gap_inverseunary_reflect_graphinput. pfa_gap_inverseunary_reflect_graphinput + S (a) = (p)) /\ (((exists pfa_gap_inverseunary_reflect_graphoutput. pfa_gap_inverseunary_reflect_graphoutput + S (v) = (p)) /\ ((((a) = 0 /\ (v) = 0) \/ (((~((a) = 0)) /\ ((((exists pfa_gap_inverseunary_reflect_graphnonzeromultiplicationleft. pfa_gap_inverseunary_reflect_graphnonzeromultiplicationleft + S (a) = (p)) /\ (((exists pfa_gap_inverseunary_reflect_graphnonzeromultiplicationright. pfa_gap_inverseunary_reflect_graphnonzeromultiplicationright + S (v) = (p)) /\ ((((exists pfa_gap_inverseunary_reflect_graphnonzeromultiplicationresultbound. pfa_gap_inverseunary_reflect_graphnonzeromultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_inverseunary_reflect_graphnonzeromultiplicationresultcongruence pfa_offset_right_inverseunary_reflect_graphnonzeromultiplicationresultcongruence. ((a) * (v)) + (p) * pfa_offset_left_inverseunary_reflect_graphnonzeromultiplicationresultcongruence = (1) + (p) * pfa_offset_right_inverseunary_reflect_graphnonzeromultiplicationresultcongruence)))))))))))))))))) -> (((exists ff_h_pft_inverseunary_reflect_at. ff_h_pft_inverseunary_reflect_at + S (v) = S ((S (a)) * C)) /\ exists ff_q_pft_inverseunary_reflect_at. B = ff_q_pft_inverseunary_reflect_at * S ((S (a)) * C) + (v)))

Complete tactic proof in conservative notation

All 35 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

35 script commands · 7 reading checkpoints · 3 local claims

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.

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (2)
01Fix variables and assumptionsL1–7

Work with arbitrary variables or the premises of the current implication.

  1. L1
    intro p
  2. L2
    intro B
  3. L3
    intro C
  4. L4
    intro a
  5. L5
    intro v
  6. L6
    intro htable
  7. L7
    intro hop
02Separate the logical casesL8–8

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L8
    cases hop
03Establish hatL9–13

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta at exists.

  1. L9
    have hat : ∃ w. BetaAt(B,C,a,w)Definitions: BetaAt(B,C,a,w)Original native command in the exact edition
  2. L10
    specialize beta_at_exists (B)
  3. L11
    specialize beta_at_exists (C)
  4. L12
    specialize beta_at_exists (a)
  5. L13
    apply beta_at_exists
04Separate the logical casesL14–14

Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.

  1. L14
    cases hat
05Establish houtL15–24

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field inverse table lookup.

  1. L15
    have hout : FpZeroExtendedInv(p,a,x)Definitions: FpZeroExtendedInv(p,a,x)Original native command in the exact edition
  2. L16
    specialize prime_field_inverse_table_lookup (p)
  3. L17
    specialize prime_field_inverse_table_lookup (B)
  4. L18
    specialize prime_field_inverse_table_lookup (C)
  5. L19
    specialize prime_field_inverse_table_lookup (a)
  6. L20
    specialize prime_field_inverse_table_lookup (x)
  7. L21
    apply prime_field_inverse_table_lookup
  8. L22
    exact htable
  9. L23
    exact hop_left
  10. L24
    exact hat_witness
06Establish heqL25–34

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field zero extended inverse functional.

  1. L25
    have heq : x = v
  2. L26
    specialize prime_field_zero_extended_inverse_functional (p)
  3. L27
    specialize prime_field_zero_extended_inverse_functional (a)
  4. L28
    specialize prime_field_zero_extended_inverse_functional (x)
  5. L29
    specialize prime_field_zero_extended_inverse_functional (v)
  6. L30
    apply prime_field_zero_extended_inverse_functional
  7. L31
    exact hout
  8. L32
    exact hop
  9. L33
    rewrite heq at hat_witness
  10. L34
    rewrite heq at hat_witness
07Use earlier factsL35–35

Instantiate or apply named facts and discharge the corresponding proof obligations.

  1. L35
    exact hat_witness

Library-wide reading audit

Original defined command ledger · 35 lines
  1. 0001intro p
  2. 0002intro B
  3. 0003intro C
  4. 0004intro a
  5. 0005intro v
  6. 0006intro htable
  7. 0007intro hop
  8. 0008cases hop
  9. 0009have hat : ∃ w. BetaAt(B,C,a,w)
  10. 0010specialize beta_at_exists (B)
  11. 0011specialize beta_at_exists (C)
  12. 0012specialize beta_at_exists (a)
  13. 0013apply beta_at_exists
  14. 0014cases hat
  15. 0015have hout : FpZeroExtendedInv(p,a,x)
  16. 0016specialize prime_field_inverse_table_lookup (p)
  17. 0017specialize prime_field_inverse_table_lookup (B)
  18. 0018specialize prime_field_inverse_table_lookup (C)
  19. 0019specialize prime_field_inverse_table_lookup (a)
  20. 0020specialize prime_field_inverse_table_lookup (x)
  21. 0021apply prime_field_inverse_table_lookup
  22. 0022exact htable
  23. 0023exact hop_left
  24. 0024exact hat_witness
  25. 0025have heq : x = v
  26. 0026specialize prime_field_zero_extended_inverse_functional (p)
  27. 0027specialize prime_field_zero_extended_inverse_functional (a)
  28. 0028specialize prime_field_zero_extended_inverse_functional (x)
  29. 0029specialize prime_field_zero_extended_inverse_functional (v)
  30. 0030apply prime_field_zero_extended_inverse_functional
  31. 0031exact hout
  32. 0032exact hop
  33. 0033rewrite heq at hat_witness
  34. 0034rewrite heq at hat_witness
  35. 0035exact hat_witness