JT0045

jordan_enumeration_reduce_primitive

Alpha v35 independently verified · alpha_closed; checked-use authorized; not Stable

Reduce any primitive tuple to an actual canonical enumeration entry, retaining coordinate congruences and the genuine index.

Exact expanded first-order arithmetic statement

forall n k A B C D j b c. ~(n=0) -> (((forall jt_i_reduceenum. (exists jt_gap_reduceenumsoundindex. jt_gap_reduceenumsoundindex+S (jt_i_reduceenum)=(j)) -> exists jt_b_reduceenum jt_c_reduceenum. ((((((exists fs_h_jt_reduceenumsoundcode. fs_h_jt_reduceenumsoundcode + S (jt_b_reduceenum) = S ((S (jt_i_reduceenum)) * B)) /\ exists fs_q_jt_reduceenumsoundcode. A = fs_q_jt_reduceenumsoundcode * S ((S (jt_i_reduceenum)) * B) + (jt_b_reduceenum))) /\ (((exists fs_h_jt_reduceenumsoundscale. fs_h_jt_reduceenumsoundscale + S (jt_c_reduceenum) = S ((S (jt_i_reduceenum)) * D)) /\ exists fs_q_jt_reduceenumsoundscale. C = fs_q_jt_reduceenumsoundscale * S ((S (jt_i_reduceenum)) * D) + (jt_c_reduceenum))))) /\ (((forall jt_index_reduceenumbound. (exists jt_gap_reduceenumboundindex. jt_gap_reduceenumboundindex+S (jt_index_reduceenumbound)=(k)) -> exists jt_value_reduceenumbound. ((((exists fs_h_jt_reduceenumboundat. fs_h_jt_reduceenumboundat + S (jt_value_reduceenumbound) = S ((S (jt_index_reduceenumbound)) * jt_c_reduceenum)) /\ exists fs_q_jt_reduceenumboundat. jt_b_reduceenum = fs_q_jt_reduceenumboundat * S ((S (jt_index_reduceenumbound)) * jt_c_reduceenum) + (jt_value_reduceenumbound))) /\ (exists jt_gap_reduceenumboundvalue. jt_gap_reduceenumboundvalue+S (jt_value_reduceenumbound)=(n)))) /\ (forall jt_divisor_reduceenumprimitive. (exists jt_factor_reduceenumprimitivemodulus. (n)=(jt_divisor_reduceenumprimitive)*jt_factor_reduceenumprimitivemodulus) -> (forall jt_index_reduceenumprimitivecoordinates jt_value_reduceenumprimitivecoordinates. (exists jt_gap_reduceenumprimitivecoordinatesindex. jt_gap_reduceenumprimitivecoordinatesindex+S (jt_index_reduceenumprimitivecoordinates)=(k)) -> (((exists fs_h_jt_reduceenumprimitivecoordinatesat. fs_h_jt_reduceenumprimitivecoordinatesat + S (jt_value_reduceenumprimitivecoordinates) = S ((S (jt_index_reduceenumprimitivecoordinates)) * jt_c_reduceenum)) /\ exists fs_q_jt_reduceenumprimitivecoordinatesat. jt_b_reduceenum = fs_q_jt_reduceenumprimitivecoordinatesat * S ((S (jt_index_reduceenumprimitivecoordinates)) * jt_c_reduceenum) + (jt_value_reduceenumprimitivecoordinates))) -> (exists jt_factor_reduceenumprimitivecoordinatesdivides. (jt_value_reduceenumprimitivecoordinates)=(jt_divisor_reduceenumprimitive)*jt_factor_reduceenumprimitivecoordinatesdivides)) -> jt_divisor_reduceenumprimitive=1))))) /\ (((forall jt_b_reduceenum jt_c_reduceenum. (forall jt_index_reduceenuminputbound. (exists jt_gap_reduceenuminputboundindex. jt_gap_reduceenuminputboundindex+S (jt_index_reduceenuminputbound)=(k)) -> exists jt_value_reduceenuminputbound. ((((exists fs_h_jt_reduceenuminputboundat. fs_h_jt_reduceenuminputboundat + S (jt_value_reduceenuminputbound) = S ((S (jt_index_reduceenuminputbound)) * jt_c_reduceenum)) /\ exists fs_q_jt_reduceenuminputboundat. jt_b_reduceenum = fs_q_jt_reduceenuminputboundat * S ((S (jt_index_reduceenuminputbound)) * jt_c_reduceenum) + (jt_value_reduceenuminputbound))) /\ (exists jt_gap_reduceenuminputboundvalue. jt_gap_reduceenuminputboundvalue+S (jt_value_reduceenuminputbound)=(n)))) -> (forall jt_divisor_reduceenuminputprimitive. (exists jt_factor_reduceenuminputprimitivemodulus. (n)=(jt_divisor_reduceenuminputprimitive)*jt_factor_reduceenuminputprimitivemodulus) -> (forall jt_index_reduceenuminputprimitivecoordinates jt_value_reduceenuminputprimitivecoordinates. (exists jt_gap_reduceenuminputprimitivecoordinatesindex. jt_gap_reduceenuminputprimitivecoordinatesindex+S (jt_index_reduceenuminputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_reduceenuminputprimitivecoordinatesat. fs_h_jt_reduceenuminputprimitivecoordinatesat + S (jt_value_reduceenuminputprimitivecoordinates) = S ((S (jt_index_reduceenuminputprimitivecoordinates)) * jt_c_reduceenum)) /\ exists fs_q_jt_reduceenuminputprimitivecoordinatesat. jt_b_reduceenum = fs_q_jt_reduceenuminputprimitivecoordinatesat * S ((S (jt_index_reduceenuminputprimitivecoordinates)) * jt_c_reduceenum) + (jt_value_reduceenuminputprimitivecoordinates))) -> (exists jt_factor_reduceenuminputprimitivecoordinatesdivides. (jt_value_reduceenuminputprimitivecoordinates)=(jt_divisor_reduceenuminputprimitive)*jt_factor_reduceenuminputprimitivecoordinatesdivides)) -> jt_divisor_reduceenuminputprimitive=1) -> exists jt_i_reduceenum jt_d_reduceenum jt_e_reduceenum. ((exists jt_gap_reduceenumcompleteindex. jt_gap_reduceenumcompleteindex+S (jt_i_reduceenum)=(j)) /\ (((((((exists fs_h_jt_reduceenumcompletecode. fs_h_jt_reduceenumcompletecode + S (jt_d_reduceenum) = S ((S (jt_i_reduceenum)) * B)) /\ exists fs_q_jt_reduceenumcompletecode. A = fs_q_jt_reduceenumcompletecode * S ((S (jt_i_reduceenum)) * B) + (jt_d_reduceenum))) /\ (((exists fs_h_jt_reduceenumcompletescale. fs_h_jt_reduceenumcompletescale + S (jt_e_reduceenum) = S ((S (jt_i_reduceenum)) * D)) /\ exists fs_q_jt_reduceenumcompletescale. C = fs_q_jt_reduceenumcompletescale * S ((S (jt_i_reduceenum)) * D) + (jt_e_reduceenum))))) /\ (forall jt_index_reduceenumrepresented jt_left_reduceenumrepresented jt_right_reduceenumrepresented. (exists jt_gap_reduceenumrepresentedindex. jt_gap_reduceenumrepresentedindex+S (jt_index_reduceenumrepresented)=(k)) -> (((exists fs_h_jt_reduceenumrepresentedleft. fs_h_jt_reduceenumrepresentedleft + S (jt_left_reduceenumrepresented) = S ((S (jt_index_reduceenumrepresented)) * jt_c_reduceenum)) /\ exists fs_q_jt_reduceenumrepresentedleft. jt_b_reduceenum = fs_q_jt_reduceenumrepresentedleft * S ((S (jt_index_reduceenumrepresented)) * jt_c_reduceenum) + (jt_left_reduceenumrepresented))) -> (((exists fs_h_jt_reduceenumrepresentedright. fs_h_jt_reduceenumrepresentedright + S (jt_right_reduceenumrepresented) = S ((S (jt_index_reduceenumrepresented)) * jt_e_reduceenum)) /\ exists fs_q_jt_reduceenumrepresentedright. jt_d_reduceenum = fs_q_jt_reduceenumrepresentedright * S ((S (jt_index_reduceenumrepresented)) * jt_e_reduceenum) + (jt_right_reduceenumrepresented))) -> jt_left_reduceenumrepresented=jt_right_reduceenumrepresented))))) /\ (forall jt_i_reduceenum jt_h_reduceenum jt_b_reduceenum jt_c_reduceenum jt_d_reduceenum jt_e_reduceenum. (exists jt_gap_reduceenumfirstindex. jt_gap_reduceenumfirstindex+S (jt_i_reduceenum)=(j)) -> (exists jt_gap_reduceenumsecondindex. jt_gap_reduceenumsecondindex+S (jt_h_reduceenum)=(j)) -> (((((exists fs_h_jt_reduceenumfirstcode. fs_h_jt_reduceenumfirstcode + S (jt_b_reduceenum) = S ((S (jt_i_reduceenum)) * B)) /\ exists fs_q_jt_reduceenumfirstcode. A = fs_q_jt_reduceenumfirstcode * S ((S (jt_i_reduceenum)) * B) + (jt_b_reduceenum))) /\ (((exists fs_h_jt_reduceenumfirstscale. fs_h_jt_reduceenumfirstscale + S (jt_c_reduceenum) = S ((S (jt_i_reduceenum)) * D)) /\ exists fs_q_jt_reduceenumfirstscale. C = fs_q_jt_reduceenumfirstscale * S ((S (jt_i_reduceenum)) * D) + (jt_c_reduceenum))))) -> (((((exists fs_h_jt_reduceenumsecondcode. fs_h_jt_reduceenumsecondcode + S (jt_d_reduceenum) = S ((S (jt_h_reduceenum)) * B)) /\ exists fs_q_jt_reduceenumsecondcode. A = fs_q_jt_reduceenumsecondcode * S ((S (jt_h_reduceenum)) * B) + (jt_d_reduceenum))) /\ (((exists fs_h_jt_reduceenumsecondscale. fs_h_jt_reduceenumsecondscale + S (jt_e_reduceenum) = S ((S (jt_h_reduceenum)) * D)) /\ exists fs_q_jt_reduceenumsecondscale. C = fs_q_jt_reduceenumsecondscale * S ((S (jt_h_reduceenum)) * D) + (jt_e_reduceenum))))) -> (forall jt_index_reduceenumsame jt_left_reduceenumsame jt_right_reduceenumsame. (exists jt_gap_reduceenumsameindex. jt_gap_reduceenumsameindex+S (jt_index_reduceenumsame)=(k)) -> (((exists fs_h_jt_reduceenumsameleft. fs_h_jt_reduceenumsameleft + S (jt_left_reduceenumsame) = S ((S (jt_index_reduceenumsame)) * jt_c_reduceenum)) /\ exists fs_q_jt_reduceenumsameleft. jt_b_reduceenum = fs_q_jt_reduceenumsameleft * S ((S (jt_index_reduceenumsame)) * jt_c_reduceenum) + (jt_left_reduceenumsame))) -> (((exists fs_h_jt_reduceenumsameright. fs_h_jt_reduceenumsameright + S (jt_right_reduceenumsame) = S ((S (jt_index_reduceenumsame)) * jt_e_reduceenum)) /\ exists fs_q_jt_reduceenumsameright. jt_d_reduceenum = fs_q_jt_reduceenumsameright * S ((S (jt_index_reduceenumsame)) * jt_e_reduceenum) + (jt_right_reduceenumsame))) -> jt_left_reduceenumsame=jt_right_reduceenumsame) -> jt_i_reduceenum=jt_h_reduceenum))))) -> (forall jt_divisor_reduceinput. (exists jt_factor_reduceinputmodulus. (n)=(jt_divisor_reduceinput)*jt_factor_reduceinputmodulus) -> (forall jt_index_reduceinputcoordinates jt_value_reduceinputcoordinates. (exists jt_gap_reduceinputcoordinatesindex. jt_gap_reduceinputcoordinatesindex+S (jt_index_reduceinputcoordinates)=(k)) -> (((exists fs_h_jt_reduceinputcoordinatesat. fs_h_jt_reduceinputcoordinatesat + S (jt_value_reduceinputcoordinates) = S ((S (jt_index_reduceinputcoordinates)) * c)) /\ exists fs_q_jt_reduceinputcoordinatesat. b = fs_q_jt_reduceinputcoordinatesat * S ((S (jt_index_reduceinputcoordinates)) * c) + (jt_value_reduceinputcoordinates))) -> (exists jt_factor_reduceinputcoordinatesdivides. (jt_value_reduceinputcoordinates)=(jt_divisor_reduceinput)*jt_factor_reduceinputcoordinatesdivides)) -> jt_divisor_reduceinput=1) -> exists i d e. ((exists jt_gap_reduceindex. jt_gap_reduceindex+S (i)=(j)) /\ (((((((exists fs_h_jt_reduceentrycode. fs_h_jt_reduceentrycode + S (d) = S ((S (i)) * B)) /\ exists fs_q_jt_reduceentrycode. A = fs_q_jt_reduceentrycode * S ((S (i)) * B) + (d))) /\ (((exists fs_h_jt_reduceentryscale. fs_h_jt_reduceentryscale + S (e) = S ((S (i)) * D)) /\ exists fs_q_jt_reduceentryscale. C = fs_q_jt_reduceentryscale * S ((S (i)) * D) + (e))))) /\ (forall jt_index_reduceresult jt_left_reduceresult jt_right_reduceresult. (exists jt_gap_reduceresultindex. jt_gap_reduceresultindex+S (jt_index_reduceresult)=(k)) -> (((exists fs_h_jt_reduceresultleft. fs_h_jt_reduceresultleft + S (jt_left_reduceresult) = S ((S (jt_index_reduceresult)) * c)) /\ exists fs_q_jt_reduceresultleft. b = fs_q_jt_reduceresultleft * S ((S (jt_index_reduceresult)) * c) + (jt_left_reduceresult))) -> (((exists fs_h_jt_reduceresultright. fs_h_jt_reduceresultright + S (jt_right_reduceresult) = S ((S (jt_index_reduceresult)) * e)) /\ exists fs_q_jt_reduceresultright. d = fs_q_jt_reduceresultright * S ((S (jt_index_reduceresult)) * e) + (jt_right_reduceresult))) -> (exists jt_left_reduceresultmod jt_right_reduceresultmod. (jt_left_reduceresult)+(n)*jt_left_reduceresultmod=(jt_right_reduceresult)+(n)*jt_right_reduceresultmod)))))

