JT003F

jordan_enumeration_distinct

The independent enumeration graph identifies equal coordinate tuples with equal positions.

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

95 new Alpha admissions come from 96 source lemmas: tuple equality reflexivity reuses an already-admitted theorem and is not counted twice. All counts use actual finite beta-coded enumerations. G008 multiplicativity is proved; the general prime-power count and distinct-prime product formula are further goals. General prime-power fields (G091) remain open. Stable is unchanged.

Exact theorem in conservative defined notation

∀ k. ∀ n. ∀ A. ∀ B. ∀ C. ∀ D. ∀ j. ∀ i. ∀ h. ∀ b. ∀ c. ∀ d. ∀ e. JordanTupleEnumeration(k,n,A,B,C,D,j) → Lt(i,j) → Lt(h,j) → BetaAt(A,B,i,b) ∧ BetaAt(C,D,i,c) → BetaAt(A,B,h,d) ∧ BetaAt(C,D,h,e) → IntegerVectorZero(b,c,d,e,k) → i = h

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

Definition DAG

Actual proof prerequisites

none
Original expanded first-order statement
forall k n A B C D j i h b c d e. (((forall jt_i_distinctenum. (exists jt_gap_distinctenumsoundindex. jt_gap_distinctenumsoundindex+S (jt_i_distinctenum)=(j)) -> exists jt_b_distinctenum jt_c_distinctenum. ((((((exists fs_h_jt_distinctenumsoundcode. fs_h_jt_distinctenumsoundcode + S (jt_b_distinctenum) = S ((S (jt_i_distinctenum)) * B)) /\ exists fs_q_jt_distinctenumsoundcode. A = fs_q_jt_distinctenumsoundcode * S ((S (jt_i_distinctenum)) * B) + (jt_b_distinctenum))) /\ (((exists fs_h_jt_distinctenumsoundscale. fs_h_jt_distinctenumsoundscale + S (jt_c_distinctenum) = S ((S (jt_i_distinctenum)) * D)) /\ exists fs_q_jt_distinctenumsoundscale. C = fs_q_jt_distinctenumsoundscale * S ((S (jt_i_distinctenum)) * D) + (jt_c_distinctenum))))) /\ (((forall jt_index_distinctenumbound. (exists jt_gap_distinctenumboundindex. jt_gap_distinctenumboundindex+S (jt_index_distinctenumbound)=(k)) -> exists jt_value_distinctenumbound. ((((exists fs_h_jt_distinctenumboundat. fs_h_jt_distinctenumboundat + S (jt_value_distinctenumbound) = S ((S (jt_index_distinctenumbound)) * jt_c_distinctenum)) /\ exists fs_q_jt_distinctenumboundat. jt_b_distinctenum = fs_q_jt_distinctenumboundat * S ((S (jt_index_distinctenumbound)) * jt_c_distinctenum) + (jt_value_distinctenumbound))) /\ (exists jt_gap_distinctenumboundvalue. jt_gap_distinctenumboundvalue+S (jt_value_distinctenumbound)=(n)))) /\ (forall jt_divisor_distinctenumprimitive. (exists jt_factor_distinctenumprimitivemodulus. (n)=(jt_divisor_distinctenumprimitive)*jt_factor_distinctenumprimitivemodulus) -> (forall jt_index_distinctenumprimitivecoordinates jt_value_distinctenumprimitivecoordinates. (exists jt_gap_distinctenumprimitivecoordinatesindex. jt_gap_distinctenumprimitivecoordinatesindex+S (jt_index_distinctenumprimitivecoordinates)=(k)) -> (((exists fs_h_jt_distinctenumprimitivecoordinatesat. fs_h_jt_distinctenumprimitivecoordinatesat + S (jt_value_distinctenumprimitivecoordinates) = S ((S (jt_index_distinctenumprimitivecoordinates)) * jt_c_distinctenum)) /\ exists fs_q_jt_distinctenumprimitivecoordinatesat. jt_b_distinctenum = fs_q_jt_distinctenumprimitivecoordinatesat * S ((S (jt_index_distinctenumprimitivecoordinates)) * jt_c_distinctenum) + (jt_value_distinctenumprimitivecoordinates))) -> (exists jt_factor_distinctenumprimitivecoordinatesdivides. (jt_value_distinctenumprimitivecoordinates)=(jt_divisor_distinctenumprimitive)*jt_factor_distinctenumprimitivecoordinatesdivides)) -> jt_divisor_distinctenumprimitive=1))))) /\ (((forall jt_b_distinctenum jt_c_distinctenum. (forall jt_index_distinctenuminputbound. (exists jt_gap_distinctenuminputboundindex. jt_gap_distinctenuminputboundindex+S (jt_index_distinctenuminputbound)=(k)) -> exists jt_value_distinctenuminputbound. ((((exists fs_h_jt_distinctenuminputboundat. fs_h_jt_distinctenuminputboundat + S (jt_value_distinctenuminputbound) = S ((S (jt_index_distinctenuminputbound)) * jt_c_distinctenum)) /\ exists fs_q_jt_distinctenuminputboundat. jt_b_distinctenum = fs_q_jt_distinctenuminputboundat * S ((S (jt_index_distinctenuminputbound)) * jt_c_distinctenum) + (jt_value_distinctenuminputbound))) /\ (exists jt_gap_distinctenuminputboundvalue. jt_gap_distinctenuminputboundvalue+S (jt_value_distinctenuminputbound)=(n)))) -> (forall jt_divisor_distinctenuminputprimitive. (exists jt_factor_distinctenuminputprimitivemodulus. (n)=(jt_divisor_distinctenuminputprimitive)*jt_factor_distinctenuminputprimitivemodulus) -> (forall jt_index_distinctenuminputprimitivecoordinates jt_value_distinctenuminputprimitivecoordinates. (exists jt_gap_distinctenuminputprimitivecoordinatesindex. jt_gap_distinctenuminputprimitivecoordinatesindex+S (jt_index_distinctenuminputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_distinctenuminputprimitivecoordinatesat. fs_h_jt_distinctenuminputprimitivecoordinatesat + S (jt_value_distinctenuminputprimitivecoordinates) = S ((S (jt_index_distinctenuminputprimitivecoordinates)) * jt_c_distinctenum)) /\ exists fs_q_jt_distinctenuminputprimitivecoordinatesat. jt_b_distinctenum = fs_q_jt_distinctenuminputprimitivecoordinatesat * S ((S (jt_index_distinctenuminputprimitivecoordinates)) * jt_c_distinctenum) + (jt_value_distinctenuminputprimitivecoordinates))) -> (exists jt_factor_distinctenuminputprimitivecoordinatesdivides. (jt_value_distinctenuminputprimitivecoordinates)=(jt_divisor_distinctenuminputprimitive)*jt_factor_distinctenuminputprimitivecoordinatesdivides)) -> jt_divisor_distinctenuminputprimitive=1) -> exists jt_i_distinctenum jt_d_distinctenum jt_e_distinctenum. ((exists jt_gap_distinctenumcompleteindex. jt_gap_distinctenumcompleteindex+S (jt_i_distinctenum)=(j)) /\ (((((((exists fs_h_jt_distinctenumcompletecode. fs_h_jt_distinctenumcompletecode + S (jt_d_distinctenum) = S ((S (jt_i_distinctenum)) * B)) /\ exists fs_q_jt_distinctenumcompletecode. A = fs_q_jt_distinctenumcompletecode * S ((S (jt_i_distinctenum)) * B) + (jt_d_distinctenum))) /\ (((exists fs_h_jt_distinctenumcompletescale. fs_h_jt_distinctenumcompletescale + S (jt_e_distinctenum) = S ((S (jt_i_distinctenum)) * D)) /\ exists fs_q_jt_distinctenumcompletescale. C = fs_q_jt_distinctenumcompletescale * S ((S (jt_i_distinctenum)) * D) + (jt_e_distinctenum))))) /\ (forall jt_index_distinctenumrepresented jt_left_distinctenumrepresented jt_right_distinctenumrepresented. (exists jt_gap_distinctenumrepresentedindex. jt_gap_distinctenumrepresentedindex+S (jt_index_distinctenumrepresented)=(k)) -> (((exists fs_h_jt_distinctenumrepresentedleft. fs_h_jt_distinctenumrepresentedleft + S (jt_left_distinctenumrepresented) = S ((S (jt_index_distinctenumrepresented)) * jt_c_distinctenum)) /\ exists fs_q_jt_distinctenumrepresentedleft. jt_b_distinctenum = fs_q_jt_distinctenumrepresentedleft * S ((S (jt_index_distinctenumrepresented)) * jt_c_distinctenum) + (jt_left_distinctenumrepresented))) -> (((exists fs_h_jt_distinctenumrepresentedright. fs_h_jt_distinctenumrepresentedright + S (jt_right_distinctenumrepresented) = S ((S (jt_index_distinctenumrepresented)) * jt_e_distinctenum)) /\ exists fs_q_jt_distinctenumrepresentedright. jt_d_distinctenum = fs_q_jt_distinctenumrepresentedright * S ((S (jt_index_distinctenumrepresented)) * jt_e_distinctenum) + (jt_right_distinctenumrepresented))) -> jt_left_distinctenumrepresented=jt_right_distinctenumrepresented))))) /\ (forall jt_i_distinctenum jt_h_distinctenum jt_b_distinctenum jt_c_distinctenum jt_d_distinctenum jt_e_distinctenum. (exists jt_gap_distinctenumfirstindex. jt_gap_distinctenumfirstindex+S (jt_i_distinctenum)=(j)) -> (exists jt_gap_distinctenumsecondindex. jt_gap_distinctenumsecondindex+S (jt_h_distinctenum)=(j)) -> (((((exists fs_h_jt_distinctenumfirstcode. fs_h_jt_distinctenumfirstcode + S (jt_b_distinctenum) = S ((S (jt_i_distinctenum)) * B)) /\ exists fs_q_jt_distinctenumfirstcode. A = fs_q_jt_distinctenumfirstcode * S ((S (jt_i_distinctenum)) * B) + (jt_b_distinctenum))) /\ (((exists fs_h_jt_distinctenumfirstscale. fs_h_jt_distinctenumfirstscale + S (jt_c_distinctenum) = S ((S (jt_i_distinctenum)) * D)) /\ exists fs_q_jt_distinctenumfirstscale. C = fs_q_jt_distinctenumfirstscale * S ((S (jt_i_distinctenum)) * D) + (jt_c_distinctenum))))) -> (((((exists fs_h_jt_distinctenumsecondcode. fs_h_jt_distinctenumsecondcode + S (jt_d_distinctenum) = S ((S (jt_h_distinctenum)) * B)) /\ exists fs_q_jt_distinctenumsecondcode. A = fs_q_jt_distinctenumsecondcode * S ((S (jt_h_distinctenum)) * B) + (jt_d_distinctenum))) /\ (((exists fs_h_jt_distinctenumsecondscale. fs_h_jt_distinctenumsecondscale + S (jt_e_distinctenum) = S ((S (jt_h_distinctenum)) * D)) /\ exists fs_q_jt_distinctenumsecondscale. C = fs_q_jt_distinctenumsecondscale * S ((S (jt_h_distinctenum)) * D) + (jt_e_distinctenum))))) -> (forall jt_index_distinctenumsame jt_left_distinctenumsame jt_right_distinctenumsame. (exists jt_gap_distinctenumsameindex. jt_gap_distinctenumsameindex+S (jt_index_distinctenumsame)=(k)) -> (((exists fs_h_jt_distinctenumsameleft. fs_h_jt_distinctenumsameleft + S (jt_left_distinctenumsame) = S ((S (jt_index_distinctenumsame)) * jt_c_distinctenum)) /\ exists fs_q_jt_distinctenumsameleft. jt_b_distinctenum = fs_q_jt_distinctenumsameleft * S ((S (jt_index_distinctenumsame)) * jt_c_distinctenum) + (jt_left_distinctenumsame))) -> (((exists fs_h_jt_distinctenumsameright. fs_h_jt_distinctenumsameright + S (jt_right_distinctenumsame) = S ((S (jt_index_distinctenumsame)) * jt_e_distinctenum)) /\ exists fs_q_jt_distinctenumsameright. jt_d_distinctenum = fs_q_jt_distinctenumsameright * S ((S (jt_index_distinctenumsame)) * jt_e_distinctenum) + (jt_right_distinctenumsame))) -> jt_left_distinctenumsame=jt_right_distinctenumsame) -> jt_i_distinctenum=jt_h_distinctenum))))) -> (exists jt_gap_distinctfirst. jt_gap_distinctfirst+S (i)=(j)) -> (exists jt_gap_distinctsecond. jt_gap_distinctsecond+S (h)=(j)) -> (((((exists fs_h_jt_distinctentryfirstcode. fs_h_jt_distinctentryfirstcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_distinctentryfirstcode. A = fs_q_jt_distinctentryfirstcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_distinctentryfirstscale. fs_h_jt_distinctentryfirstscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_distinctentryfirstscale. C = fs_q_jt_distinctentryfirstscale * S ((S (i)) * D) + (c))))) -> (((((exists fs_h_jt_distinctentrysecondcode. fs_h_jt_distinctentrysecondcode + S (d) = S ((S (h)) * B)) /\ exists fs_q_jt_distinctentrysecondcode. A = fs_q_jt_distinctentrysecondcode * S ((S (h)) * B) + (d))) /\ (((exists fs_h_jt_distinctentrysecondscale. fs_h_jt_distinctentrysecondscale + S (e) = S ((S (h)) * D)) /\ exists fs_q_jt_distinctentrysecondscale. C = fs_q_jt_distinctentrysecondscale * S ((S (h)) * D) + (e))))) -> (forall jt_index_distinctequal jt_left_distinctequal jt_right_distinctequal. (exists jt_gap_distinctequalindex. jt_gap_distinctequalindex+S (jt_index_distinctequal)=(k)) -> (((exists fs_h_jt_distinctequalleft. fs_h_jt_distinctequalleft + S (jt_left_distinctequal) = S ((S (jt_index_distinctequal)) * c)) /\ exists fs_q_jt_distinctequalleft. b = fs_q_jt_distinctequalleft * S ((S (jt_index_distinctequal)) * c) + (jt_left_distinctequal))) -> (((exists fs_h_jt_distinctequalright. fs_h_jt_distinctequalright + S (jt_right_distinctequal) = S ((S (jt_index_distinctequal)) * e)) /\ exists fs_q_jt_distinctequalright. d = fs_q_jt_distinctequalright * S ((S (jt_index_distinctequal)) * e) + (jt_right_distinctequal))) -> jt_left_distinctequal=jt_right_distinctequal) -> i=h

Complete tactic proof in conservative notation

All 33 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

33 script commands · 5 reading checkpoints · 0 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.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro k
  2. L2
    intro n
  3. L3
    intro A
  4. L4
    intro B
  5. L5
    intro C
  6. L6
    intro D
  7. L7
    intro j
  8. L8
    intro i
  9. L9
    intro h
  10. L10
    intro b
02Fix variables and assumptionsL11–19

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

  1. L11
    intro c
  2. L12
    intro d
  3. L13
    intro e
  4. L14
    intro he
  5. L15
    intro hi
  6. L16
    intro hh
  7. L17
    intro hfirst
  8. L18
    intro hsecond
  9. L19
    intro hsame
03Separate the logical casesL20–21

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

  1. L20
    cases he
  2. L21
    cases he_right
04Use earlier factsL22–31

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

  1. L22
    specialize he_right_right (i)
  2. L23
    specialize he_right_right (h)
  3. L24
    specialize he_right_right (b)
  4. L25
    specialize he_right_right (c)
  5. L26
    specialize he_right_right (d)
  6. L27
    specialize he_right_right (e)
  7. L28
    apply he_right_right
  8. L29
    exact hi
  9. L30
    exact hh
  10. L31
    exact hfirst
05Use earlier factsL32–33

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

  1. L32
    exact hsecond
  2. L33
    exact hsame

Library-wide reading audit

Original defined command ledger · 33 lines
  1. 0001intro k
  2. 0002intro n
  3. 0003intro A
  4. 0004intro B
  5. 0005intro C
  6. 0006intro D
  7. 0007intro j
  8. 0008intro i
  9. 0009intro h
  10. 0010intro b
  11. 0011intro c
  12. 0012intro d
  13. 0013intro e
  14. 0014intro he
  15. 0015intro hi
  16. 0016intro hh
  17. 0017intro hfirst
  18. 0018intro hsecond
  19. 0019intro hsame
  20. 0020cases he
  21. 0021cases he_right
  22. 0022specialize he_right_right (i)
  23. 0023specialize he_right_right (h)
  24. 0024specialize he_right_right (b)
  25. 0025specialize he_right_right (c)
  26. 0026specialize he_right_right (d)
  27. 0027specialize he_right_right (e)
  28. 0028apply he_right_right
  29. 0029exact hi
  30. 0030exact hh
  31. 0031exact hfirst
  32. 0032exact hsecond
  33. 0033exact hsame