JT0044

jordan_rectangle_crt_pair_value

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

The actual rectangular table realizes every prescribed pair of source entries at its unique flat index.

Exact expanded first-order arithmetic statement

forall m n k A B C D u E F G H v P Q R T i j b c d e. (forall jt_index_pairrect. (exists jt_gap_pairrectindex. jt_gap_pairrectindex+S (jt_index_pairrect)=(u*v)) -> exists jt_row_pairrect jt_column_pairrect jt_b_pairrect jt_c_pairrect jt_d_pairrect jt_e_pairrect jt_f_pairrect jt_g_pairrect. ((exists jt_gap_pairrectrow. jt_gap_pairrectrow+S (jt_row_pairrect)=(u)) /\ (((exists jt_gap_pairrectcolumn. jt_gap_pairrectcolumn+S (jt_column_pairrect)=(v)) /\ (((jt_index_pairrect=(v)*jt_row_pairrect+jt_column_pairrect) /\ (((((((exists fs_h_jt_pairrectleftcode. fs_h_jt_pairrectleftcode + S (jt_b_pairrect) = S ((S (jt_row_pairrect)) * B)) /\ exists fs_q_jt_pairrectleftcode. A = fs_q_jt_pairrectleftcode * S ((S (jt_row_pairrect)) * B) + (jt_b_pairrect))) /\ (((exists fs_h_jt_pairrectleftscale. fs_h_jt_pairrectleftscale + S (jt_c_pairrect) = S ((S (jt_row_pairrect)) * D)) /\ exists fs_q_jt_pairrectleftscale. C = fs_q_jt_pairrectleftscale * S ((S (jt_row_pairrect)) * D) + (jt_c_pairrect))))) /\ (((((((exists fs_h_jt_pairrectrightcode. fs_h_jt_pairrectrightcode + S (jt_d_pairrect) = S ((S (jt_column_pairrect)) * F)) /\ exists fs_q_jt_pairrectrightcode. E = fs_q_jt_pairrectrightcode * S ((S (jt_column_pairrect)) * F) + (jt_d_pairrect))) /\ (((exists fs_h_jt_pairrectrightscale. fs_h_jt_pairrectrightscale + S (jt_e_pairrect) = S ((S (jt_column_pairrect)) * H)) /\ exists fs_q_jt_pairrectrightscale. G = fs_q_jt_pairrectrightscale * S ((S (jt_column_pairrect)) * H) + (jt_e_pairrect))))) /\ (((((((exists fs_h_jt_pairrectoutputcode. fs_h_jt_pairrectoutputcode + S (jt_f_pairrect) = S ((S (jt_index_pairrect)) * Q)) /\ exists fs_q_jt_pairrectoutputcode. P = fs_q_jt_pairrectoutputcode * S ((S (jt_index_pairrect)) * Q) + (jt_f_pairrect))) /\ (((exists fs_h_jt_pairrectoutputscale. fs_h_jt_pairrectoutputscale + S (jt_g_pairrect) = S ((S (jt_index_pairrect)) * T)) /\ exists fs_q_jt_pairrectoutputscale. R = fs_q_jt_pairrectoutputscale * S ((S (jt_index_pairrect)) * T) + (jt_g_pairrect))))) /\ (((((forall jt_index_pairrectcrtbound. (exists jt_gap_pairrectcrtboundindex. jt_gap_pairrectcrtboundindex+S (jt_index_pairrectcrtbound)=(k)) -> exists jt_value_pairrectcrtbound. ((((exists fs_h_jt_pairrectcrtboundat. fs_h_jt_pairrectcrtboundat + S (jt_value_pairrectcrtbound) = S ((S (jt_index_pairrectcrtbound)) * jt_g_pairrect)) /\ exists fs_q_jt_pairrectcrtboundat. jt_f_pairrect = fs_q_jt_pairrectcrtboundat * S ((S (jt_index_pairrectcrtbound)) * jt_g_pairrect) + (jt_value_pairrectcrtbound))) /\ (exists jt_gap_pairrectcrtboundvalue. jt_gap_pairrectcrtboundvalue+S (jt_value_pairrectcrtbound)=(m*n)))) /\ (((forall jt_index_pairrectcrtleft jt_left_pairrectcrtleft jt_right_pairrectcrtleft. (exists jt_gap_pairrectcrtleftindex. jt_gap_pairrectcrtleftindex+S (jt_index_pairrectcrtleft)=(k)) -> (((exists fs_h_jt_pairrectcrtleftleft. fs_h_jt_pairrectcrtleftleft + S (jt_left_pairrectcrtleft) = S ((S (jt_index_pairrectcrtleft)) * jt_g_pairrect)) /\ exists fs_q_jt_pairrectcrtleftleft. jt_f_pairrect = fs_q_jt_pairrectcrtleftleft * S ((S (jt_index_pairrectcrtleft)) * jt_g_pairrect) + (jt_left_pairrectcrtleft))) -> (((exists fs_h_jt_pairrectcrtleftright. fs_h_jt_pairrectcrtleftright + S (jt_right_pairrectcrtleft) = S ((S (jt_index_pairrectcrtleft)) * jt_c_pairrect)) /\ exists fs_q_jt_pairrectcrtleftright. jt_b_pairrect = fs_q_jt_pairrectcrtleftright * S ((S (jt_index_pairrectcrtleft)) * jt_c_pairrect) + (jt_right_pairrectcrtleft))) -> (exists jt_left_pairrectcrtleftmod jt_right_pairrectcrtleftmod. (jt_left_pairrectcrtleft)+(m)*jt_left_pairrectcrtleftmod=(jt_right_pairrectcrtleft)+(m)*jt_right_pairrectcrtleftmod)) /\ (forall jt_index_pairrectcrtright jt_left_pairrectcrtright jt_right_pairrectcrtright. (exists jt_gap_pairrectcrtrightindex. jt_gap_pairrectcrtrightindex+S (jt_index_pairrectcrtright)=(k)) -> (((exists fs_h_jt_pairrectcrtrightleft. fs_h_jt_pairrectcrtrightleft + S (jt_left_pairrectcrtright) = S ((S (jt_index_pairrectcrtright)) * jt_g_pairrect)) /\ exists fs_q_jt_pairrectcrtrightleft. jt_f_pairrect = fs_q_jt_pairrectcrtrightleft * S ((S (jt_index_pairrectcrtright)) * jt_g_pairrect) + (jt_left_pairrectcrtright))) -> (((exists fs_h_jt_pairrectcrtrightright. fs_h_jt_pairrectcrtrightright + S (jt_right_pairrectcrtright) = S ((S (jt_index_pairrectcrtright)) * jt_e_pairrect)) /\ exists fs_q_jt_pairrectcrtrightright. jt_d_pairrect = fs_q_jt_pairrectcrtrightright * S ((S (jt_index_pairrectcrtright)) * jt_e_pairrect) + (jt_right_pairrectcrtright))) -> (exists jt_left_pairrectcrtrightmod jt_right_pairrectcrtrightmod. (jt_left_pairrectcrtright)+(n)*jt_left_pairrectcrtrightmod=(jt_right_pairrectcrtright)+(n)*jt_right_pairrectcrtrightmod)))))) /\ (forall jt_divisor_pairrectprimitive. (exists jt_factor_pairrectprimitivemodulus. (m*n)=(jt_divisor_pairrectprimitive)*jt_factor_pairrectprimitivemodulus) -> (forall jt_index_pairrectprimitivecoordinates jt_value_pairrectprimitivecoordinates. (exists jt_gap_pairrectprimitivecoordinatesindex. jt_gap_pairrectprimitivecoordinatesindex+S (jt_index_pairrectprimitivecoordinates)=(k)) -> (((exists fs_h_jt_pairrectprimitivecoordinatesat. fs_h_jt_pairrectprimitivecoordinatesat + S (jt_value_pairrectprimitivecoordinates) = S ((S (jt_index_pairrectprimitivecoordinates)) * jt_g_pairrect)) /\ exists fs_q_jt_pairrectprimitivecoordinatesat. jt_f_pairrect = fs_q_jt_pairrectprimitivecoordinatesat * S ((S (jt_index_pairrectprimitivecoordinates)) * jt_g_pairrect) + (jt_value_pairrectprimitivecoordinates))) -> (exists jt_factor_pairrectprimitivecoordinatesdivides. (jt_value_pairrectprimitivecoordinates)=(jt_divisor_pairrectprimitive)*jt_factor_pairrectprimitivecoordinatesdivides)) -> jt_divisor_pairrectprimitive=1))))))))))))))) -> (exists jt_gap_pairrow. jt_gap_pairrow+S (i)=(u)) -> (exists jt_gap_paircol. jt_gap_paircol+S (j)=(v)) -> (((((exists fs_h_jt_pairleftcode. fs_h_jt_pairleftcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_pairleftcode. A = fs_q_jt_pairleftcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_pairleftscale. fs_h_jt_pairleftscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_pairleftscale. C = fs_q_jt_pairleftscale * S ((S (i)) * D) + (c))))) -> (((((exists fs_h_jt_pairrightcode. fs_h_jt_pairrightcode + S (d) = S ((S (j)) * F)) /\ exists fs_q_jt_pairrightcode. E = fs_q_jt_pairrightcode * S ((S (j)) * F) + (d))) /\ (((exists fs_h_jt_pairrightscale. fs_h_jt_pairrightscale + S (e) = S ((S (j)) * H)) /\ exists fs_q_jt_pairrightscale. G = fs_q_jt_pairrightscale * S ((S (j)) * H) + (e))))) -> exists f g. ((((((exists fs_h_jt_pairoutputcode. fs_h_jt_pairoutputcode + S (f) = S ((S (v*i+j)) * Q)) /\ exists fs_q_jt_pairoutputcode. P = fs_q_jt_pairoutputcode * S ((S (v*i+j)) * Q) + (f))) /\ (((exists fs_h_jt_pairoutputscale. fs_h_jt_pairoutputscale + S (g) = S ((S (v*i+j)) * T)) /\ exists fs_q_jt_pairoutputscale. R = fs_q_jt_pairoutputscale * S ((S (v*i+j)) * T) + (g))))) /\ (((((forall jt_index_paircrtbound. (exists jt_gap_paircrtboundindex. jt_gap_paircrtboundindex+S (jt_index_paircrtbound)=(k)) -> exists jt_value_paircrtbound. ((((exists fs_h_jt_paircrtboundat. fs_h_jt_paircrtboundat + S (jt_value_paircrtbound) = S ((S (jt_index_paircrtbound)) * g)) /\ exists fs_q_jt_paircrtboundat. f = fs_q_jt_paircrtboundat * S ((S (jt_index_paircrtbound)) * g) + (jt_value_paircrtbound))) /\ (exists jt_gap_paircrtboundvalue. jt_gap_paircrtboundvalue+S (jt_value_paircrtbound)=(m*n)))) /\ (((forall jt_index_paircrtleft jt_left_paircrtleft jt_right_paircrtleft. (exists jt_gap_paircrtleftindex. jt_gap_paircrtleftindex+S (jt_index_paircrtleft)=(k)) -> (((exists fs_h_jt_paircrtleftleft. fs_h_jt_paircrtleftleft + S (jt_left_paircrtleft) = S ((S (jt_index_paircrtleft)) * g)) /\ exists fs_q_jt_paircrtleftleft. f = fs_q_jt_paircrtleftleft * S ((S (jt_index_paircrtleft)) * g) + (jt_left_paircrtleft))) -> (((exists fs_h_jt_paircrtleftright. fs_h_jt_paircrtleftright + S (jt_right_paircrtleft) = S ((S (jt_index_paircrtleft)) * c)) /\ exists fs_q_jt_paircrtleftright. b = fs_q_jt_paircrtleftright * S ((S (jt_index_paircrtleft)) * c) + (jt_right_paircrtleft))) -> (exists jt_left_paircrtleftmod jt_right_paircrtleftmod. (jt_left_paircrtleft)+(m)*jt_left_paircrtleftmod=(jt_right_paircrtleft)+(m)*jt_right_paircrtleftmod)) /\ (forall jt_index_paircrtright jt_left_paircrtright jt_right_paircrtright. (exists jt_gap_paircrtrightindex. jt_gap_paircrtrightindex+S (jt_index_paircrtright)=(k)) -> (((exists fs_h_jt_paircrtrightleft. fs_h_jt_paircrtrightleft + S (jt_left_paircrtright) = S ((S (jt_index_paircrtright)) * g)) /\ exists fs_q_jt_paircrtrightleft. f = fs_q_jt_paircrtrightleft * S ((S (jt_index_paircrtright)) * g) + (jt_left_paircrtright))) -> (((exists fs_h_jt_paircrtrightright. fs_h_jt_paircrtrightright + S (jt_right_paircrtright) = S ((S (jt_index_paircrtright)) * e)) /\ exists fs_q_jt_paircrtrightright. d = fs_q_jt_paircrtrightright * S ((S (jt_index_paircrtright)) * e) + (jt_right_paircrtright))) -> (exists jt_left_paircrtrightmod jt_right_paircrtrightmod. (jt_left_paircrtright)+(n)*jt_left_paircrtrightmod=(jt_right_paircrtright)+(n)*jt_right_paircrtrightmod)))))) /\ (forall jt_divisor_pairprimitive. (exists jt_factor_pairprimitivemodulus. (m*n)=(jt_divisor_pairprimitive)*jt_factor_pairprimitivemodulus) -> (forall jt_index_pairprimitivecoordinates jt_value_pairprimitivecoordinates. (exists jt_gap_pairprimitivecoordinatesindex. jt_gap_pairprimitivecoordinatesindex+S (jt_index_pairprimitivecoordinates)=(k)) -> (((exists fs_h_jt_pairprimitivecoordinatesat. fs_h_jt_pairprimitivecoordinatesat + S (jt_value_pairprimitivecoordinates) = S ((S (jt_index_pairprimitivecoordinates)) * g)) /\ exists fs_q_jt_pairprimitivecoordinatesat. f = fs_q_jt_pairprimitivecoordinatesat * S ((S (jt_index_pairprimitivecoordinates)) * g) + (jt_value_pairprimitivecoordinates))) -> (exists jt_factor_pairprimitivecoordinatesdivides. (jt_value_pairprimitivecoordinates)=(jt_divisor_pairprimitive)*jt_factor_pairprimitivecoordinatesdivides)) -> jt_divisor_pairprimitive=1))))

Constructive proof overview

Generated structural guide

The actual rectangular table realizes every prescribed pair of source entries at its unique flat index.

The unchanged tactic script uses 3 declared prerequisites and contains 127 exact native proof lines.

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

Proof neighborhood

Direct dependencies

JT0036 jordan_rectangle_flat_bound JT0037 jordan_rectangle_pair_unique beta_at_unique Alpha theorem; checked-use authorized

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

127 script commands · 23 reading checkpoints · 7 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 (2)

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 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 i
  9. L19
    intro j
  10. L20
    intro b
03Fix variables and assumptionsL21–28

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

  1. L21
    intro c
  2. L22
    intro d
  3. L23
    intro e
  4. L24
    intro hr
  5. L25
    intro hi
  6. L26
    intro hj
  7. L27
    intro hl
  8. L28
    intro hh
04Establish hpL29–36

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan rectangle flat bound.

  1. L29
    have hp : exists jt_gap_pairbound. jt_gap_pairbound+S (v*i+j)=(u*v)
  2. L30
    specialize jordan_rectangle_flat_bound (u)
  3. L31
    specialize jordan_rectangle_flat_bound (v)
  4. L32
    specialize jordan_rectangle_flat_bound (i)
  5. L33
    specialize jordan_rectangle_flat_bound (j)
  6. L34
    apply jordan_rectangle_flat_bound
  7. L35
    exact hi
  8. L36
    exact hj
05Establish hvL37–40

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

  1. L37
    have hv : ∃ ri. ∃ rj. ∃ rb. ∃ rc. ∃ rd. ∃ re. ∃ rf. ∃ rg. Lt(ri,u) ∧ (Lt(rj,v) ∧ (v · i + j = v · ri + rj ∧ (BetaAt(A,B,ri,rb) ∧ BetaAt(C,D,ri,rc) ∧ (BetaAt(E,F,rj,rd) ∧ BetaAt(G,H,rj,re) ∧ (MatrixAt(P,Q,i,v,j,rf) ∧ MatrixAt(R,T,i,v,j,rg) ∧ (JordanCanonicalTupleCRT(m,n,rb,rc,rd,re,rf,rg,k) ∧ JordanPrimitiveTuple(m · n,rf,rg,k)))))))Definitions: MatrixAtJordanPrimitiveTupleJordanCanonicalTupleCRTLtBetaAt
  2. L38
    specialize hr (v*i+j)
  3. L39
    apply hr
  4. L40
    exact hp
06Separate the logical casesL41–50

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

  1. L41
    cases hv
  2. L42
    cases hv_witness
  3. L43
    cases hv_witness_witness
  4. L44
    cases hv_witness_witness_witness
  5. L45
    cases hv_witness_witness_witness_witness
  6. L46
    cases hv_witness_witness_witness_witness_witness
  7. L47
    cases hv_witness_witness_witness_witness_witness_witness
  8. L48
    cases hv_witness_witness_witness_witness_witness_witness_witness
  9. L49
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness
  10. L50
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right
07Separate the logical casesL51–55

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

  1. L51
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  2. L52
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  3. L53
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  4. L54
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  5. L55
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
08Establish hijL56–65

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

  1. L56
    have hij : i=x /\ j=x1
  2. L57
    specialize jordan_rectangle_pair_unique (v)
  3. L58
    specialize jordan_rectangle_pair_unique (i)
  4. L59
    specialize jordan_rectangle_pair_unique (j)
  5. L60
    specialize jordan_rectangle_pair_unique (x)
  6. L61
    specialize jordan_rectangle_pair_unique (x1)
  7. L62
    apply jordan_rectangle_pair_unique
  8. L63
    exact hj
  9. L64
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  10. L65
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_left
09Separate the logical casesL66–70

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

  1. L66
    cases hij
  2. L67
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
  3. L68
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  4. L69
    cases hl
  5. L70
    cases hh
10Establish hbL71–80

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

  1. L71
    have hb : b=x2
  2. L72
    specialize beta_at_unique (A)
  3. L73
    specialize beta_at_unique (B)
  4. L74
    specialize beta_at_unique (x)
  5. L75
    specialize beta_at_unique (b)
  6. L76
    specialize beta_at_unique (x2)
  7. L77
    apply beta_at_unique
  8. L78
    rewrite hij_left at hl_left
  9. L79
    rewrite hij_left at hl_left
  10. L80
    exact hl_left
11Use earlier factsL81–81

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

  1. L81
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left_left
12Establish hcL82–91

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

  1. L82
    have hc : c=x3
  2. L83
    specialize beta_at_unique (C)
  3. L84
    specialize beta_at_unique (D)
  4. L85
    specialize beta_at_unique (x)
  5. L86
    specialize beta_at_unique (c)
  6. L87
    specialize beta_at_unique (x3)
  7. L88
    apply beta_at_unique
  8. L89
    rewrite hij_left at hl_right
  9. L90
    rewrite hij_left at hl_right
  10. L91
    exact hl_right
13Use earlier factsL92–92

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

  1. L92
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left_right
14Establish hdL93–102

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

  1. L93
    have hd : d=x4
  2. L94
    specialize beta_at_unique (E)
  3. L95
    specialize beta_at_unique (F)
  4. L96
    specialize beta_at_unique (x1)
  5. L97
    specialize beta_at_unique (d)
  6. L98
    specialize beta_at_unique (x4)
  7. L99
    apply beta_at_unique
  8. L100
    rewrite hij_right at hh_left
  9. L101
    rewrite hij_right at hh_left
  10. L102
    exact hh_left
15Use earlier factsL103–103

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

  1. L103
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left_left
16Establish heL104–113

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

  1. L104
    have he : e=x5
  2. L105
    specialize beta_at_unique (G)
  3. L106
    specialize beta_at_unique (H)
  4. L107
    specialize beta_at_unique (x1)
  5. L108
    specialize beta_at_unique (e)
  6. L109
    specialize beta_at_unique (x5)
  7. L110
    apply beta_at_unique
  8. L111
    rewrite hij_right at hh_right
  9. L112
    rewrite hij_right at hh_right
  10. L113
    exact hh_right
17Use earlier factsL114–114

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

  1. L114
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left_right
18Construct an explicit witnessL115–116

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

  1. L115
    exists x6
  2. L116
    exists x7
19Separate the logical casesL117–117

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

  1. L117
    split
20Use earlier factsL118–118

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

  1. L118
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
21Separate the logical casesL119–119

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

  1. L119
    split
22Calculate and transport equalitiesL120–125

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

  1. L120
    rewrite hb
  2. L121
    rewrite hc
  3. L122
    rewrite hc
  4. L123
    rewrite hd
  5. L124
    rewrite he
  6. L125
    rewrite he
23Use earlier factsL126–127

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

  1. L126
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  2. L127
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right

Library-wide reading audit

Original exact command ledger · 127 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 i
  19. 0019intro j
  20. 0020intro b
  21. 0021intro c
  22. 0022intro d
  23. 0023intro e
  24. 0024intro hr
  25. 0025intro hi
  26. 0026intro hj
  27. 0027intro hl
  28. 0028intro hh
  29. 0029have hp : exists jt_gap_pairbound. jt_gap_pairbound+S (v*i+j)=(u*v)
  30. 0030specialize jordan_rectangle_flat_bound (u)
  31. 0031specialize jordan_rectangle_flat_bound (v)
  32. 0032specialize jordan_rectangle_flat_bound (i)
  33. 0033specialize jordan_rectangle_flat_bound (j)
  34. 0034apply jordan_rectangle_flat_bound
  35. 0035exact hi
  36. 0036exact hj
  37. 0037have hv : exists ri rj rb rc rd re rf rg. ((exists jt_gap_pairvaluerow. jt_gap_pairvaluerow+S (ri)=(u)) /\ (((exists jt_gap_pairvaluecolumn. jt_gap_pairvaluecolumn+S (rj)=(v)) /\ (((v*i+j=(v)*(ri)+(rj)) /\ (((((((exists fs_h_jt_pairvalueleftcode. fs_h_jt_pairvalueleftcode + S (rb) = S ((S (ri)) * B)) /\ exists fs_q_jt_pairvalueleftcode. A = fs_q_jt_pairvalueleftcode * S ((S (ri)) * B) + (rb))) /\ (((exists fs_h_jt_pairvalueleftscale. fs_h_jt_pairvalueleftscale + S (rc) = S ((S (ri)) * D)) /\ exists fs_q_jt_pairvalueleftscale. C = fs_q_jt_pairvalueleftscale * S ((S (ri)) * D) + (rc))))) /\ (((((((exists fs_h_jt_pairvaluerightcode. fs_h_jt_pairvaluerightcode + S (rd) = S ((S (rj)) * F)) /\ exists fs_q_jt_pairvaluerightcode. E = fs_q_jt_pairvaluerightcode * S ((S (rj)) * F) + (rd))) /\ (((exists fs_h_jt_pairvaluerightscale. fs_h_jt_pairvaluerightscale + S (re) = S ((S (rj)) * H)) /\ exists fs_q_jt_pairvaluerightscale. G = fs_q_jt_pairvaluerightscale * S ((S (rj)) * H) + (re))))) /\ (((((((exists fs_h_jt_pairvalueoutputcode. fs_h_jt_pairvalueoutputcode + S (rf) = S ((S (v*i+j)) * Q)) /\ exists fs_q_jt_pairvalueoutputcode. P = fs_q_jt_pairvalueoutputcode * S ((S (v*i+j)) * Q) + (rf))) /\ (((exists fs_h_jt_pairvalueoutputscale. fs_h_jt_pairvalueoutputscale + S (rg) = S ((S (v*i+j)) * T)) /\ exists fs_q_jt_pairvalueoutputscale. R = fs_q_jt_pairvalueoutputscale * S ((S (v*i+j)) * T) + (rg))))) /\ (((((forall jt_index_pairvaluecrtbound. (exists jt_gap_pairvaluecrtboundindex. jt_gap_pairvaluecrtboundindex+S (jt_index_pairvaluecrtbound)=(k)) -> exists jt_value_pairvaluecrtbound. ((((exists fs_h_jt_pairvaluecrtboundat. fs_h_jt_pairvaluecrtboundat + S (jt_value_pairvaluecrtbound) = S ((S (jt_index_pairvaluecrtbound)) * rg)) /\ exists fs_q_jt_pairvaluecrtboundat. rf = fs_q_jt_pairvaluecrtboundat * S ((S (jt_index_pairvaluecrtbound)) * rg) + (jt_value_pairvaluecrtbound))) /\ (exists jt_gap_pairvaluecrtboundvalue. jt_gap_pairvaluecrtboundvalue+S (jt_value_pairvaluecrtbound)=(m*n)))) /\ (((forall jt_index_pairvaluecrtleft jt_left_pairvaluecrtleft jt_right_pairvaluecrtleft. (exists jt_gap_pairvaluecrtleftindex. jt_gap_pairvaluecrtleftindex+S (jt_index_pairvaluecrtleft)=(k)) -> (((exists fs_h_jt_pairvaluecrtleftleft. fs_h_jt_pairvaluecrtleftleft + S (jt_left_pairvaluecrtleft) = S ((S (jt_index_pairvaluecrtleft)) * rg)) /\ exists fs_q_jt_pairvaluecrtleftleft. rf = fs_q_jt_pairvaluecrtleftleft * S ((S (jt_index_pairvaluecrtleft)) * rg) + (jt_left_pairvaluecrtleft))) -> (((exists fs_h_jt_pairvaluecrtleftright. fs_h_jt_pairvaluecrtleftright + S (jt_right_pairvaluecrtleft) = S ((S (jt_index_pairvaluecrtleft)) * rc)) /\ exists fs_q_jt_pairvaluecrtleftright. rb = fs_q_jt_pairvaluecrtleftright * S ((S (jt_index_pairvaluecrtleft)) * rc) + (jt_right_pairvaluecrtleft))) -> (exists jt_left_pairvaluecrtleftmod jt_right_pairvaluecrtleftmod. (jt_left_pairvaluecrtleft)+(m)*jt_left_pairvaluecrtleftmod=(jt_right_pairvaluecrtleft)+(m)*jt_right_pairvaluecrtleftmod)) /\ (forall jt_index_pairvaluecrtright jt_left_pairvaluecrtright jt_right_pairvaluecrtright. (exists jt_gap_pairvaluecrtrightindex. jt_gap_pairvaluecrtrightindex+S (jt_index_pairvaluecrtright)=(k)) -> (((exists fs_h_jt_pairvaluecrtrightleft. fs_h_jt_pairvaluecrtrightleft + S (jt_left_pairvaluecrtright) = S ((S (jt_index_pairvaluecrtright)) * rg)) /\ exists fs_q_jt_pairvaluecrtrightleft. rf = fs_q_jt_pairvaluecrtrightleft * S ((S (jt_index_pairvaluecrtright)) * rg) + (jt_left_pairvaluecrtright))) -> (((exists fs_h_jt_pairvaluecrtrightright. fs_h_jt_pairvaluecrtrightright + S (jt_right_pairvaluecrtright) = S ((S (jt_index_pairvaluecrtright)) * re)) /\ exists fs_q_jt_pairvaluecrtrightright. rd = fs_q_jt_pairvaluecrtrightright * S ((S (jt_index_pairvaluecrtright)) * re) + (jt_right_pairvaluecrtright))) -> (exists jt_left_pairvaluecrtrightmod jt_right_pairvaluecrtrightmod. (jt_left_pairvaluecrtright)+(n)*jt_left_pairvaluecrtrightmod=(jt_right_pairvaluecrtright)+(n)*jt_right_pairvaluecrtrightmod)))))) /\ (forall jt_divisor_pairvalueprimitive. (exists jt_factor_pairvalueprimitivemodulus. (m*n)=(jt_divisor_pairvalueprimitive)*jt_factor_pairvalueprimitivemodulus) -> (forall jt_index_pairvalueprimitivecoordinates jt_value_pairvalueprimitivecoordinates. (exists jt_gap_pairvalueprimitivecoordinatesindex. jt_gap_pairvalueprimitivecoordinatesindex+S (jt_index_pairvalueprimitivecoordinates)=(k)) -> (((exists fs_h_jt_pairvalueprimitivecoordinatesat. fs_h_jt_pairvalueprimitivecoordinatesat + S (jt_value_pairvalueprimitivecoordinates) = S ((S (jt_index_pairvalueprimitivecoordinates)) * rg)) /\ exists fs_q_jt_pairvalueprimitivecoordinatesat. rf = fs_q_jt_pairvalueprimitivecoordinatesat * S ((S (jt_index_pairvalueprimitivecoordinates)) * rg) + (jt_value_pairvalueprimitivecoordinates))) -> (exists jt_factor_pairvalueprimitivecoordinatesdivides. (jt_value_pairvalueprimitivecoordinates)=(jt_divisor_pairvalueprimitive)*jt_factor_pairvalueprimitivecoordinatesdivides)) -> jt_divisor_pairvalueprimitive=1))))))))))))))
  38. 0038specialize hr (v*i+j)
  39. 0039apply hr
  40. 0040exact hp
  41. 0041cases hv
  42. 0042cases hv_witness
  43. 0043cases hv_witness_witness
  44. 0044cases hv_witness_witness_witness
  45. 0045cases hv_witness_witness_witness_witness
  46. 0046cases hv_witness_witness_witness_witness_witness
  47. 0047cases hv_witness_witness_witness_witness_witness_witness
  48. 0048cases hv_witness_witness_witness_witness_witness_witness_witness
  49. 0049cases hv_witness_witness_witness_witness_witness_witness_witness_witness
  50. 0050cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right
  51. 0051cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  52. 0052cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  53. 0053cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  54. 0054cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  55. 0055cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  56. 0056have hij : i=x /\ j=x1
  57. 0057specialize jordan_rectangle_pair_unique (v)
  58. 0058specialize jordan_rectangle_pair_unique (i)
  59. 0059specialize jordan_rectangle_pair_unique (j)
  60. 0060specialize jordan_rectangle_pair_unique (x)
  61. 0061specialize jordan_rectangle_pair_unique (x1)
  62. 0062apply jordan_rectangle_pair_unique
  63. 0063exact hj
  64. 0064exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  65. 0065exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_left
  66. 0066cases hij
  67. 0067cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
  68. 0068cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  69. 0069cases hl
  70. 0070cases hh
  71. 0071have hb : b=x2
  72. 0072specialize beta_at_unique (A)
  73. 0073specialize beta_at_unique (B)
  74. 0074specialize beta_at_unique (x)
  75. 0075specialize beta_at_unique (b)
  76. 0076specialize beta_at_unique (x2)
  77. 0077apply beta_at_unique
  78. 0078rewrite hij_left at hl_left
  79. 0079rewrite hij_left at hl_left
  80. 0080exact hl_left
  81. 0081exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left_left
  82. 0082have hc : c=x3
  83. 0083specialize beta_at_unique (C)
  84. 0084specialize beta_at_unique (D)
  85. 0085specialize beta_at_unique (x)
  86. 0086specialize beta_at_unique (c)
  87. 0087specialize beta_at_unique (x3)
  88. 0088apply beta_at_unique
  89. 0089rewrite hij_left at hl_right
  90. 0090rewrite hij_left at hl_right
  91. 0091exact hl_right
  92. 0092exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left_right
  93. 0093have hd : d=x4
  94. 0094specialize beta_at_unique (E)
  95. 0095specialize beta_at_unique (F)
  96. 0096specialize beta_at_unique (x1)
  97. 0097specialize beta_at_unique (d)
  98. 0098specialize beta_at_unique (x4)
  99. 0099apply beta_at_unique
  100. 0100rewrite hij_right at hh_left
  101. 0101rewrite hij_right at hh_left
  102. 0102exact hh_left
  103. 0103exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left_left
  104. 0104have he : e=x5
  105. 0105specialize beta_at_unique (G)
  106. 0106specialize beta_at_unique (H)
  107. 0107specialize beta_at_unique (x1)
  108. 0108specialize beta_at_unique (e)
  109. 0109specialize beta_at_unique (x5)
  110. 0110apply beta_at_unique
  111. 0111rewrite hij_right at hh_right
  112. 0112rewrite hij_right at hh_right
  113. 0113exact hh_right
  114. 0114exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left_right
  115. 0115exists x6
  116. 0116exists x7
  117. 0117split
  118. 0118exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
  119. 0119split
  120. 0120rewrite hb
  121. 0121rewrite hc
  122. 0122rewrite hc
  123. 0123rewrite hd
  124. 0124rewrite he
  125. 0125rewrite he
  126. 0126exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  127. 0127exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right