Constructive proof overview

Generated structural guide

Reduce any primitive tuple to an actual canonical enumeration entry, retaining coordinate congruences and the genuine index.

The unchanged tactic script uses 5 declared prerequisites and contains 76 exact native proof lines.

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

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

76 script commands · 14 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.

Named ingredients (5)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–10

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

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

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

  1. L11
    intro he
  2. L12
    intro hp
03Establish hnrmL13–19

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

  1. L13
    have hnrm : ∃ d. ∃ e. BetaPrefixInto(d,e,k,n) ∧ JordanTupleCongruence(n,b,c,d,e,k)Definitions: BetaPrefixIntoJordanTupleCongruence
  2. L14
    specialize jordan_tuple_normalize_exists (n)
  3. L15
    specialize jordan_tuple_normalize_exists (b)
  4. L16
    specialize jordan_tuple_normalize_exists (c)
  5. L17
    specialize jordan_tuple_normalize_exists (k)
  6. L18
    apply jordan_tuple_normalize_exists
  7. L19
    exact hn
04Separate the logical casesL20–22

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

  1. L20
    cases hnrm
  2. L21
    cases hnrm_witness
  3. L22
    cases hnrm_witness_witness
05Establish hprimL23–32

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan primitive tuple congruence transport.

  1. L23
    have hprim : JordanPrimitiveTuple(n,x,x1,k)Definitions: JordanPrimitiveTuple
  2. L24
    specialize jordan_primitive_tuple_congruence_transport (n)
  3. L25
    specialize jordan_primitive_tuple_congruence_transport (b)
  4. L26
    specialize jordan_primitive_tuple_congruence_transport (c)
  5. L27
    specialize jordan_primitive_tuple_congruence_transport (x)
  6. L28
    specialize jordan_primitive_tuple_congruence_transport (x1)
  7. L29
    specialize jordan_primitive_tuple_congruence_transport (k)
  8. L30
    apply jordan_primitive_tuple_congruence_transport
  9. L31
    exact hnrm_witness_witness_right
  10. L32
    exact hp
