JT0047

jordan_rectangle_crt_covers

Every primitive product-modulus tuple reduces to a genuine source pair and is formally equal to its table output.

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. ∀ b. ∀ c. ¬m = 0 → ¬n = 0 → Coprime(m,n) → JordanTupleEnumeration(k,m,A,B,C,D,u) → JordanTupleEnumeration(k,n,E,F,G,H,v) → JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,P,Q,R,T,u · v) → BetaPrefixInto(b,c,k,m · n) → JordanPrimitiveTuple(m · n,b,c,k) → JordanTupleListed(b,c,k,P,Q,R,T,u · v)

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 b c. ~(m=0) -> ~(n=0) -> (forall jt_divisor_rectenumcop. (exists jt_factor_rectenumcopa. (m)=(jt_divisor_rectenumcop)*jt_factor_rectenumcopa) -> (exists jt_factor_rectenumcopb. (n)=(jt_divisor_rectenumcop)*jt_factor_rectenumcopb) -> jt_divisor_rectenumcop=1) -> (((forall jt_i_enumleft. (exists jt_gap_enumleftsoundindex. jt_gap_enumleftsoundindex+S (jt_i_enumleft)=(u)) -> exists jt_b_enumleft jt_c_enumleft. ((((((exists fs_h_jt_enumleftsoundcode. fs_h_jt_enumleftsoundcode + S (jt_b_enumleft) = S ((S (jt_i_enumleft)) * B)) /\ exists fs_q_jt_enumleftsoundcode. A = fs_q_jt_enumleftsoundcode * S ((S (jt_i_enumleft)) * B) + (jt_b_enumleft))) /\ (((exists fs_h_jt_enumleftsoundscale. fs_h_jt_enumleftsoundscale + S (jt_c_enumleft) = S ((S (jt_i_enumleft)) * D)) /\ exists fs_q_jt_enumleftsoundscale. C = fs_q_jt_enumleftsoundscale * S ((S (jt_i_enumleft)) * D) + (jt_c_enumleft))))) /\ (((forall jt_index_enumleftbound. (exists jt_gap_enumleftboundindex. jt_gap_enumleftboundindex+S (jt_index_enumleftbound)=(k)) -> exists jt_value_enumleftbound. ((((exists fs_h_jt_enumleftboundat. fs_h_jt_enumleftboundat + S (jt_value_enumleftbound) = S ((S (jt_index_enumleftbound)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftboundat. jt_b_enumleft = fs_q_jt_enumleftboundat * S ((S (jt_index_enumleftbound)) * jt_c_enumleft) + (jt_value_enumleftbound))) /\ (exists jt_gap_enumleftboundvalue. jt_gap_enumleftboundvalue+S (jt_value_enumleftbound)=(m)))) /\ (forall jt_divisor_enumleftprimitive. (exists jt_factor_enumleftprimitivemodulus. (m)=(jt_divisor_enumleftprimitive)*jt_factor_enumleftprimitivemodulus) -> (forall jt_index_enumleftprimitivecoordinates jt_value_enumleftprimitivecoordinates. (exists jt_gap_enumleftprimitivecoordinatesindex. jt_gap_enumleftprimitivecoordinatesindex+S (jt_index_enumleftprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumleftprimitivecoordinatesat. fs_h_jt_enumleftprimitivecoordinatesat + S (jt_value_enumleftprimitivecoordinates) = S ((S (jt_index_enumleftprimitivecoordinates)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftprimitivecoordinatesat. jt_b_enumleft = fs_q_jt_enumleftprimitivecoordinatesat * S ((S (jt_index_enumleftprimitivecoordinates)) * jt_c_enumleft) + (jt_value_enumleftprimitivecoordinates))) -> (exists jt_factor_enumleftprimitivecoordinatesdivides. (jt_value_enumleftprimitivecoordinates)=(jt_divisor_enumleftprimitive)*jt_factor_enumleftprimitivecoordinatesdivides)) -> jt_divisor_enumleftprimitive=1))))) /\ (((forall jt_b_enumleft jt_c_enumleft. (forall jt_index_enumleftinputbound. (exists jt_gap_enumleftinputboundindex. jt_gap_enumleftinputboundindex+S (jt_index_enumleftinputbound)=(k)) -> exists jt_value_enumleftinputbound. ((((exists fs_h_jt_enumleftinputboundat. fs_h_jt_enumleftinputboundat + S (jt_value_enumleftinputbound) = S ((S (jt_index_enumleftinputbound)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftinputboundat. jt_b_enumleft = fs_q_jt_enumleftinputboundat * S ((S (jt_index_enumleftinputbound)) * jt_c_enumleft) + (jt_value_enumleftinputbound))) /\ (exists jt_gap_enumleftinputboundvalue. jt_gap_enumleftinputboundvalue+S (jt_value_enumleftinputbound)=(m)))) -> (forall jt_divisor_enumleftinputprimitive. (exists jt_factor_enumleftinputprimitivemodulus. (m)=(jt_divisor_enumleftinputprimitive)*jt_factor_enumleftinputprimitivemodulus) -> (forall jt_index_enumleftinputprimitivecoordinates jt_value_enumleftinputprimitivecoordinates. (exists jt_gap_enumleftinputprimitivecoordinatesindex. jt_gap_enumleftinputprimitivecoordinatesindex+S (jt_index_enumleftinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumleftinputprimitivecoordinatesat. fs_h_jt_enumleftinputprimitivecoordinatesat + S (jt_value_enumleftinputprimitivecoordinates) = S ((S (jt_index_enumleftinputprimitivecoordinates)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftinputprimitivecoordinatesat. jt_b_enumleft = fs_q_jt_enumleftinputprimitivecoordinatesat * S ((S (jt_index_enumleftinputprimitivecoordinates)) * jt_c_enumleft) + (jt_value_enumleftinputprimitivecoordinates))) -> (exists jt_factor_enumleftinputprimitivecoordinatesdivides. (jt_value_enumleftinputprimitivecoordinates)=(jt_divisor_enumleftinputprimitive)*jt_factor_enumleftinputprimitivecoordinatesdivides)) -> jt_divisor_enumleftinputprimitive=1) -> exists jt_i_enumleft jt_d_enumleft jt_e_enumleft. ((exists jt_gap_enumleftcompleteindex. jt_gap_enumleftcompleteindex+S (jt_i_enumleft)=(u)) /\ (((((((exists fs_h_jt_enumleftcompletecode. fs_h_jt_enumleftcompletecode + S (jt_d_enumleft) = S ((S (jt_i_enumleft)) * B)) /\ exists fs_q_jt_enumleftcompletecode. A = fs_q_jt_enumleftcompletecode * S ((S (jt_i_enumleft)) * B) + (jt_d_enumleft))) /\ (((exists fs_h_jt_enumleftcompletescale. fs_h_jt_enumleftcompletescale + S (jt_e_enumleft) = S ((S (jt_i_enumleft)) * D)) /\ exists fs_q_jt_enumleftcompletescale. C = fs_q_jt_enumleftcompletescale * S ((S (jt_i_enumleft)) * D) + (jt_e_enumleft))))) /\ (forall jt_index_enumleftrepresented jt_left_enumleftrepresented jt_right_enumleftrepresented. (exists jt_gap_enumleftrepresentedindex. jt_gap_enumleftrepresentedindex+S (jt_index_enumleftrepresented)=(k)) -> (((exists fs_h_jt_enumleftrepresentedleft. fs_h_jt_enumleftrepresentedleft + S (jt_left_enumleftrepresented) = S ((S (jt_index_enumleftrepresented)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftrepresentedleft. jt_b_enumleft = fs_q_jt_enumleftrepresentedleft * S ((S (jt_index_enumleftrepresented)) * jt_c_enumleft) + (jt_left_enumleftrepresented))) -> (((exists fs_h_jt_enumleftrepresentedright. fs_h_jt_enumleftrepresentedright + S (jt_right_enumleftrepresented) = S ((S (jt_index_enumleftrepresented)) * jt_e_enumleft)) /\ exists fs_q_jt_enumleftrepresentedright. jt_d_enumleft = fs_q_jt_enumleftrepresentedright * S ((S (jt_index_enumleftrepresented)) * jt_e_enumleft) + (jt_right_enumleftrepresented))) -> jt_left_enumleftrepresented=jt_right_enumleftrepresented))))) /\ (forall jt_i_enumleft jt_h_enumleft jt_b_enumleft jt_c_enumleft jt_d_enumleft jt_e_enumleft. (exists jt_gap_enumleftfirstindex. jt_gap_enumleftfirstindex+S (jt_i_enumleft)=(u)) -> (exists jt_gap_enumleftsecondindex. jt_gap_enumleftsecondindex+S (jt_h_enumleft)=(u)) -> (((((exists fs_h_jt_enumleftfirstcode. fs_h_jt_enumleftfirstcode + S (jt_b_enumleft) = S ((S (jt_i_enumleft)) * B)) /\ exists fs_q_jt_enumleftfirstcode. A = fs_q_jt_enumleftfirstcode * S ((S (jt_i_enumleft)) * B) + (jt_b_enumleft))) /\ (((exists fs_h_jt_enumleftfirstscale. fs_h_jt_enumleftfirstscale + S (jt_c_enumleft) = S ((S (jt_i_enumleft)) * D)) /\ exists fs_q_jt_enumleftfirstscale. C = fs_q_jt_enumleftfirstscale * S ((S (jt_i_enumleft)) * D) + (jt_c_enumleft))))) -> (((((exists fs_h_jt_enumleftsecondcode. fs_h_jt_enumleftsecondcode + S (jt_d_enumleft) = S ((S (jt_h_enumleft)) * B)) /\ exists fs_q_jt_enumleftsecondcode. A = fs_q_jt_enumleftsecondcode * S ((S (jt_h_enumleft)) * B) + (jt_d_enumleft))) /\ (((exists fs_h_jt_enumleftsecondscale. fs_h_jt_enumleftsecondscale + S (jt_e_enumleft) = S ((S (jt_h_enumleft)) * D)) /\ exists fs_q_jt_enumleftsecondscale. C = fs_q_jt_enumleftsecondscale * S ((S (jt_h_enumleft)) * D) + (jt_e_enumleft))))) -> (forall jt_index_enumleftsame jt_left_enumleftsame jt_right_enumleftsame. (exists jt_gap_enumleftsameindex. jt_gap_enumleftsameindex+S (jt_index_enumleftsame)=(k)) -> (((exists fs_h_jt_enumleftsameleft. fs_h_jt_enumleftsameleft + S (jt_left_enumleftsame) = S ((S (jt_index_enumleftsame)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftsameleft. jt_b_enumleft = fs_q_jt_enumleftsameleft * S ((S (jt_index_enumleftsame)) * jt_c_enumleft) + (jt_left_enumleftsame))) -> (((exists fs_h_jt_enumleftsameright. fs_h_jt_enumleftsameright + S (jt_right_enumleftsame) = S ((S (jt_index_enumleftsame)) * jt_e_enumleft)) /\ exists fs_q_jt_enumleftsameright. jt_d_enumleft = fs_q_jt_enumleftsameright * S ((S (jt_index_enumleftsame)) * jt_e_enumleft) + (jt_right_enumleftsame))) -> jt_left_enumleftsame=jt_right_enumleftsame) -> jt_i_enumleft=jt_h_enumleft))))) -> (((forall jt_i_enumright. (exists jt_gap_enumrightsoundindex. jt_gap_enumrightsoundindex+S (jt_i_enumright)=(v)) -> exists jt_b_enumright jt_c_enumright. ((((((exists fs_h_jt_enumrightsoundcode. fs_h_jt_enumrightsoundcode + S (jt_b_enumright) = S ((S (jt_i_enumright)) * F)) /\ exists fs_q_jt_enumrightsoundcode. E = fs_q_jt_enumrightsoundcode * S ((S (jt_i_enumright)) * F) + (jt_b_enumright))) /\ (((exists fs_h_jt_enumrightsoundscale. fs_h_jt_enumrightsoundscale + S (jt_c_enumright) = S ((S (jt_i_enumright)) * H)) /\ exists fs_q_jt_enumrightsoundscale. G = fs_q_jt_enumrightsoundscale * S ((S (jt_i_enumright)) * H) + (jt_c_enumright))))) /\ (((forall jt_index_enumrightbound. (exists jt_gap_enumrightboundindex. jt_gap_enumrightboundindex+S (jt_index_enumrightbound)=(k)) -> exists jt_value_enumrightbound. ((((exists fs_h_jt_enumrightboundat. fs_h_jt_enumrightboundat + S (jt_value_enumrightbound) = S ((S (jt_index_enumrightbound)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightboundat. jt_b_enumright = fs_q_jt_enumrightboundat * S ((S (jt_index_enumrightbound)) * jt_c_enumright) + (jt_value_enumrightbound))) /\ (exists jt_gap_enumrightboundvalue. jt_gap_enumrightboundvalue+S (jt_value_enumrightbound)=(n)))) /\ (forall jt_divisor_enumrightprimitive. (exists jt_factor_enumrightprimitivemodulus. (n)=(jt_divisor_enumrightprimitive)*jt_factor_enumrightprimitivemodulus) -> (forall jt_index_enumrightprimitivecoordinates jt_value_enumrightprimitivecoordinates. (exists jt_gap_enumrightprimitivecoordinatesindex. jt_gap_enumrightprimitivecoordinatesindex+S (jt_index_enumrightprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumrightprimitivecoordinatesat. fs_h_jt_enumrightprimitivecoordinatesat + S (jt_value_enumrightprimitivecoordinates) = S ((S (jt_index_enumrightprimitivecoordinates)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightprimitivecoordinatesat. jt_b_enumright = fs_q_jt_enumrightprimitivecoordinatesat * S ((S (jt_index_enumrightprimitivecoordinates)) * jt_c_enumright) + (jt_value_enumrightprimitivecoordinates))) -> (exists jt_factor_enumrightprimitivecoordinatesdivides. (jt_value_enumrightprimitivecoordinates)=(jt_divisor_enumrightprimitive)*jt_factor_enumrightprimitivecoordinatesdivides)) -> jt_divisor_enumrightprimitive=1))))) /\ (((forall jt_b_enumright jt_c_enumright. (forall jt_index_enumrightinputbound. (exists jt_gap_enumrightinputboundindex. jt_gap_enumrightinputboundindex+S (jt_index_enumrightinputbound)=(k)) -> exists jt_value_enumrightinputbound. ((((exists fs_h_jt_enumrightinputboundat. fs_h_jt_enumrightinputboundat + S (jt_value_enumrightinputbound) = S ((S (jt_index_enumrightinputbound)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightinputboundat. jt_b_enumright = fs_q_jt_enumrightinputboundat * S ((S (jt_index_enumrightinputbound)) * jt_c_enumright) + (jt_value_enumrightinputbound))) /\ (exists jt_gap_enumrightinputboundvalue. jt_gap_enumrightinputboundvalue+S (jt_value_enumrightinputbound)=(n)))) -> (forall jt_divisor_enumrightinputprimitive. (exists jt_factor_enumrightinputprimitivemodulus. (n)=(jt_divisor_enumrightinputprimitive)*jt_factor_enumrightinputprimitivemodulus) -> (forall jt_index_enumrightinputprimitivecoordinates jt_value_enumrightinputprimitivecoordinates. (exists jt_gap_enumrightinputprimitivecoordinatesindex. jt_gap_enumrightinputprimitivecoordinatesindex+S (jt_index_enumrightinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumrightinputprimitivecoordinatesat. fs_h_jt_enumrightinputprimitivecoordinatesat + S (jt_value_enumrightinputprimitivecoordinates) = S ((S (jt_index_enumrightinputprimitivecoordinates)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightinputprimitivecoordinatesat. jt_b_enumright = fs_q_jt_enumrightinputprimitivecoordinatesat * S ((S (jt_index_enumrightinputprimitivecoordinates)) * jt_c_enumright) + (jt_value_enumrightinputprimitivecoordinates))) -> (exists jt_factor_enumrightinputprimitivecoordinatesdivides. (jt_value_enumrightinputprimitivecoordinates)=(jt_divisor_enumrightinputprimitive)*jt_factor_enumrightinputprimitivecoordinatesdivides)) -> jt_divisor_enumrightinputprimitive=1) -> exists jt_i_enumright jt_d_enumright jt_e_enumright. ((exists jt_gap_enumrightcompleteindex. jt_gap_enumrightcompleteindex+S (jt_i_enumright)=(v)) /\ (((((((exists fs_h_jt_enumrightcompletecode. fs_h_jt_enumrightcompletecode + S (jt_d_enumright) = S ((S (jt_i_enumright)) * F)) /\ exists fs_q_jt_enumrightcompletecode. E = fs_q_jt_enumrightcompletecode * S ((S (jt_i_enumright)) * F) + (jt_d_enumright))) /\ (((exists fs_h_jt_enumrightcompletescale. fs_h_jt_enumrightcompletescale + S (jt_e_enumright) = S ((S (jt_i_enumright)) * H)) /\ exists fs_q_jt_enumrightcompletescale. G = fs_q_jt_enumrightcompletescale * S ((S (jt_i_enumright)) * H) + (jt_e_enumright))))) /\ (forall jt_index_enumrightrepresented jt_left_enumrightrepresented jt_right_enumrightrepresented. (exists jt_gap_enumrightrepresentedindex. jt_gap_enumrightrepresentedindex+S (jt_index_enumrightrepresented)=(k)) -> (((exists fs_h_jt_enumrightrepresentedleft. fs_h_jt_enumrightrepresentedleft + S (jt_left_enumrightrepresented) = S ((S (jt_index_enumrightrepresented)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightrepresentedleft. jt_b_enumright = fs_q_jt_enumrightrepresentedleft * S ((S (jt_index_enumrightrepresented)) * jt_c_enumright) + (jt_left_enumrightrepresented))) -> (((exists fs_h_jt_enumrightrepresentedright. fs_h_jt_enumrightrepresentedright + S (jt_right_enumrightrepresented) = S ((S (jt_index_enumrightrepresented)) * jt_e_enumright)) /\ exists fs_q_jt_enumrightrepresentedright. jt_d_enumright = fs_q_jt_enumrightrepresentedright * S ((S (jt_index_enumrightrepresented)) * jt_e_enumright) + (jt_right_enumrightrepresented))) -> jt_left_enumrightrepresented=jt_right_enumrightrepresented))))) /\ (forall jt_i_enumright jt_h_enumright jt_b_enumright jt_c_enumright jt_d_enumright jt_e_enumright. (exists jt_gap_enumrightfirstindex. jt_gap_enumrightfirstindex+S (jt_i_enumright)=(v)) -> (exists jt_gap_enumrightsecondindex. jt_gap_enumrightsecondindex+S (jt_h_enumright)=(v)) -> (((((exists fs_h_jt_enumrightfirstcode. fs_h_jt_enumrightfirstcode + S (jt_b_enumright) = S ((S (jt_i_enumright)) * F)) /\ exists fs_q_jt_enumrightfirstcode. E = fs_q_jt_enumrightfirstcode * S ((S (jt_i_enumright)) * F) + (jt_b_enumright))) /\ (((exists fs_h_jt_enumrightfirstscale. fs_h_jt_enumrightfirstscale + S (jt_c_enumright) = S ((S (jt_i_enumright)) * H)) /\ exists fs_q_jt_enumrightfirstscale. G = fs_q_jt_enumrightfirstscale * S ((S (jt_i_enumright)) * H) + (jt_c_enumright))))) -> (((((exists fs_h_jt_enumrightsecondcode. fs_h_jt_enumrightsecondcode + S (jt_d_enumright) = S ((S (jt_h_enumright)) * F)) /\ exists fs_q_jt_enumrightsecondcode. E = fs_q_jt_enumrightsecondcode * S ((S (jt_h_enumright)) * F) + (jt_d_enumright))) /\ (((exists fs_h_jt_enumrightsecondscale. fs_h_jt_enumrightsecondscale + S (jt_e_enumright) = S ((S (jt_h_enumright)) * H)) /\ exists fs_q_jt_enumrightsecondscale. G = fs_q_jt_enumrightsecondscale * S ((S (jt_h_enumright)) * H) + (jt_e_enumright))))) -> (forall jt_index_enumrightsame jt_left_enumrightsame jt_right_enumrightsame. (exists jt_gap_enumrightsameindex. jt_gap_enumrightsameindex+S (jt_index_enumrightsame)=(k)) -> (((exists fs_h_jt_enumrightsameleft. fs_h_jt_enumrightsameleft + S (jt_left_enumrightsame) = S ((S (jt_index_enumrightsame)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightsameleft. jt_b_enumright = fs_q_jt_enumrightsameleft * S ((S (jt_index_enumrightsame)) * jt_c_enumright) + (jt_left_enumrightsame))) -> (((exists fs_h_jt_enumrightsameright. fs_h_jt_enumrightsameright + S (jt_right_enumrightsame) = S ((S (jt_index_enumrightsame)) * jt_e_enumright)) /\ exists fs_q_jt_enumrightsameright. jt_d_enumright = fs_q_jt_enumrightsameright * S ((S (jt_index_enumrightsame)) * jt_e_enumright) + (jt_right_enumrightsame))) -> jt_left_enumrightsame=jt_right_enumrightsame) -> jt_i_enumright=jt_h_enumright))))) -> (forall jt_index_enumrect. (exists jt_gap_enumrectindex. jt_gap_enumrectindex+S (jt_index_enumrect)=(u*v)) -> exists jt_row_enumrect jt_column_enumrect jt_b_enumrect jt_c_enumrect jt_d_enumrect jt_e_enumrect jt_f_enumrect jt_g_enumrect. ((exists jt_gap_enumrectrow. jt_gap_enumrectrow+S (jt_row_enumrect)=(u)) /\ (((exists jt_gap_enumrectcolumn. jt_gap_enumrectcolumn+S (jt_column_enumrect)=(v)) /\ (((jt_index_enumrect=(v)*jt_row_enumrect+jt_column_enumrect) /\ (((((((exists fs_h_jt_enumrectleftcode. fs_h_jt_enumrectleftcode + S (jt_b_enumrect) = S ((S (jt_row_enumrect)) * B)) /\ exists fs_q_jt_enumrectleftcode. A = fs_q_jt_enumrectleftcode * S ((S (jt_row_enumrect)) * B) + (jt_b_enumrect))) /\ (((exists fs_h_jt_enumrectleftscale. fs_h_jt_enumrectleftscale + S (jt_c_enumrect) = S ((S (jt_row_enumrect)) * D)) /\ exists fs_q_jt_enumrectleftscale. C = fs_q_jt_enumrectleftscale * S ((S (jt_row_enumrect)) * D) + (jt_c_enumrect))))) /\ (((((((exists fs_h_jt_enumrectrightcode. fs_h_jt_enumrectrightcode + S (jt_d_enumrect) = S ((S (jt_column_enumrect)) * F)) /\ exists fs_q_jt_enumrectrightcode. E = fs_q_jt_enumrectrightcode * S ((S (jt_column_enumrect)) * F) + (jt_d_enumrect))) /\ (((exists fs_h_jt_enumrectrightscale. fs_h_jt_enumrectrightscale + S (jt_e_enumrect) = S ((S (jt_column_enumrect)) * H)) /\ exists fs_q_jt_enumrectrightscale. G = fs_q_jt_enumrectrightscale * S ((S (jt_column_enumrect)) * H) + (jt_e_enumrect))))) /\ (((((((exists fs_h_jt_enumrectoutputcode. fs_h_jt_enumrectoutputcode + S (jt_f_enumrect) = S ((S (jt_index_enumrect)) * Q)) /\ exists fs_q_jt_enumrectoutputcode. P = fs_q_jt_enumrectoutputcode * S ((S (jt_index_enumrect)) * Q) + (jt_f_enumrect))) /\ (((exists fs_h_jt_enumrectoutputscale. fs_h_jt_enumrectoutputscale + S (jt_g_enumrect) = S ((S (jt_index_enumrect)) * T)) /\ exists fs_q_jt_enumrectoutputscale. R = fs_q_jt_enumrectoutputscale * S ((S (jt_index_enumrect)) * T) + (jt_g_enumrect))))) /\ (((((forall jt_index_enumrectcrtbound. (exists jt_gap_enumrectcrtboundindex. jt_gap_enumrectcrtboundindex+S (jt_index_enumrectcrtbound)=(k)) -> exists jt_value_enumrectcrtbound. ((((exists fs_h_jt_enumrectcrtboundat. fs_h_jt_enumrectcrtboundat + S (jt_value_enumrectcrtbound) = S ((S (jt_index_enumrectcrtbound)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectcrtboundat. jt_f_enumrect = fs_q_jt_enumrectcrtboundat * S ((S (jt_index_enumrectcrtbound)) * jt_g_enumrect) + (jt_value_enumrectcrtbound))) /\ (exists jt_gap_enumrectcrtboundvalue. jt_gap_enumrectcrtboundvalue+S (jt_value_enumrectcrtbound)=(m*n)))) /\ (((forall jt_index_enumrectcrtleft jt_left_enumrectcrtleft jt_right_enumrectcrtleft. (exists jt_gap_enumrectcrtleftindex. jt_gap_enumrectcrtleftindex+S (jt_index_enumrectcrtleft)=(k)) -> (((exists fs_h_jt_enumrectcrtleftleft. fs_h_jt_enumrectcrtleftleft + S (jt_left_enumrectcrtleft) = S ((S (jt_index_enumrectcrtleft)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectcrtleftleft. jt_f_enumrect = fs_q_jt_enumrectcrtleftleft * S ((S (jt_index_enumrectcrtleft)) * jt_g_enumrect) + (jt_left_enumrectcrtleft))) -> (((exists fs_h_jt_enumrectcrtleftright. fs_h_jt_enumrectcrtleftright + S (jt_right_enumrectcrtleft) = S ((S (jt_index_enumrectcrtleft)) * jt_c_enumrect)) /\ exists fs_q_jt_enumrectcrtleftright. jt_b_enumrect = fs_q_jt_enumrectcrtleftright * S ((S (jt_index_enumrectcrtleft)) * jt_c_enumrect) + (jt_right_enumrectcrtleft))) -> (exists jt_left_enumrectcrtleftmod jt_right_enumrectcrtleftmod. (jt_left_enumrectcrtleft)+(m)*jt_left_enumrectcrtleftmod=(jt_right_enumrectcrtleft)+(m)*jt_right_enumrectcrtleftmod)) /\ (forall jt_index_enumrectcrtright jt_left_enumrectcrtright jt_right_enumrectcrtright. (exists jt_gap_enumrectcrtrightindex. jt_gap_enumrectcrtrightindex+S (jt_index_enumrectcrtright)=(k)) -> (((exists fs_h_jt_enumrectcrtrightleft. fs_h_jt_enumrectcrtrightleft + S (jt_left_enumrectcrtright) = S ((S (jt_index_enumrectcrtright)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectcrtrightleft. jt_f_enumrect = fs_q_jt_enumrectcrtrightleft * S ((S (jt_index_enumrectcrtright)) * jt_g_enumrect) + (jt_left_enumrectcrtright))) -> (((exists fs_h_jt_enumrectcrtrightright. fs_h_jt_enumrectcrtrightright + S (jt_right_enumrectcrtright) = S ((S (jt_index_enumrectcrtright)) * jt_e_enumrect)) /\ exists fs_q_jt_enumrectcrtrightright. jt_d_enumrect = fs_q_jt_enumrectcrtrightright * S ((S (jt_index_enumrectcrtright)) * jt_e_enumrect) + (jt_right_enumrectcrtright))) -> (exists jt_left_enumrectcrtrightmod jt_right_enumrectcrtrightmod. (jt_left_enumrectcrtright)+(n)*jt_left_enumrectcrtrightmod=(jt_right_enumrectcrtright)+(n)*jt_right_enumrectcrtrightmod)))))) /\ (forall jt_divisor_enumrectprimitive. (exists jt_factor_enumrectprimitivemodulus. (m*n)=(jt_divisor_enumrectprimitive)*jt_factor_enumrectprimitivemodulus) -> (forall jt_index_enumrectprimitivecoordinates jt_value_enumrectprimitivecoordinates. (exists jt_gap_enumrectprimitivecoordinatesindex. jt_gap_enumrectprimitivecoordinatesindex+S (jt_index_enumrectprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumrectprimitivecoordinatesat. fs_h_jt_enumrectprimitivecoordinatesat + S (jt_value_enumrectprimitivecoordinates) = S ((S (jt_index_enumrectprimitivecoordinates)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectprimitivecoordinatesat. jt_f_enumrect = fs_q_jt_enumrectprimitivecoordinatesat * S ((S (jt_index_enumrectprimitivecoordinates)) * jt_g_enumrect) + (jt_value_enumrectprimitivecoordinates))) -> (exists jt_factor_enumrectprimitivecoordinatesdivides. (jt_value_enumrectprimitivecoordinates)=(jt_divisor_enumrectprimitive)*jt_factor_enumrectprimitivecoordinatesdivides)) -> jt_divisor_enumrectprimitive=1))))))))))))))) -> (forall jt_index_coverbound. (exists jt_gap_coverboundindex. jt_gap_coverboundindex+S (jt_index_coverbound)=(k)) -> exists jt_value_coverbound. ((((exists fs_h_jt_coverboundat. fs_h_jt_coverboundat + S (jt_value_coverbound) = S ((S (jt_index_coverbound)) * c)) /\ exists fs_q_jt_coverboundat. b = fs_q_jt_coverboundat * S ((S (jt_index_coverbound)) * c) + (jt_value_coverbound))) /\ (exists jt_gap_coverboundvalue. jt_gap_coverboundvalue+S (jt_value_coverbound)=(m*n)))) -> (forall jt_divisor_coverprim. (exists jt_factor_coverprimmodulus. (m*n)=(jt_divisor_coverprim)*jt_factor_coverprimmodulus) -> (forall jt_index_coverprimcoordinates jt_value_coverprimcoordinates. (exists jt_gap_coverprimcoordinatesindex. jt_gap_coverprimcoordinatesindex+S (jt_index_coverprimcoordinates)=(k)) -> (((exists fs_h_jt_coverprimcoordinatesat. fs_h_jt_coverprimcoordinatesat + S (jt_value_coverprimcoordinates) = S ((S (jt_index_coverprimcoordinates)) * c)) /\ exists fs_q_jt_coverprimcoordinatesat. b = fs_q_jt_coverprimcoordinatesat * S ((S (jt_index_coverprimcoordinates)) * c) + (jt_value_coverprimcoordinates))) -> (exists jt_factor_coverprimcoordinatesdivides. (jt_value_coverprimcoordinates)=(jt_divisor_coverprim)*jt_factor_coverprimcoordinatesdivides)) -> jt_divisor_coverprim=1) -> (exists jt_index_coverlisted jt_code_coverlisted jt_scale_coverlisted. ((exists jt_gap_coverlistedindex. jt_gap_coverlistedindex+S (jt_index_coverlisted)=(u*v)) /\ (((((((exists fs_h_jt_coverlistedcode. fs_h_jt_coverlistedcode + S (jt_code_coverlisted) = S ((S (jt_index_coverlisted)) * Q)) /\ exists fs_q_jt_coverlistedcode. P = fs_q_jt_coverlistedcode * S ((S (jt_index_coverlisted)) * Q) + (jt_code_coverlisted))) /\ (((exists fs_h_jt_coverlistedscale. fs_h_jt_coverlistedscale + S (jt_scale_coverlisted) = S ((S (jt_index_coverlisted)) * T)) /\ exists fs_q_jt_coverlistedscale. R = fs_q_jt_coverlistedscale * S ((S (jt_index_coverlisted)) * T) + (jt_scale_coverlisted))))) /\ (forall jt_index_coverlistedequal jt_left_coverlistedequal jt_right_coverlistedequal. (exists jt_gap_coverlistedequalindex. jt_gap_coverlistedequalindex+S (jt_index_coverlistedequal)=(k)) -> (((exists fs_h_jt_coverlistedequalleft. fs_h_jt_coverlistedequalleft + S (jt_left_coverlistedequal) = S ((S (jt_index_coverlistedequal)) * c)) /\ exists fs_q_jt_coverlistedequalleft. b = fs_q_jt_coverlistedequalleft * S ((S (jt_index_coverlistedequal)) * c) + (jt_left_coverlistedequal))) -> (((exists fs_h_jt_coverlistedequalright. fs_h_jt_coverlistedequalright + S (jt_right_coverlistedequal) = S ((S (jt_index_coverlistedequal)) * jt_scale_coverlisted)) /\ exists fs_q_jt_coverlistedequalright. jt_code_coverlisted = fs_q_jt_coverlistedequalright * S ((S (jt_index_coverlistedequal)) * jt_scale_coverlisted) + (jt_right_coverlistedequal))) -> jt_left_coverlistedequal=jt_right_coverlistedequal)))))

Complete tactic proof in conservative notation

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

140 script commands · 25 reading checkpoints · 4 local claims

This is a reading aid, not a new proof or a proof-tree certificate. Checkpoint groups are consecutive commands, not inferred branch boundaries. Every step links to the preserved script.

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

Named ingredients (5)
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 b
  9. L19
    intro c
  10. L20
    intro hm
03Fix variables and assumptionsL21–27

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

  1. L21
    intro hn
  2. L22
    intro hcop
  3. L23
    intro hl
  4. L24
    intro hh
  5. L25
    intro hr
  6. L26
    intro hbound
  7. L27
    intro hprim
04Establish hcomponentsL28–35

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

  1. L28
    have hcomponents : JordanPrimitiveTuple(m,b,c,k) ∧ JordanPrimitiveTuple(n,b,c,k)Definitions: JordanPrimitiveTuple(m,b,c,k)JordanPrimitiveTuple(n,b,c,k)Original native command in the exact edition
  2. L29
    specialize jordan_primitive_tuple_product_components (m)
  3. L30
    specialize jordan_primitive_tuple_product_components (n)
  4. L31
    specialize jordan_primitive_tuple_product_components (b)
  5. L32
    specialize jordan_primitive_tuple_product_components (c)
  6. L33
    specialize jordan_primitive_tuple_product_components (k)
  7. L34
    apply jordan_primitive_tuple_product_components
  8. L35
    exact hprim
05Separate the logical casesL36–36

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

  1. L36
    cases hcomponents
06Establish haL37–46

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

  1. L37
    have ha : ∃ i. ∃ d. ∃ e. Lt(i,u) ∧ (BetaAt(A,B,i,d) ∧ BetaAt(C,D,i,e) ∧ JordanTupleCongruence(m,b,c,d,e,k))Definitions: Lt(i,u)BetaAt(A,B,i,d)BetaAt(C,D,i,e)JordanTupleCongruence(m,b,c,d,e,k)Original native command in the exact edition
  2. L38
    specialize jordan_enumeration_reduce_primitive (m)
  3. L39
    specialize jordan_enumeration_reduce_primitive (k)
  4. L40
    specialize jordan_enumeration_reduce_primitive (A)
  5. L41
    specialize jordan_enumeration_reduce_primitive (B)
  6. L42
    specialize jordan_enumeration_reduce_primitive (C)
  7. L43
    specialize jordan_enumeration_reduce_primitive (D)
  8. L44
    specialize jordan_enumeration_reduce_primitive (u)
  9. L45
    specialize jordan_enumeration_reduce_primitive (b)
  10. L46
    specialize jordan_enumeration_reduce_primitive (c)
07Use earlier factsL47–50

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

  1. L47
    apply jordan_enumeration_reduce_primitive
  2. L48
    exact hm
  3. L49
    exact hl
  4. L50
    exact hcomponents_left
08Separate the logical casesL51–55

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

  1. L51
    cases ha
  2. L52
    cases ha_witness
  3. L53
    cases ha_witness_witness
  4. L54
    cases ha_witness_witness_witness
  5. L55
    cases ha_witness_witness_witness_right
09Establish hbL56–65

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

  1. L56
    have hb : ∃ i. ∃ d. ∃ e. Lt(i,v) ∧ (BetaAt(E,F,i,d) ∧ BetaAt(G,H,i,e) ∧ JordanTupleCongruence(n,b,c,d,e,k))Definitions: Lt(i,v)BetaAt(E,F,i,d)BetaAt(G,H,i,e)JordanTupleCongruence(n,b,c,d,e,k)Original native command in the exact edition
  2. L57
    specialize jordan_enumeration_reduce_primitive (n)
  3. L58
    specialize jordan_enumeration_reduce_primitive (k)
  4. L59
    specialize jordan_enumeration_reduce_primitive (E)
  5. L60
    specialize jordan_enumeration_reduce_primitive (F)
  6. L61
    specialize jordan_enumeration_reduce_primitive (G)
  7. L62
    specialize jordan_enumeration_reduce_primitive (H)
  8. L63
    specialize jordan_enumeration_reduce_primitive (v)
  9. L64
    specialize jordan_enumeration_reduce_primitive (b)
  10. L65
    specialize jordan_enumeration_reduce_primitive (c)
10Use earlier factsL66–69

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

  1. L66
    apply jordan_enumeration_reduce_primitive
  2. L67
    exact hn
  3. L68
    exact hh
  4. L69
    exact hcomponents_right
11Separate the logical casesL70–74

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

  1. L70
    cases hb
  2. L71
    cases hb_witness
  3. L72
    cases hb_witness_witness
  4. L73
    cases hb_witness_witness_witness
  5. L74
    cases hb_witness_witness_witness_right
12Establish houtL75–84

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

  1. L75
    have hout : ∃ f. ∃ g. MatrixAt(P,Q,x,v,x3,f) ∧ MatrixAt(R,T,x,v,x3,g) ∧ (JordanCanonicalTupleCRT(m,n,x1,x2,x4,x5,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k))Definitions: MatrixAt(P,Q,x,v,x3,f)MatrixAt(R,T,x,v,x3,g)JordanCanonicalTupleCRT(m,n,x1,x2,x4,x5,f,g,k)JordanPrimitiveTuple(m · n,f,g,k)Original native command in the exact edition
  2. L76
    specialize jordan_rectangle_crt_pair_value (m)
  3. L77
    specialize jordan_rectangle_crt_pair_value (n)
  4. L78
    specialize jordan_rectangle_crt_pair_value (k)
  5. L79
    specialize jordan_rectangle_crt_pair_value (A)
  6. L80
    specialize jordan_rectangle_crt_pair_value (B)
  7. L81
    specialize jordan_rectangle_crt_pair_value (C)
  8. L82
    specialize jordan_rectangle_crt_pair_value (D)
  9. L83
    specialize jordan_rectangle_crt_pair_value (u)
  10. L84
    specialize jordan_rectangle_crt_pair_value (E)
13Use earlier factsL85–94

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

  1. L85
    specialize jordan_rectangle_crt_pair_value (F)
  2. L86
    specialize jordan_rectangle_crt_pair_value (G)
  3. L87
    specialize jordan_rectangle_crt_pair_value (H)
  4. L88
    specialize jordan_rectangle_crt_pair_value (v)
  5. L89
    specialize jordan_rectangle_crt_pair_value (P)
  6. L90
    specialize jordan_rectangle_crt_pair_value (Q)
  7. L91
    specialize jordan_rectangle_crt_pair_value (R)
  8. L92
    specialize jordan_rectangle_crt_pair_value (T)
  9. L93
    specialize jordan_rectangle_crt_pair_value (x)
  10. L94
    specialize jordan_rectangle_crt_pair_value (x3)
14Use earlier factsL95–104

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

  1. L95
    specialize jordan_rectangle_crt_pair_value (x1)
  2. L96
    specialize jordan_rectangle_crt_pair_value (x2)
  3. L97
    specialize jordan_rectangle_crt_pair_value (x4)
  4. L98
    specialize jordan_rectangle_crt_pair_value (x5)
  5. L99
    apply jordan_rectangle_crt_pair_value
  6. L100
    exact hr
  7. L101
    exact ha_witness_witness_witness_left
  8. L102
    exact hb_witness_witness_witness_left
  9. L103
    exact ha_witness_witness_witness_right_left
  10. L104
    exact hb_witness_witness_witness_right_left
15Separate the logical casesL105–108

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

  1. L105
    cases hout
  2. L106
    cases hout_witness
  3. L107
    cases hout_witness_witness
  4. L108
    cases hout_witness_witness_right
16Construct an explicit witnessL109–111

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

  1. L109
    exists v*x+x3
  2. L110
    exists x6
  3. L111
    exists x7
17Separate the logical casesL112–112

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

  1. L112
    split
18Use earlier factsL113–119

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

  1. L113
    specialize jordan_rectangle_flat_bound (u)
  2. L114
    specialize jordan_rectangle_flat_bound (v)
  3. L115
    specialize jordan_rectangle_flat_bound (x)
  4. L116
    specialize jordan_rectangle_flat_bound (x3)
  5. L117
    apply jordan_rectangle_flat_bound
  6. L118
    exact ha_witness_witness_witness_left
  7. L119
    exact hb_witness_witness_witness_left
19Separate the logical casesL120–120

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

  1. L120
    split
20Use earlier factsL121–130

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

  1. L121
    exact hout_witness_witness_left
  2. L122
    specialize jordan_canonical_crt_tuple_unique (m)
  3. L123
    specialize jordan_canonical_crt_tuple_unique (n)
  4. L124
    specialize jordan_canonical_crt_tuple_unique (x1)
  5. L125
    specialize jordan_canonical_crt_tuple_unique (x2)
  6. L126
    specialize jordan_canonical_crt_tuple_unique (x4)
  7. L127
    specialize jordan_canonical_crt_tuple_unique (x5)
  8. L128
    specialize jordan_canonical_crt_tuple_unique (b)
  9. L129
    specialize jordan_canonical_crt_tuple_unique (c)
  10. L130
    specialize jordan_canonical_crt_tuple_unique (x6)
21Use earlier factsL131–134

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

  1. L131
    specialize jordan_canonical_crt_tuple_unique (x7)
  2. L132
    specialize jordan_canonical_crt_tuple_unique (k)
  3. L133
    apply jordan_canonical_crt_tuple_unique
  4. L134
    exact hcop
22Separate the logical casesL135–135

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

  1. L135
    split
23Use earlier factsL136–136

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

  1. L136
    exact hbound
24Separate the logical casesL137–137

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

  1. L137
    split
25Use earlier factsL138–140

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

  1. L138
    exact ha_witness_witness_witness_right_right
  2. L139
    exact hb_witness_witness_witness_right_right
  3. L140
    exact hout_witness_witness_right_left

Library-wide reading audit

Original defined command ledger · 140 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 b
  19. 0019intro c
  20. 0020intro hm
  21. 0021intro hn
  22. 0022intro hcop
  23. 0023intro hl
  24. 0024intro hh
  25. 0025intro hr
  26. 0026intro hbound
  27. 0027intro hprim
  28. 0028have hcomponents : JordanPrimitiveTuple(m,b,c,k) ∧ JordanPrimitiveTuple(n,b,c,k)
  29. 0029specialize jordan_primitive_tuple_product_components (m)
  30. 0030specialize jordan_primitive_tuple_product_components (n)
  31. 0031specialize jordan_primitive_tuple_product_components (b)
  32. 0032specialize jordan_primitive_tuple_product_components (c)
  33. 0033specialize jordan_primitive_tuple_product_components (k)
  34. 0034apply jordan_primitive_tuple_product_components
  35. 0035exact hprim
  36. 0036cases hcomponents
  37. 0037have ha : ∃ i. ∃ d. ∃ e. Lt(i,u) ∧ (BetaAt(A,B,i,d) ∧ BetaAt(C,D,i,e) ∧ JordanTupleCongruence(m,b,c,d,e,k))
  38. 0038specialize jordan_enumeration_reduce_primitive (m)
  39. 0039specialize jordan_enumeration_reduce_primitive (k)
  40. 0040specialize jordan_enumeration_reduce_primitive (A)
  41. 0041specialize jordan_enumeration_reduce_primitive (B)
  42. 0042specialize jordan_enumeration_reduce_primitive (C)
  43. 0043specialize jordan_enumeration_reduce_primitive (D)
  44. 0044specialize jordan_enumeration_reduce_primitive (u)
  45. 0045specialize jordan_enumeration_reduce_primitive (b)
  46. 0046specialize jordan_enumeration_reduce_primitive (c)
  47. 0047apply jordan_enumeration_reduce_primitive
  48. 0048exact hm
  49. 0049exact hl
  50. 0050exact hcomponents_left
  51. 0051cases ha
  52. 0052cases ha_witness
  53. 0053cases ha_witness_witness
  54. 0054cases ha_witness_witness_witness
  55. 0055cases ha_witness_witness_witness_right
  56. 0056have hb : ∃ i. ∃ d. ∃ e. Lt(i,v) ∧ (BetaAt(E,F,i,d) ∧ BetaAt(G,H,i,e) ∧ JordanTupleCongruence(n,b,c,d,e,k))
  57. 0057specialize jordan_enumeration_reduce_primitive (n)
  58. 0058specialize jordan_enumeration_reduce_primitive (k)
  59. 0059specialize jordan_enumeration_reduce_primitive (E)
  60. 0060specialize jordan_enumeration_reduce_primitive (F)
  61. 0061specialize jordan_enumeration_reduce_primitive (G)
  62. 0062specialize jordan_enumeration_reduce_primitive (H)
  63. 0063specialize jordan_enumeration_reduce_primitive (v)
  64. 0064specialize jordan_enumeration_reduce_primitive (b)
  65. 0065specialize jordan_enumeration_reduce_primitive (c)
  66. 0066apply jordan_enumeration_reduce_primitive
  67. 0067exact hn
  68. 0068exact hh
  69. 0069exact hcomponents_right
  70. 0070cases hb
  71. 0071cases hb_witness
  72. 0072cases hb_witness_witness
  73. 0073cases hb_witness_witness_witness
  74. 0074cases hb_witness_witness_witness_right
  75. 0075have hout : ∃ f. ∃ g. MatrixAt(P,Q,x,v,x3,f) ∧ MatrixAt(R,T,x,v,x3,g) ∧ (JordanCanonicalTupleCRT(m,n,x1,x2,x4,x5,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k))
  76. 0076specialize jordan_rectangle_crt_pair_value (m)
  77. 0077specialize jordan_rectangle_crt_pair_value (n)
  78. 0078specialize jordan_rectangle_crt_pair_value (k)
  79. 0079specialize jordan_rectangle_crt_pair_value (A)
  80. 0080specialize jordan_rectangle_crt_pair_value (B)
  81. 0081specialize jordan_rectangle_crt_pair_value (C)
  82. 0082specialize jordan_rectangle_crt_pair_value (D)
  83. 0083specialize jordan_rectangle_crt_pair_value (u)
  84. 0084specialize jordan_rectangle_crt_pair_value (E)
  85. 0085specialize jordan_rectangle_crt_pair_value (F)
  86. 0086specialize jordan_rectangle_crt_pair_value (G)
  87. 0087specialize jordan_rectangle_crt_pair_value (H)
  88. 0088specialize jordan_rectangle_crt_pair_value (v)
  89. 0089specialize jordan_rectangle_crt_pair_value (P)
  90. 0090specialize jordan_rectangle_crt_pair_value (Q)
  91. 0091specialize jordan_rectangle_crt_pair_value (R)
  92. 0092specialize jordan_rectangle_crt_pair_value (T)
  93. 0093specialize jordan_rectangle_crt_pair_value (x)
  94. 0094specialize jordan_rectangle_crt_pair_value (x3)
  95. 0095specialize jordan_rectangle_crt_pair_value (x1)
  96. 0096specialize jordan_rectangle_crt_pair_value (x2)
  97. 0097specialize jordan_rectangle_crt_pair_value (x4)
  98. 0098specialize jordan_rectangle_crt_pair_value (x5)
  99. 0099apply jordan_rectangle_crt_pair_value
  100. 0100exact hr
  101. 0101exact ha_witness_witness_witness_left
  102. 0102exact hb_witness_witness_witness_left
  103. 0103exact ha_witness_witness_witness_right_left
  104. 0104exact hb_witness_witness_witness_right_left
  105. 0105cases hout
  106. 0106cases hout_witness
  107. 0107cases hout_witness_witness
  108. 0108cases hout_witness_witness_right
  109. 0109exists v*x+x3
  110. 0110exists x6
  111. 0111exists x7
  112. 0112split
  113. 0113specialize jordan_rectangle_flat_bound (u)
  114. 0114specialize jordan_rectangle_flat_bound (v)
  115. 0115specialize jordan_rectangle_flat_bound (x)
  116. 0116specialize jordan_rectangle_flat_bound (x3)
  117. 0117apply jordan_rectangle_flat_bound
  118. 0118exact ha_witness_witness_witness_left
  119. 0119exact hb_witness_witness_witness_left
  120. 0120split
  121. 0121exact hout_witness_witness_left
  122. 0122specialize jordan_canonical_crt_tuple_unique (m)
  123. 0123specialize jordan_canonical_crt_tuple_unique (n)
  124. 0124specialize jordan_canonical_crt_tuple_unique (x1)
  125. 0125specialize jordan_canonical_crt_tuple_unique (x2)
  126. 0126specialize jordan_canonical_crt_tuple_unique (x4)
  127. 0127specialize jordan_canonical_crt_tuple_unique (x5)
  128. 0128specialize jordan_canonical_crt_tuple_unique (b)
  129. 0129specialize jordan_canonical_crt_tuple_unique (c)
  130. 0130specialize jordan_canonical_crt_tuple_unique (x6)
  131. 0131specialize jordan_canonical_crt_tuple_unique (x7)
  132. 0132specialize jordan_canonical_crt_tuple_unique (k)
  133. 0133apply jordan_canonical_crt_tuple_unique
  134. 0134exact hcop
  135. 0135split
  136. 0136exact hbound
  137. 0137split
  138. 0138exact ha_witness_witness_witness_right_right
  139. 0139exact hb_witness_witness_witness_right_right
  140. 0140exact hout_witness_witness_right_left