JT0043

jordan_rectangle_crt_actual_entry

Decode an arbitrary actual output entry without identifying distinct beta representations.

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

∀ m. ∀ n. ∀ k. ∀ A. ∀ B. ∀ C. ∀ D. ∀ u. ∀ E. ∀ F. ∀ G. ∀ H. ∀ v. ∀ P. ∀ Q. ∀ R. ∀ T. ∀ q. ∀ p. ∀ f. ∀ g. JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,P,Q,R,T,q) → Lt(p,q) → BetaAt(P,Q,p,f) ∧ BetaAt(R,T,p,g) → ∃ x. ∃ y. ∃ z. ∃ i. ∃ j. ∃ w. Lt(x,u) ∧ (Lt(y,v) ∧ (p = v · x + y ∧ (BetaAt(A,B,x,z) ∧ BetaAt(C,D,x,i) ∧ (BetaAt(E,F,y,j) ∧ BetaAt(G,H,y,w) ∧ (BetaAt(P,Q,p,f) ∧ BetaAt(R,T,p,g) ∧ (JordanCanonicalTupleCRT(m,n,z,i,j,w,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k)))))))

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

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall m n k A B C D u E F G H v P Q R T q p f g. (forall jt_index_locrect. (exists jt_gap_locrectindex. jt_gap_locrectindex+S (jt_index_locrect)=(q)) -> exists jt_row_locrect jt_column_locrect jt_b_locrect jt_c_locrect jt_d_locrect jt_e_locrect jt_f_locrect jt_g_locrect. ((exists jt_gap_locrectrow. jt_gap_locrectrow+S (jt_row_locrect)=(u)) /\ (((exists jt_gap_locrectcolumn. jt_gap_locrectcolumn+S (jt_column_locrect)=(v)) /\ (((jt_index_locrect=(v)*jt_row_locrect+jt_column_locrect) /\ (((((((exists fs_h_jt_locrectleftcode. fs_h_jt_locrectleftcode + S (jt_b_locrect) = S ((S (jt_row_locrect)) * B)) /\ exists fs_q_jt_locrectleftcode. A = fs_q_jt_locrectleftcode * S ((S (jt_row_locrect)) * B) + (jt_b_locrect))) /\ (((exists fs_h_jt_locrectleftscale. fs_h_jt_locrectleftscale + S (jt_c_locrect) = S ((S (jt_row_locrect)) * D)) /\ exists fs_q_jt_locrectleftscale. C = fs_q_jt_locrectleftscale * S ((S (jt_row_locrect)) * D) + (jt_c_locrect))))) /\ (((((((exists fs_h_jt_locrectrightcode. fs_h_jt_locrectrightcode + S (jt_d_locrect) = S ((S (jt_column_locrect)) * F)) /\ exists fs_q_jt_locrectrightcode. E = fs_q_jt_locrectrightcode * S ((S (jt_column_locrect)) * F) + (jt_d_locrect))) /\ (((exists fs_h_jt_locrectrightscale. fs_h_jt_locrectrightscale + S (jt_e_locrect) = S ((S (jt_column_locrect)) * H)) /\ exists fs_q_jt_locrectrightscale. G = fs_q_jt_locrectrightscale * S ((S (jt_column_locrect)) * H) + (jt_e_locrect))))) /\ (((((((exists fs_h_jt_locrectoutputcode. fs_h_jt_locrectoutputcode + S (jt_f_locrect) = S ((S (jt_index_locrect)) * Q)) /\ exists fs_q_jt_locrectoutputcode. P = fs_q_jt_locrectoutputcode * S ((S (jt_index_locrect)) * Q) + (jt_f_locrect))) /\ (((exists fs_h_jt_locrectoutputscale. fs_h_jt_locrectoutputscale + S (jt_g_locrect) = S ((S (jt_index_locrect)) * T)) /\ exists fs_q_jt_locrectoutputscale. R = fs_q_jt_locrectoutputscale * S ((S (jt_index_locrect)) * T) + (jt_g_locrect))))) /\ (((((forall jt_index_locrectcrtbound. (exists jt_gap_locrectcrtboundindex. jt_gap_locrectcrtboundindex+S (jt_index_locrectcrtbound)=(k)) -> exists jt_value_locrectcrtbound. ((((exists fs_h_jt_locrectcrtboundat. fs_h_jt_locrectcrtboundat + S (jt_value_locrectcrtbound) = S ((S (jt_index_locrectcrtbound)) * jt_g_locrect)) /\ exists fs_q_jt_locrectcrtboundat. jt_f_locrect = fs_q_jt_locrectcrtboundat * S ((S (jt_index_locrectcrtbound)) * jt_g_locrect) + (jt_value_locrectcrtbound))) /\ (exists jt_gap_locrectcrtboundvalue. jt_gap_locrectcrtboundvalue+S (jt_value_locrectcrtbound)=(m*n)))) /\ (((forall jt_index_locrectcrtleft jt_left_locrectcrtleft jt_right_locrectcrtleft. (exists jt_gap_locrectcrtleftindex. jt_gap_locrectcrtleftindex+S (jt_index_locrectcrtleft)=(k)) -> (((exists fs_h_jt_locrectcrtleftleft. fs_h_jt_locrectcrtleftleft + S (jt_left_locrectcrtleft) = S ((S (jt_index_locrectcrtleft)) * jt_g_locrect)) /\ exists fs_q_jt_locrectcrtleftleft. jt_f_locrect = fs_q_jt_locrectcrtleftleft * S ((S (jt_index_locrectcrtleft)) * jt_g_locrect) + (jt_left_locrectcrtleft))) -> (((exists fs_h_jt_locrectcrtleftright. fs_h_jt_locrectcrtleftright + S (jt_right_locrectcrtleft) = S ((S (jt_index_locrectcrtleft)) * jt_c_locrect)) /\ exists fs_q_jt_locrectcrtleftright. jt_b_locrect = fs_q_jt_locrectcrtleftright * S ((S (jt_index_locrectcrtleft)) * jt_c_locrect) + (jt_right_locrectcrtleft))) -> (exists jt_left_locrectcrtleftmod jt_right_locrectcrtleftmod. (jt_left_locrectcrtleft)+(m)*jt_left_locrectcrtleftmod=(jt_right_locrectcrtleft)+(m)*jt_right_locrectcrtleftmod)) /\ (forall jt_index_locrectcrtright jt_left_locrectcrtright jt_right_locrectcrtright. (exists jt_gap_locrectcrtrightindex. jt_gap_locrectcrtrightindex+S (jt_index_locrectcrtright)=(k)) -> (((exists fs_h_jt_locrectcrtrightleft. fs_h_jt_locrectcrtrightleft + S (jt_left_locrectcrtright) = S ((S (jt_index_locrectcrtright)) * jt_g_locrect)) /\ exists fs_q_jt_locrectcrtrightleft. jt_f_locrect = fs_q_jt_locrectcrtrightleft * S ((S (jt_index_locrectcrtright)) * jt_g_locrect) + (jt_left_locrectcrtright))) -> (((exists fs_h_jt_locrectcrtrightright. fs_h_jt_locrectcrtrightright + S (jt_right_locrectcrtright) = S ((S (jt_index_locrectcrtright)) * jt_e_locrect)) /\ exists fs_q_jt_locrectcrtrightright. jt_d_locrect = fs_q_jt_locrectcrtrightright * S ((S (jt_index_locrectcrtright)) * jt_e_locrect) + (jt_right_locrectcrtright))) -> (exists jt_left_locrectcrtrightmod jt_right_locrectcrtrightmod. (jt_left_locrectcrtright)+(n)*jt_left_locrectcrtrightmod=(jt_right_locrectcrtright)+(n)*jt_right_locrectcrtrightmod)))))) /\ (forall jt_divisor_locrectprimitive. (exists jt_factor_locrectprimitivemodulus. (m*n)=(jt_divisor_locrectprimitive)*jt_factor_locrectprimitivemodulus) -> (forall jt_index_locrectprimitivecoordinates jt_value_locrectprimitivecoordinates. (exists jt_gap_locrectprimitivecoordinatesindex. jt_gap_locrectprimitivecoordinatesindex+S (jt_index_locrectprimitivecoordinates)=(k)) -> (((exists fs_h_jt_locrectprimitivecoordinatesat. fs_h_jt_locrectprimitivecoordinatesat + S (jt_value_locrectprimitivecoordinates) = S ((S (jt_index_locrectprimitivecoordinates)) * jt_g_locrect)) /\ exists fs_q_jt_locrectprimitivecoordinatesat. jt_f_locrect = fs_q_jt_locrectprimitivecoordinatesat * S ((S (jt_index_locrectprimitivecoordinates)) * jt_g_locrect) + (jt_value_locrectprimitivecoordinates))) -> (exists jt_factor_locrectprimitivecoordinatesdivides. (jt_value_locrectprimitivecoordinates)=(jt_divisor_locrectprimitive)*jt_factor_locrectprimitivecoordinatesdivides)) -> jt_divisor_locrectprimitive=1))))))))))))))) -> (exists jt_gap_locbound. jt_gap_locbound+S (p)=(q)) -> (((((exists fs_h_jt_locentrycode. fs_h_jt_locentrycode + S (f) = S ((S (p)) * Q)) /\ exists fs_q_jt_locentrycode. P = fs_q_jt_locentrycode * S ((S (p)) * Q) + (f))) /\ (((exists fs_h_jt_locentryscale. fs_h_jt_locentryscale + S (g) = S ((S (p)) * T)) /\ exists fs_q_jt_locentryscale. R = fs_q_jt_locentryscale * S ((S (p)) * T) + (g))))) -> exists i j b c d e. ((exists jt_gap_locresultrow. jt_gap_locresultrow+S (i)=(u)) /\ (((exists jt_gap_locresultcolumn. jt_gap_locresultcolumn+S (j)=(v)) /\ (((p=(v)*(i)+(j)) /\ (((((((exists fs_h_jt_locresultleftcode. fs_h_jt_locresultleftcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_locresultleftcode. A = fs_q_jt_locresultleftcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_locresultleftscale. fs_h_jt_locresultleftscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_locresultleftscale. C = fs_q_jt_locresultleftscale * S ((S (i)) * D) + (c))))) /\ (((((((exists fs_h_jt_locresultrightcode. fs_h_jt_locresultrightcode + S (d) = S ((S (j)) * F)) /\ exists fs_q_jt_locresultrightcode. E = fs_q_jt_locresultrightcode * S ((S (j)) * F) + (d))) /\ (((exists fs_h_jt_locresultrightscale. fs_h_jt_locresultrightscale + S (e) = S ((S (j)) * H)) /\ exists fs_q_jt_locresultrightscale. G = fs_q_jt_locresultrightscale * S ((S (j)) * H) + (e))))) /\ (((((((exists fs_h_jt_locresultoutputcode. fs_h_jt_locresultoutputcode + S (f) = S ((S (p)) * Q)) /\ exists fs_q_jt_locresultoutputcode. P = fs_q_jt_locresultoutputcode * S ((S (p)) * Q) + (f))) /\ (((exists fs_h_jt_locresultoutputscale. fs_h_jt_locresultoutputscale + S (g) = S ((S (p)) * T)) /\ exists fs_q_jt_locresultoutputscale. R = fs_q_jt_locresultoutputscale * S ((S (p)) * T) + (g))))) /\ (((((forall jt_index_locresultcrtbound. (exists jt_gap_locresultcrtboundindex. jt_gap_locresultcrtboundindex+S (jt_index_locresultcrtbound)=(k)) -> exists jt_value_locresultcrtbound. ((((exists fs_h_jt_locresultcrtboundat. fs_h_jt_locresultcrtboundat + S (jt_value_locresultcrtbound) = S ((S (jt_index_locresultcrtbound)) * g)) /\ exists fs_q_jt_locresultcrtboundat. f = fs_q_jt_locresultcrtboundat * S ((S (jt_index_locresultcrtbound)) * g) + (jt_value_locresultcrtbound))) /\ (exists jt_gap_locresultcrtboundvalue. jt_gap_locresultcrtboundvalue+S (jt_value_locresultcrtbound)=(m*n)))) /\ (((forall jt_index_locresultcrtleft jt_left_locresultcrtleft jt_right_locresultcrtleft. (exists jt_gap_locresultcrtleftindex. jt_gap_locresultcrtleftindex+S (jt_index_locresultcrtleft)=(k)) -> (((exists fs_h_jt_locresultcrtleftleft. fs_h_jt_locresultcrtleftleft + S (jt_left_locresultcrtleft) = S ((S (jt_index_locresultcrtleft)) * g)) /\ exists fs_q_jt_locresultcrtleftleft. f = fs_q_jt_locresultcrtleftleft * S ((S (jt_index_locresultcrtleft)) * g) + (jt_left_locresultcrtleft))) -> (((exists fs_h_jt_locresultcrtleftright. fs_h_jt_locresultcrtleftright + S (jt_right_locresultcrtleft) = S ((S (jt_index_locresultcrtleft)) * c)) /\ exists fs_q_jt_locresultcrtleftright. b = fs_q_jt_locresultcrtleftright * S ((S (jt_index_locresultcrtleft)) * c) + (jt_right_locresultcrtleft))) -> (exists jt_left_locresultcrtleftmod jt_right_locresultcrtleftmod. (jt_left_locresultcrtleft)+(m)*jt_left_locresultcrtleftmod=(jt_right_locresultcrtleft)+(m)*jt_right_locresultcrtleftmod)) /\ (forall jt_index_locresultcrtright jt_left_locresultcrtright jt_right_locresultcrtright. (exists jt_gap_locresultcrtrightindex. jt_gap_locresultcrtrightindex+S (jt_index_locresultcrtright)=(k)) -> (((exists fs_h_jt_locresultcrtrightleft. fs_h_jt_locresultcrtrightleft + S (jt_left_locresultcrtright) = S ((S (jt_index_locresultcrtright)) * g)) /\ exists fs_q_jt_locresultcrtrightleft. f = fs_q_jt_locresultcrtrightleft * S ((S (jt_index_locresultcrtright)) * g) + (jt_left_locresultcrtright))) -> (((exists fs_h_jt_locresultcrtrightright. fs_h_jt_locresultcrtrightright + S (jt_right_locresultcrtright) = S ((S (jt_index_locresultcrtright)) * e)) /\ exists fs_q_jt_locresultcrtrightright. d = fs_q_jt_locresultcrtrightright * S ((S (jt_index_locresultcrtright)) * e) + (jt_right_locresultcrtright))) -> (exists jt_left_locresultcrtrightmod jt_right_locresultcrtrightmod. (jt_left_locresultcrtright)+(n)*jt_left_locresultcrtrightmod=(jt_right_locresultcrtright)+(n)*jt_right_locresultcrtrightmod)))))) /\ (forall jt_divisor_locresultprimitive. (exists jt_factor_locresultprimitivemodulus. (m*n)=(jt_divisor_locresultprimitive)*jt_factor_locresultprimitivemodulus) -> (forall jt_index_locresultprimitivecoordinates jt_value_locresultprimitivecoordinates. (exists jt_gap_locresultprimitivecoordinatesindex. jt_gap_locresultprimitivecoordinatesindex+S (jt_index_locresultprimitivecoordinates)=(k)) -> (((exists fs_h_jt_locresultprimitivecoordinatesat. fs_h_jt_locresultprimitivecoordinatesat + S (jt_value_locresultprimitivecoordinates) = S ((S (jt_index_locresultprimitivecoordinates)) * g)) /\ exists fs_q_jt_locresultprimitivecoordinatesat. f = fs_q_jt_locresultprimitivecoordinatesat * S ((S (jt_index_locresultprimitivecoordinates)) * g) + (jt_value_locresultprimitivecoordinates))) -> (exists jt_factor_locresultprimitivecoordinatesdivides. (jt_value_locresultprimitivecoordinates)=(jt_divisor_locresultprimitive)*jt_factor_locresultprimitivecoordinatesdivides)) -> jt_divisor_locresultprimitive=1))))))))))))))

Complete tactic proof in conservative notation

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

98 script commands · 26 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.

01Fix variables and assumptionsL1–10

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

  1. L1
    intro m
  2. L2
    intro n
  3. L3
    intro k
  4. L4
    intro A
  5. L5
    intro B
  6. L6
    intro C
  7. L7
    intro D
  8. L8
    intro u
  9. L9
    intro E
  10. L10
    intro F
02Fix variables and assumptionsL11–20

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

  1. L11
    intro G
  2. L12
    intro H
  3. L13
    intro v
  4. L14
    intro P
  5. L15
    intro Q
  6. L16
    intro R
  7. L17
    intro T
  8. L18
    intro q
  9. L19
    intro p
  10. L20
    intro f
03Fix variables and assumptionsL21–24

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

  1. L21
    intro g
  2. L22
    intro hr
  3. L23
    intro hp
  4. L24
    intro he
04Establish hvL25–28

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

  1. L25
    have hv : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. ∃ f. ∃ g. Lt(i,u) ∧ (Lt(j,v) ∧ (p = v · i + j ∧ (BetaAt(A,B,i,b) ∧ BetaAt(C,D,i,c) ∧ (BetaAt(E,F,j,d) ∧ BetaAt(G,H,j,e) ∧ (BetaAt(P,Q,p,f) ∧ BetaAt(R,T,p,g) ∧ (JordanCanonicalTupleCRT(m,n,b,c,d,e,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k)))))))Definitions: Lt(i,u)Lt(j,v)BetaAt(A,B,i,b)BetaAt(C,D,i,c)BetaAt(E,F,j,d)BetaAt(G,H,j,e)BetaAt(P,Q,p,f)BetaAt(R,T,p,g)JordanCanonicalTupleCRT(m,n,b,c,d,e,f,g,k)JordanPrimitiveTuple(m · n,f,g,k)Original native command in the exact edition
  2. L26
    specialize hr (p)
  3. L27
    apply hr
  4. L28
    exact hp
05Separate the logical casesL29–38

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

  1. L29
    cases hv
  2. L30
    cases hv_witness
  3. L31
    cases hv_witness_witness
  4. L32
    cases hv_witness_witness_witness
  5. L33
    cases hv_witness_witness_witness_witness
  6. L34
    cases hv_witness_witness_witness_witness_witness
  7. L35
    cases hv_witness_witness_witness_witness_witness_witness
  8. L36
    cases hv_witness_witness_witness_witness_witness_witness_witness
  9. L37
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness
  10. L38
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right
06Separate the logical casesL39–45

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

  1. L39
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  2. L40
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  3. L41
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  4. L42
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  5. L43
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  6. L44
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
  7. L45
    cases he
07Establish hfL46–54

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

  1. L46
    have hf : x6=f
  2. L47
    specialize beta_at_unique (P)
  3. L48
    specialize beta_at_unique (Q)
  4. L49
    specialize beta_at_unique (p)
  5. L50
    specialize beta_at_unique (x6)
  6. L51
    specialize beta_at_unique (f)
  7. L52
    apply beta_at_unique
  8. L53
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_left
  9. L54
    exact he_left
08Establish hgL55–63

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

  1. L55
    have hg : x7=g
  2. L56
    specialize beta_at_unique (R)
  3. L57
    specialize beta_at_unique (T)
  4. L58
    specialize beta_at_unique (p)
  5. L59
    specialize beta_at_unique (x7)
  6. L60
    specialize beta_at_unique (g)
  7. L61
    apply beta_at_unique
  8. L62
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_right
  9. L63
    exact he_right
09Construct an explicit witnessL64–69

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

  1. L64
    exists x
  2. L65
    exists x1
  3. L66
    exists x2
  4. L67
    exists x3
  5. L68
    exists x4
  6. L69
    exists x5
10Separate the logical casesL70–70

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

  1. L70
    split
11Use earlier factsL71–71

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

  1. L71
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_left
12Separate the logical casesL72–72

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

  1. L72
    split
13Use earlier factsL73–73

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

  1. L73
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_left
14Separate the logical casesL74–74

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

  1. L74
    split
15Use earlier factsL75–75

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

  1. L75
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_left
16Separate the logical casesL76–76

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

  1. L76
    split
17Use earlier factsL77–77

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

  1. L77
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
18Separate the logical casesL78–78

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

  1. L78
    split
19Use earlier factsL79–79

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

  1. L79
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
20Separate the logical casesL80–81

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

  1. L80
    split
  2. L81
    split
21Use earlier factsL82–83

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

  1. L82
    exact he_left
  2. L83
    exact he_right
22Separate the logical casesL84–84

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

  1. L84
    split
23Calculate and transport equalitiesL85–93

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L85
    rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  2. L86
    rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  3. L87
    rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  4. L88
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  5. L89
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  6. L90
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  7. L91
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  8. L92
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  9. L93
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
24Use earlier factsL94–94

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

  1. L94
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
25Calculate and transport equalitiesL95–97

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L95
    rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
  2. L96
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
  3. L97
    rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
26Use earlier factsL98–98

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

  1. L98
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right

Library-wide reading audit

Original defined command ledger · 98 lines
  1. 0001intro m
  2. 0002intro n
  3. 0003intro k
  4. 0004intro A
  5. 0005intro B
  6. 0006intro C
  7. 0007intro D
  8. 0008intro u
  9. 0009intro E
  10. 0010intro F
  11. 0011intro G
  12. 0012intro H
  13. 0013intro v
  14. 0014intro P
  15. 0015intro Q
  16. 0016intro R
  17. 0017intro T
  18. 0018intro q
  19. 0019intro p
  20. 0020intro f
  21. 0021intro g
  22. 0022intro hr
  23. 0023intro hp
  24. 0024intro he
  25. 0025have hv : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. ∃ f. ∃ g. Lt(i,u) ∧ (Lt(j,v) ∧ (p = v · i + j ∧ (BetaAt(A,B,i,b) ∧ BetaAt(C,D,i,c) ∧ (BetaAt(E,F,j,d) ∧ BetaAt(G,H,j,e) ∧ (BetaAt(P,Q,p,f) ∧ BetaAt(R,T,p,g) ∧ (JordanCanonicalTupleCRT(m,n,b,c,d,e,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k)))))))
  26. 0026specialize hr (p)
  27. 0027apply hr
  28. 0028exact hp
  29. 0029cases hv
  30. 0030cases hv_witness
  31. 0031cases hv_witness_witness
  32. 0032cases hv_witness_witness_witness
  33. 0033cases hv_witness_witness_witness_witness
  34. 0034cases hv_witness_witness_witness_witness_witness
  35. 0035cases hv_witness_witness_witness_witness_witness_witness
  36. 0036cases hv_witness_witness_witness_witness_witness_witness_witness
  37. 0037cases hv_witness_witness_witness_witness_witness_witness_witness_witness
  38. 0038cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right
  39. 0039cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  40. 0040cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  41. 0041cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  42. 0042cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  43. 0043cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  44. 0044cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
  45. 0045cases he
  46. 0046have hf : x6=f
  47. 0047specialize beta_at_unique (P)
  48. 0048specialize beta_at_unique (Q)
  49. 0049specialize beta_at_unique (p)
  50. 0050specialize beta_at_unique (x6)
  51. 0051specialize beta_at_unique (f)
  52. 0052apply beta_at_unique
  53. 0053exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_left
  54. 0054exact he_left
  55. 0055have hg : x7=g
  56. 0056specialize beta_at_unique (R)
  57. 0057specialize beta_at_unique (T)
  58. 0058specialize beta_at_unique (p)
  59. 0059specialize beta_at_unique (x7)
  60. 0060specialize beta_at_unique (g)
  61. 0061apply beta_at_unique
  62. 0062exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_right
  63. 0063exact he_right
  64. 0064exists x
  65. 0065exists x1
  66. 0066exists x2
  67. 0067exists x3
  68. 0068exists x4
  69. 0069exists x5
  70. 0070split
  71. 0071exact hv_witness_witness_witness_witness_witness_witness_witness_witness_left
  72. 0072split
  73. 0073exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  74. 0074split
  75. 0075exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_left
  76. 0076split
  77. 0077exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
  78. 0078split
  79. 0079exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  80. 0080split
  81. 0081split
  82. 0082exact he_left
  83. 0083exact he_right
  84. 0084split
  85. 0085rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  86. 0086rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  87. 0087rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  88. 0088rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  89. 0089rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  90. 0090rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  91. 0091rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  92. 0092rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  93. 0093rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  94. 0094exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  95. 0095rewrite hf at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
  96. 0096rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
  97. 0097rewrite hg at hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
  98. 0098exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right