06Establish hlL33–42

Establish this local claim before using it. It is not an additional assumption.

  1. L33
    have hl : JordanTupleListed(x,x1,k,A,B,C,D,j)Definitions: JordanTupleListed
  2. L34
    specialize jordan_enumeration_complete (k)
  3. L35
    specialize jordan_enumeration_complete (n)
  4. L36
    specialize jordan_enumeration_complete (A)
  5. L37
    specialize jordan_enumeration_complete (B)
  6. L38
    specialize jordan_enumeration_complete (C)
  7. L39
    specialize jordan_enumeration_complete (D)
  8. L40
    specialize jordan_enumeration_complete (j)
  9. L41
    specialize jordan_enumeration_complete (x)
  10. L42
    specialize jordan_enumeration_complete (x1)
07Use earlier factsL43–46

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

  1. L43
    apply jordan_enumeration_complete
  2. L44
    exact he
  3. L45
    exact hnrm_witness_witness_left
  4. L46
    exact hprim
08Separate the logical casesL47–51

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

  1. L47
    cases hl
  2. L48
    cases hl_witness
  3. L49
    cases hl_witness_witness
  4. L50
    cases hl_witness_witness_witness
  5. L51
    cases hl_witness_witness_witness_right
09Construct an explicit witnessL52–54

Supply the displayed value, then prove that it has the required property.

  1. L52
    exists x2
  2. L53
    exists x3
  3. L54
    exists x4
10Separate the logical casesL55–55

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

  1. L55
    split
11Use earlier factsL56–56

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

  1. L56
    exact hl_witness_witness_witness_left
12Separate the logical casesL57–57

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

  1. L57
    split
13Use earlier factsL58–67

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

  1. L58
    exact hl_witness_witness_witness_right_left
  2. L59
    specialize jordan_tuple_congruence_trans (n)
  3. L60
    specialize jordan_tuple_congruence_trans (b)
  4. L61
    specialize jordan_tuple_congruence_trans (c)
  5. L62
    specialize jordan_tuple_congruence_trans (x)
  6. L63
    specialize jordan_tuple_congruence_trans (x1)
  7. L64
    specialize jordan_tuple_congruence_trans (x3)
  8. L65
    specialize jordan_tuple_congruence_trans (x4)
  9. L66
    specialize jordan_tuple_congruence_trans (k)
  10. L67
    apply jordan_tuple_congruence_trans
14Use earlier factsL68–76

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

  1. L68
    exact hnrm_witness_witness_right
  2. L69
    specialize jordan_tuple_equal_congruence (n)
  3. L70
    specialize jordan_tuple_equal_congruence (x)
  4. L71
    specialize jordan_tuple_equal_congruence (x1)
  5. L72
    specialize jordan_tuple_equal_congruence (x3)
  6. L73
    specialize jordan_tuple_equal_congruence (x4)
  7. L74
    specialize jordan_tuple_equal_congruence (k)
  8. L75
    apply jordan_tuple_equal_congruence
  9. L76
    exact hl_witness_witness_witness_right_right

Library-wide reading audit

Original exact command ledger · 76 lines
  1. 0001intro n
  2. 0002intro k
  3. 0003intro A
  4. 0004intro B
  5. 0005intro C
  6. 0006intro D
  7. 0007intro j
  8. 0008intro b
  9. 0009intro c
  10. 0010intro hn
  11. 0011intro he
  12. 0012intro hp
  13. 0013have hnrm : exists d e. ((forall jt_index_reducebound. (exists jt_gap_reduceboundindex. jt_gap_reduceboundindex+S (jt_index_reducebound)=(k)) -> exists jt_value_reducebound. ((((exists fs_h_jt_reduceboundat. fs_h_jt_reduceboundat + S (jt_value_reducebound) = S ((S (jt_index_reducebound)) * e)) /\ exists fs_q_jt_reduceboundat. d = fs_q_jt_reduceboundat * S ((S (jt_index_reducebound)) * e) + (jt_value_reducebound))) /\ (exists jt_gap_reduceboundvalue. jt_gap_reduceboundvalue+S (jt_value_reducebound)=(n)))) /\ (forall jt_index_reducemod jt_left_reducemod jt_right_reducemod. (exists jt_gap_reducemodindex. jt_gap_reducemodindex+S (jt_index_reducemod)=(k)) -> (((exists fs_h_jt_reducemodleft. fs_h_jt_reducemodleft + S (jt_left_reducemod) = S ((S (jt_index_reducemod)) * c)) /\ exists fs_q_jt_reducemodleft. b = fs_q_jt_reducemodleft * S ((S (jt_index_reducemod)) * c) + (jt_left_reducemod))) -> (((exists fs_h_jt_reducemodright. fs_h_jt_reducemodright + S (jt_right_reducemod) = S ((S (jt_index_reducemod)) * e)) /\ exists fs_q_jt_reducemodright. d = fs_q_jt_reducemodright * S ((S (jt_index_reducemod)) * e) + (jt_right_reducemod))) -> (exists jt_left_reducemodmod jt_right_reducemodmod. (jt_left_reducemod)+(n)*jt_left_reducemodmod=(jt_right_reducemod)+(n)*jt_right_reducemodmod)))
  14. 0014specialize jordan_tuple_normalize_exists (n)
  15. 0015specialize jordan_tuple_normalize_exists (b)
  16. 0016specialize jordan_tuple_normalize_exists (c)
  17. 0017specialize jordan_tuple_normalize_exists (k)
  18. 0018apply jordan_tuple_normalize_exists
  19. 0019exact hn
  20. 0020cases hnrm
  21. 0021cases hnrm_witness
  22. 0022cases hnrm_witness_witness
  23. 0023have hprim : forall jt_divisor_reduceprim. (exists jt_factor_reduceprimmodulus. (n)=(jt_divisor_reduceprim)*jt_factor_reduceprimmodulus) -> (forall jt_index_reduceprimcoordinates jt_value_reduceprimcoordinates. (exists jt_gap_reduceprimcoordinatesindex. jt_gap_reduceprimcoordinatesindex+S (jt_index_reduceprimcoordinates)=(k)) -> (((exists fs_h_jt_reduceprimcoordinatesat. fs_h_jt_reduceprimcoordinatesat + S (jt_value_reduceprimcoordinates) = S ((S (jt_index_reduceprimcoordinates)) * x1)) /\ exists fs_q_jt_reduceprimcoordinatesat. x = fs_q_jt_reduceprimcoordinatesat * S ((S (jt_index_reduceprimcoordinates)) * x1) + (jt_value_reduceprimcoordinates))) -> (exists jt_factor_reduceprimcoordinatesdivides. (jt_value_reduceprimcoordinates)=(jt_divisor_reduceprim)*jt_factor_reduceprimcoordinatesdivides)) -> jt_divisor_reduceprim=1
  24. 0024specialize jordan_primitive_tuple_congruence_transport (n)
  25. 0025specialize jordan_primitive_tuple_congruence_transport (b)
  26. 0026specialize jordan_primitive_tuple_congruence_transport (c)
  27. 0027specialize jordan_primitive_tuple_congruence_transport (x)
  28. 0028specialize jordan_primitive_tuple_congruence_transport (x1)
  29. 0029specialize jordan_primitive_tuple_congruence_transport (k)
  30. 0030apply jordan_primitive_tuple_congruence_transport
  31. 0031exact hnrm_witness_witness_right
  32. 0032exact hp
  33. 0033have hl : exists jt_index_reducelisted jt_code_reducelisted jt_scale_reducelisted. ((exists jt_gap_reducelistedindex. jt_gap_reducelistedindex+S (jt_index_reducelisted)=(j)) /\ (((((((exists fs_h_jt_reducelistedcode. fs_h_jt_reducelistedcode + S (jt_code_reducelisted) = S ((S (jt_index_reducelisted)) * B)) /\ exists fs_q_jt_reducelistedcode. A = fs_q_jt_reducelistedcode * S ((S (jt_index_reducelisted)) * B) + (jt_code_reducelisted))) /\ (((exists fs_h_jt_reducelistedscale. fs_h_jt_reducelistedscale + S (jt_scale_reducelisted) = S ((S (jt_index_reducelisted)) * D)) /\ exists fs_q_jt_reducelistedscale. C = fs_q_jt_reducelistedscale * S ((S (jt_index_reducelisted)) * D) + (jt_scale_reducelisted))))) /\ (forall jt_index_reducelistedequal jt_left_reducelistedequal jt_right_reducelistedequal. (exists jt_gap_reducelistedequalindex. jt_gap_reducelistedequalindex+S (jt_index_reducelistedequal)=(k)) -> (((exists fs_h_jt_reducelistedequalleft. fs_h_jt_reducelistedequalleft + S (jt_left_reducelistedequal) = S ((S (jt_index_reducelistedequal)) * x1)) /\ exists fs_q_jt_reducelistedequalleft. x = fs_q_jt_reducelistedequalleft * S ((S (jt_index_reducelistedequal)) * x1) + (jt_left_reducelistedequal))) -> (((exists fs_h_jt_reducelistedequalright. fs_h_jt_reducelistedequalright + S (jt_right_reducelistedequal) = S ((S (jt_index_reducelistedequal)) * jt_scale_reducelisted)) /\ exists fs_q_jt_reducelistedequalright. jt_code_reducelisted = fs_q_jt_reducelistedequalright * S ((S (jt_index_reducelistedequal)) * jt_scale_reducelisted) + (jt_right_reducelistedequal))) -> jt_left_reducelistedequal=jt_right_reducelistedequal))))
  34. 0034specialize jordan_enumeration_complete (k)
  35. 0035specialize jordan_enumeration_complete (n)
  36. 0036specialize jordan_enumeration_complete (A)
  37. 0037specialize jordan_enumeration_complete (B)
  38. 0038specialize jordan_enumeration_complete (C)
  39. 0039specialize jordan_enumeration_complete (D)
  40. 0040specialize jordan_enumeration_complete (j)
  41. 0041specialize jordan_enumeration_complete (x)
  42. 0042specialize jordan_enumeration_complete (x1)
  43. 0043apply jordan_enumeration_complete
  44. 0044exact he
  45. 0045exact hnrm_witness_witness_left
  46. 0046exact hprim
  47. 0047cases hl
  48. 0048cases hl_witness
  49. 0049cases hl_witness_witness
  50. 0050cases hl_witness_witness_witness
  51. 0051cases hl_witness_witness_witness_right
  52. 0052exists x2
  53. 0053exists x3
  54. 0054exists x4
  55. 0055split
  56. 0056exact hl_witness_witness_witness_left
  57. 0057split
  58. 0058exact hl_witness_witness_witness_right_left
  59. 0059specialize jordan_tuple_congruence_trans (n)
  60. 0060specialize jordan_tuple_congruence_trans (b)
  61. 0061specialize jordan_tuple_congruence_trans (c)
  62. 0062specialize jordan_tuple_congruence_trans (x)
  63. 0063specialize jordan_tuple_congruence_trans (x1)
  64. 0064specialize jordan_tuple_congruence_trans (x3)
  65. 0065specialize jordan_tuple_congruence_trans (x4)
  66. 0066specialize jordan_tuple_congruence_trans (k)
  67. 0067apply jordan_tuple_congruence_trans
  68. 0068exact hnrm_witness_witness_right
  69. 0069specialize jordan_tuple_equal_congruence (n)
  70. 0070specialize jordan_tuple_equal_congruence (x)
  71. 0071specialize jordan_tuple_equal_congruence (x1)
  72. 0072specialize jordan_tuple_equal_congruence (x3)
  73. 0073specialize jordan_tuple_equal_congruence (x4)
  74. 0074specialize jordan_tuple_equal_congruence (k)
  75. 0075apply jordan_tuple_equal_congruence
  76. 0076exact hl_witness_witness_witness_right_right