JT0046

jordan_rectangle_crt_distinct

Equal decoded CRT output tuples recover equal source positions and hence the same flat index.

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. ∀ p. ∀ z. ∀ f. ∀ g. ∀ h. ∀ s. 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) → Lt(p,u · v) → Lt(z,u · v) → BetaAt(P,Q,p,f) ∧ BetaAt(R,T,p,g) → BetaAt(P,Q,z,h) ∧ BetaAt(R,T,z,s) → IntegerVectorZero(f,g,h,s,k) → p = z

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 p z f g h s. (((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))))))))))))))) -> (exists jt_gap_distinctp. jt_gap_distinctp+S (p)=(u*v)) -> (exists jt_gap_distinctz. jt_gap_distinctz+S (z)=(u*v)) -> (((((exists fs_h_jt_distinctentrypcode. fs_h_jt_distinctentrypcode + S (f) = S ((S (p)) * Q)) /\ exists fs_q_jt_distinctentrypcode. P = fs_q_jt_distinctentrypcode * S ((S (p)) * Q) + (f))) /\ (((exists fs_h_jt_distinctentrypscale. fs_h_jt_distinctentrypscale + S (g) = S ((S (p)) * T)) /\ exists fs_q_jt_distinctentrypscale. R = fs_q_jt_distinctentrypscale * S ((S (p)) * T) + (g))))) -> (((((exists fs_h_jt_distinctentryzcode. fs_h_jt_distinctentryzcode + S (h) = S ((S (z)) * Q)) /\ exists fs_q_jt_distinctentryzcode. P = fs_q_jt_distinctentryzcode * S ((S (z)) * Q) + (h))) /\ (((exists fs_h_jt_distinctentryzscale. fs_h_jt_distinctentryzscale + S (s) = S ((S (z)) * T)) /\ exists fs_q_jt_distinctentryzscale. R = fs_q_jt_distinctentryzscale * S ((S (z)) * T) + (s))))) -> (forall jt_index_distinctoutputs jt_left_distinctoutputs jt_right_distinctoutputs. (exists jt_gap_distinctoutputsindex. jt_gap_distinctoutputsindex+S (jt_index_distinctoutputs)=(k)) -> (((exists fs_h_jt_distinctoutputsleft. fs_h_jt_distinctoutputsleft + S (jt_left_distinctoutputs) = S ((S (jt_index_distinctoutputs)) * g)) /\ exists fs_q_jt_distinctoutputsleft. f = fs_q_jt_distinctoutputsleft * S ((S (jt_index_distinctoutputs)) * g) + (jt_left_distinctoutputs))) -> (((exists fs_h_jt_distinctoutputsright. fs_h_jt_distinctoutputsright + S (jt_right_distinctoutputs) = S ((S (jt_index_distinctoutputs)) * s)) /\ exists fs_q_jt_distinctoutputsright. h = fs_q_jt_distinctoutputsright * S ((S (jt_index_distinctoutputs)) * s) + (jt_right_distinctoutputs))) -> jt_left_distinctoutputs=jt_right_distinctoutputs) -> p=z

Complete tactic proof in conservative notation

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

265 script commands · 41 reading checkpoints · 13 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 (4)
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 p
  9. L19
    intro z
  10. L20
    intro f
03Fix variables and assumptionsL21–30

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

  1. L21
    intro g
  2. L22
    intro h
  3. L23
    intro s
  4. L24
    intro hl
  5. L25
    intro hh
  6. L26
    intro hr
  7. L27
    intro hp
  8. L28
    intro hz
  9. L29
    intro he
  10. L30
    intro hf
04Fix variables and assumptionsL31–31

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

  1. L31
    intro hsame
05Establish haL32–41

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

  1. L32
    have ha : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. 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. L33
    specialize jordan_rectangle_crt_actual_entry (m)
  3. L34
    specialize jordan_rectangle_crt_actual_entry (n)
  4. L35
    specialize jordan_rectangle_crt_actual_entry (k)
  5. L36
    specialize jordan_rectangle_crt_actual_entry (A)
  6. L37
    specialize jordan_rectangle_crt_actual_entry (B)
  7. L38
    specialize jordan_rectangle_crt_actual_entry (C)
  8. L39
    specialize jordan_rectangle_crt_actual_entry (D)
  9. L40
    specialize jordan_rectangle_crt_actual_entry (u)
  10. L41
    specialize jordan_rectangle_crt_actual_entry (E)
06Use earlier factsL42–51

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

  1. L42
    specialize jordan_rectangle_crt_actual_entry (F)
  2. L43
    specialize jordan_rectangle_crt_actual_entry (G)
  3. L44
    specialize jordan_rectangle_crt_actual_entry (H)
  4. L45
    specialize jordan_rectangle_crt_actual_entry (v)
  5. L46
    specialize jordan_rectangle_crt_actual_entry (P)
  6. L47
    specialize jordan_rectangle_crt_actual_entry (Q)
  7. L48
    specialize jordan_rectangle_crt_actual_entry (R)
  8. L49
    specialize jordan_rectangle_crt_actual_entry (T)
  9. L50
    specialize jordan_rectangle_crt_actual_entry (u*v)
  10. L51
    specialize jordan_rectangle_crt_actual_entry (p)
07Use earlier factsL52–57

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

  1. L52
    specialize jordan_rectangle_crt_actual_entry (f)
  2. L53
    specialize jordan_rectangle_crt_actual_entry (g)
  3. L54
    apply jordan_rectangle_crt_actual_entry
  4. L55
    exact hr
  5. L56
    exact hp
  6. L57
    exact he
08Separate the logical casesL58–67

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

  1. L58
    cases ha
  2. L59
    cases ha_witness
  3. L60
    cases ha_witness_witness
  4. L61
    cases ha_witness_witness_witness
  5. L62
    cases ha_witness_witness_witness_witness
  6. L63
    cases ha_witness_witness_witness_witness_witness
  7. L64
    cases ha_witness_witness_witness_witness_witness_witness
  8. L65
    cases ha_witness_witness_witness_witness_witness_witness_right
  9. L66
    cases ha_witness_witness_witness_witness_witness_witness_right_right
  10. L67
    cases ha_witness_witness_witness_witness_witness_witness_right_right_right
09Separate the logical casesL68–70

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

  1. L68
    cases ha_witness_witness_witness_witness_witness_witness_right_right_right_right
  2. L69
    cases ha_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  3. L70
    cases ha_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
10Establish hacrtL71–72

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

  1. L71
    have hacrt : JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,f,g,k)Definitions: JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,f,g,k)Original native command in the exact edition
  2. L72
    exact ha_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
11Separate the logical casesL73–74

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

  1. L73
    cases hacrt
  2. L74
    cases hacrt_right
12Establish hbL75–84

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

  1. L75
    have hb : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. Lt(i,u) ∧ (Lt(j,v) ∧ (z = 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,z,h) ∧ BetaAt(R,T,z,s) ∧ (JordanCanonicalTupleCRT(m,n,b,c,d,e,h,s,k) ∧ JordanPrimitiveTuple(m · n,h,s,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,z,h)BetaAt(R,T,z,s)JordanCanonicalTupleCRT(m,n,b,c,d,e,h,s,k)JordanPrimitiveTuple(m · n,h,s,k)Original native command in the exact edition
  2. L76
    specialize jordan_rectangle_crt_actual_entry (m)
  3. L77
    specialize jordan_rectangle_crt_actual_entry (n)
  4. L78
    specialize jordan_rectangle_crt_actual_entry (k)
  5. L79
    specialize jordan_rectangle_crt_actual_entry (A)
  6. L80
    specialize jordan_rectangle_crt_actual_entry (B)
  7. L81
    specialize jordan_rectangle_crt_actual_entry (C)
  8. L82
    specialize jordan_rectangle_crt_actual_entry (D)
  9. L83
    specialize jordan_rectangle_crt_actual_entry (u)
  10. L84
    specialize jordan_rectangle_crt_actual_entry (E)
13Use earlier factsL85–94

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

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

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

  1. L95
    specialize jordan_rectangle_crt_actual_entry (h)
  2. L96
    specialize jordan_rectangle_crt_actual_entry (s)
  3. L97
    apply jordan_rectangle_crt_actual_entry
  4. L98
    exact hr
  5. L99
    exact hz
  6. L100
    exact hf
15Separate the logical casesL101–110

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

  1. L101
    cases hb
  2. L102
    cases hb_witness
  3. L103
    cases hb_witness_witness
  4. L104
    cases hb_witness_witness_witness
  5. L105
    cases hb_witness_witness_witness_witness
  6. L106
    cases hb_witness_witness_witness_witness_witness
  7. L107
    cases hb_witness_witness_witness_witness_witness_witness
  8. L108
    cases hb_witness_witness_witness_witness_witness_witness_right
  9. L109
    cases hb_witness_witness_witness_witness_witness_witness_right_right
  10. L110
    cases hb_witness_witness_witness_witness_witness_witness_right_right_right
16Separate the logical casesL111–113

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

  1. L111
    cases hb_witness_witness_witness_witness_witness_witness_right_right_right_right
  2. L112
    cases hb_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  3. L113
    cases hb_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
17Establish hbcrtL114–115

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

  1. L114
    have hbcrt : JordanCanonicalTupleCRT(m,n,x8,x9,x10,x11,h,s,k)Definitions: JordanCanonicalTupleCRT(m,n,x8,x9,x10,x11,h,s,k)Original native command in the exact edition
  2. L115
    exact hb_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
18Separate the logical casesL116–117

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

  1. L116
    cases hbcrt
  2. L117
    cases hbcrt_right
19Establish left0L118–127

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

  1. L118
    have left0 : BetaPrefixInto(x2,x3,k,m) ∧ JordanPrimitiveTuple(m,x2,x3,k)Definitions: BetaPrefixInto(x2,x3,k,m)JordanPrimitiveTuple(m,x2,x3,k)Original native command in the exact edition
  2. L119
    specialize jordan_enumeration_actual_value (k)
  3. L120
    specialize jordan_enumeration_actual_value (m)
  4. L121
    specialize jordan_enumeration_actual_value (A)
  5. L122
    specialize jordan_enumeration_actual_value (B)
  6. L123
    specialize jordan_enumeration_actual_value (C)
  7. L124
    specialize jordan_enumeration_actual_value (D)
  8. L125
    specialize jordan_enumeration_actual_value (u)
  9. L126
    specialize jordan_enumeration_actual_value (x)
  10. L127
    specialize jordan_enumeration_actual_value (x2)
20Use earlier factsL128–132

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

  1. L128
    specialize jordan_enumeration_actual_value (x3)
  2. L129
    apply jordan_enumeration_actual_value
  3. L130
    exact hl
  4. L131
    exact ha_witness_witness_witness_witness_witness_witness_left
  5. L132
    exact ha_witness_witness_witness_witness_witness_witness_right_right_right_left
21Separate the logical casesL133–133

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

  1. L133
    cases left0
22Establish left1L134–143

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

  1. L134
    have left1 : BetaPrefixInto(x8,x9,k,m) ∧ JordanPrimitiveTuple(m,x8,x9,k)Definitions: BetaPrefixInto(x8,x9,k,m)JordanPrimitiveTuple(m,x8,x9,k)Original native command in the exact edition
  2. L135
    specialize jordan_enumeration_actual_value (k)
  3. L136
    specialize jordan_enumeration_actual_value (m)
  4. L137
    specialize jordan_enumeration_actual_value (A)
  5. L138
    specialize jordan_enumeration_actual_value (B)
  6. L139
    specialize jordan_enumeration_actual_value (C)
  7. L140
    specialize jordan_enumeration_actual_value (D)
  8. L141
    specialize jordan_enumeration_actual_value (u)
  9. L142
    specialize jordan_enumeration_actual_value (x6)
  10. L143
    specialize jordan_enumeration_actual_value (x8)
23Use earlier factsL144–148

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

  1. L144
    specialize jordan_enumeration_actual_value (x9)
  2. L145
    apply jordan_enumeration_actual_value
  3. L146
    exact hl
  4. L147
    exact hb_witness_witness_witness_witness_witness_witness_left
  5. L148
    exact hb_witness_witness_witness_witness_witness_witness_right_right_right_left
24Separate the logical casesL149–149

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

  1. L149
    cases left1
25Establish leftsameL150–159

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

  1. L150
    have leftsame : IntegerVectorZero(x2,x3,x8,x9,k)Definitions: IntegerVectorZero(x2,x3,x8,x9,k)Original native command in the exact edition
  2. L151
    specialize jordan_crt_component_recovery (m)
  3. L152
    specialize jordan_crt_component_recovery (x2)
  4. L153
    specialize jordan_crt_component_recovery (x3)
  5. L154
    specialize jordan_crt_component_recovery (x8)
  6. L155
    specialize jordan_crt_component_recovery (x9)
  7. L156
    specialize jordan_crt_component_recovery (f)
  8. L157
    specialize jordan_crt_component_recovery (g)
  9. L158
    specialize jordan_crt_component_recovery (h)
  10. L159
    specialize jordan_crt_component_recovery (s)
26Use earlier factsL160–166

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

  1. L160
    specialize jordan_crt_component_recovery (k)
  2. L161
    apply jordan_crt_component_recovery
  3. L162
    exact left0_left
  4. L163
    exact left1_left
  5. L164
    exact hacrt_right_left
  6. L165
    exact hbcrt_right_left
  7. L166
    exact hsame
27Establish leftindexL167–176

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

  1. L167
    have leftindex : x=x6
  2. L168
    specialize jordan_enumeration_distinct (k)
  3. L169
    specialize jordan_enumeration_distinct (m)
  4. L170
    specialize jordan_enumeration_distinct (A)
  5. L171
    specialize jordan_enumeration_distinct (B)
  6. L172
    specialize jordan_enumeration_distinct (C)
  7. L173
    specialize jordan_enumeration_distinct (D)
  8. L174
    specialize jordan_enumeration_distinct (u)
  9. L175
    specialize jordan_enumeration_distinct (x)
  10. L176
    specialize jordan_enumeration_distinct (x6)
28Use earlier factsL177–186

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

  1. L177
    specialize jordan_enumeration_distinct (x2)
  2. L178
    specialize jordan_enumeration_distinct (x3)
  3. L179
    specialize jordan_enumeration_distinct (x8)
  4. L180
    specialize jordan_enumeration_distinct (x9)
  5. L181
    apply jordan_enumeration_distinct
  6. L182
    exact hl
  7. L183
    exact ha_witness_witness_witness_witness_witness_witness_left
  8. L184
    exact hb_witness_witness_witness_witness_witness_witness_left
  9. L185
    exact ha_witness_witness_witness_witness_witness_witness_right_right_right_left
  10. L186
    exact hb_witness_witness_witness_witness_witness_witness_right_right_right_left
29Use earlier factsL187–187

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

  1. L187
    exact leftsame
30Establish right0L188–197

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

  1. L188
    have right0 : BetaPrefixInto(x4,x5,k,n) ∧ JordanPrimitiveTuple(n,x4,x5,k)Definitions: BetaPrefixInto(x4,x5,k,n)JordanPrimitiveTuple(n,x4,x5,k)Original native command in the exact edition
  2. L189
    specialize jordan_enumeration_actual_value (k)
  3. L190
    specialize jordan_enumeration_actual_value (n)
  4. L191
    specialize jordan_enumeration_actual_value (E)
  5. L192
    specialize jordan_enumeration_actual_value (F)
  6. L193
    specialize jordan_enumeration_actual_value (G)
  7. L194
    specialize jordan_enumeration_actual_value (H)
  8. L195
    specialize jordan_enumeration_actual_value (v)
  9. L196
    specialize jordan_enumeration_actual_value (x1)
  10. L197
    specialize jordan_enumeration_actual_value (x4)
31Use earlier factsL198–202

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

  1. L198
    specialize jordan_enumeration_actual_value (x5)
  2. L199
    apply jordan_enumeration_actual_value
  3. L200
    exact hh
  4. L201
    exact ha_witness_witness_witness_witness_witness_witness_right_left
  5. L202
    exact ha_witness_witness_witness_witness_witness_witness_right_right_right_right_left
32Separate the logical casesL203–203

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

  1. L203
    cases right0
33Establish right1L204–213

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

  1. L204
    have right1 : BetaPrefixInto(x10,x11,k,n) ∧ JordanPrimitiveTuple(n,x10,x11,k)Definitions: BetaPrefixInto(x10,x11,k,n)JordanPrimitiveTuple(n,x10,x11,k)Original native command in the exact edition
  2. L205
    specialize jordan_enumeration_actual_value (k)
  3. L206
    specialize jordan_enumeration_actual_value (n)
  4. L207
    specialize jordan_enumeration_actual_value (E)
  5. L208
    specialize jordan_enumeration_actual_value (F)
  6. L209
    specialize jordan_enumeration_actual_value (G)
  7. L210
    specialize jordan_enumeration_actual_value (H)
  8. L211
    specialize jordan_enumeration_actual_value (v)
  9. L212
    specialize jordan_enumeration_actual_value (x7)
  10. L213
    specialize jordan_enumeration_actual_value (x10)
34Use earlier factsL214–218

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

  1. L214
    specialize jordan_enumeration_actual_value (x11)
  2. L215
    apply jordan_enumeration_actual_value
  3. L216
    exact hh
  4. L217
    exact hb_witness_witness_witness_witness_witness_witness_right_left
  5. L218
    exact hb_witness_witness_witness_witness_witness_witness_right_right_right_right_left
35Separate the logical casesL219–219

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

  1. L219
    cases right1
36Establish rightsameL220–229

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

  1. L220
    have rightsame : IntegerVectorZero(x4,x5,x10,x11,k)Definitions: IntegerVectorZero(x4,x5,x10,x11,k)Original native command in the exact edition
  2. L221
    specialize jordan_crt_component_recovery (n)
  3. L222
    specialize jordan_crt_component_recovery (x4)
  4. L223
    specialize jordan_crt_component_recovery (x5)
  5. L224
    specialize jordan_crt_component_recovery (x10)
  6. L225
    specialize jordan_crt_component_recovery (x11)
  7. L226
    specialize jordan_crt_component_recovery (f)
  8. L227
    specialize jordan_crt_component_recovery (g)
  9. L228
    specialize jordan_crt_component_recovery (h)
  10. L229
    specialize jordan_crt_component_recovery (s)
37Use earlier factsL230–236

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

  1. L230
    specialize jordan_crt_component_recovery (k)
  2. L231
    apply jordan_crt_component_recovery
  3. L232
    exact right0_left
  4. L233
    exact right1_left
  5. L234
    exact hacrt_right_right
  6. L235
    exact hbcrt_right_right
  7. L236
    exact hsame
38Establish rightindexL237–246

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

  1. L237
    have rightindex : x1=x7
  2. L238
    specialize jordan_enumeration_distinct (k)
  3. L239
    specialize jordan_enumeration_distinct (n)
  4. L240
    specialize jordan_enumeration_distinct (E)
  5. L241
    specialize jordan_enumeration_distinct (F)
  6. L242
    specialize jordan_enumeration_distinct (G)
  7. L243
    specialize jordan_enumeration_distinct (H)
  8. L244
    specialize jordan_enumeration_distinct (v)
  9. L245
    specialize jordan_enumeration_distinct (x1)
  10. L246
    specialize jordan_enumeration_distinct (x7)
39Use earlier factsL247–256

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

  1. L247
    specialize jordan_enumeration_distinct (x4)
  2. L248
    specialize jordan_enumeration_distinct (x5)
  3. L249
    specialize jordan_enumeration_distinct (x10)
  4. L250
    specialize jordan_enumeration_distinct (x11)
  5. L251
    apply jordan_enumeration_distinct
  6. L252
    exact hh
  7. L253
    exact ha_witness_witness_witness_witness_witness_witness_right_left
  8. L254
    exact hb_witness_witness_witness_witness_witness_witness_right_left
  9. L255
    exact ha_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  10. L256
    exact hb_witness_witness_witness_witness_witness_witness_right_right_right_right_left
40Use earlier factsL257–257

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

  1. L257
    exact rightsame
41Establish hposL258–265

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

  1. L258
    have hpos : p=v*x+x1
  2. L259
    exact ha_witness_witness_witness_witness_witness_witness_right_right_left
  3. L260
    rewrite leftindex at hpos
  4. L261
    rewrite rightindex at hpos
  5. L262
    trans v*x6+x7
  6. L263
    exact hpos
  7. L264
    symm
  8. L265
    exact hb_witness_witness_witness_witness_witness_witness_right_right_left

Library-wide reading audit

Original defined command ledger · 265 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 p
  19. 0019intro z
  20. 0020intro f
  21. 0021intro g
  22. 0022intro h
  23. 0023intro s
  24. 0024intro hl
  25. 0025intro hh
  26. 0026intro hr
  27. 0027intro hp
  28. 0028intro hz
  29. 0029intro he
  30. 0030intro hf
  31. 0031intro hsame
  32. 0032have ha : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. 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)))))))
  33. 0033specialize jordan_rectangle_crt_actual_entry (m)
  34. 0034specialize jordan_rectangle_crt_actual_entry (n)
  35. 0035specialize jordan_rectangle_crt_actual_entry (k)
  36. 0036specialize jordan_rectangle_crt_actual_entry (A)
  37. 0037specialize jordan_rectangle_crt_actual_entry (B)
  38. 0038specialize jordan_rectangle_crt_actual_entry (C)
  39. 0039specialize jordan_rectangle_crt_actual_entry (D)
  40. 0040specialize jordan_rectangle_crt_actual_entry (u)
  41. 0041specialize jordan_rectangle_crt_actual_entry (E)
  42. 0042specialize jordan_rectangle_crt_actual_entry (F)
  43. 0043specialize jordan_rectangle_crt_actual_entry (G)
  44. 0044specialize jordan_rectangle_crt_actual_entry (H)
  45. 0045specialize jordan_rectangle_crt_actual_entry (v)
  46. 0046specialize jordan_rectangle_crt_actual_entry (P)
  47. 0047specialize jordan_rectangle_crt_actual_entry (Q)
  48. 0048specialize jordan_rectangle_crt_actual_entry (R)
  49. 0049specialize jordan_rectangle_crt_actual_entry (T)
  50. 0050specialize jordan_rectangle_crt_actual_entry (u*v)
  51. 0051specialize jordan_rectangle_crt_actual_entry (p)
  52. 0052specialize jordan_rectangle_crt_actual_entry (f)
  53. 0053specialize jordan_rectangle_crt_actual_entry (g)
  54. 0054apply jordan_rectangle_crt_actual_entry
  55. 0055exact hr
  56. 0056exact hp
  57. 0057exact he
  58. 0058cases ha
  59. 0059cases ha_witness
  60. 0060cases ha_witness_witness
  61. 0061cases ha_witness_witness_witness
  62. 0062cases ha_witness_witness_witness_witness
  63. 0063cases ha_witness_witness_witness_witness_witness
  64. 0064cases ha_witness_witness_witness_witness_witness_witness
  65. 0065cases ha_witness_witness_witness_witness_witness_witness_right
  66. 0066cases ha_witness_witness_witness_witness_witness_witness_right_right
  67. 0067cases ha_witness_witness_witness_witness_witness_witness_right_right_right
  68. 0068cases ha_witness_witness_witness_witness_witness_witness_right_right_right_right
  69. 0069cases ha_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  70. 0070cases ha_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  71. 0071have hacrt : JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,f,g,k)
  72. 0072exact ha_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  73. 0073cases hacrt
  74. 0074cases hacrt_right
  75. 0075have hb : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. Lt(i,u) ∧ (Lt(j,v) ∧ (z = 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,z,h) ∧ BetaAt(R,T,z,s) ∧ (JordanCanonicalTupleCRT(m,n,b,c,d,e,h,s,k) ∧ JordanPrimitiveTuple(m · n,h,s,k)))))))
  76. 0076specialize jordan_rectangle_crt_actual_entry (m)
  77. 0077specialize jordan_rectangle_crt_actual_entry (n)
  78. 0078specialize jordan_rectangle_crt_actual_entry (k)
  79. 0079specialize jordan_rectangle_crt_actual_entry (A)
  80. 0080specialize jordan_rectangle_crt_actual_entry (B)
  81. 0081specialize jordan_rectangle_crt_actual_entry (C)
  82. 0082specialize jordan_rectangle_crt_actual_entry (D)
  83. 0083specialize jordan_rectangle_crt_actual_entry (u)
  84. 0084specialize jordan_rectangle_crt_actual_entry (E)
  85. 0085specialize jordan_rectangle_crt_actual_entry (F)
  86. 0086specialize jordan_rectangle_crt_actual_entry (G)
  87. 0087specialize jordan_rectangle_crt_actual_entry (H)
  88. 0088specialize jordan_rectangle_crt_actual_entry (v)
  89. 0089specialize jordan_rectangle_crt_actual_entry (P)
  90. 0090specialize jordan_rectangle_crt_actual_entry (Q)
  91. 0091specialize jordan_rectangle_crt_actual_entry (R)
  92. 0092specialize jordan_rectangle_crt_actual_entry (T)
  93. 0093specialize jordan_rectangle_crt_actual_entry (u*v)
  94. 0094specialize jordan_rectangle_crt_actual_entry (z)
  95. 0095specialize jordan_rectangle_crt_actual_entry (h)
  96. 0096specialize jordan_rectangle_crt_actual_entry (s)
  97. 0097apply jordan_rectangle_crt_actual_entry
  98. 0098exact hr
  99. 0099exact hz
  100. 0100exact hf
  101. 0101cases hb
  102. 0102cases hb_witness
  103. 0103cases hb_witness_witness
  104. 0104cases hb_witness_witness_witness
  105. 0105cases hb_witness_witness_witness_witness
  106. 0106cases hb_witness_witness_witness_witness_witness
  107. 0107cases hb_witness_witness_witness_witness_witness_witness
  108. 0108cases hb_witness_witness_witness_witness_witness_witness_right
  109. 0109cases hb_witness_witness_witness_witness_witness_witness_right_right
  110. 0110cases hb_witness_witness_witness_witness_witness_witness_right_right_right
  111. 0111cases hb_witness_witness_witness_witness_witness_witness_right_right_right_right
  112. 0112cases hb_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  113. 0113cases hb_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  114. 0114have hbcrt : JordanCanonicalTupleCRT(m,n,x8,x9,x10,x11,h,s,k)
  115. 0115exact hb_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  116. 0116cases hbcrt
  117. 0117cases hbcrt_right
  118. 0118have left0 : BetaPrefixInto(x2,x3,k,m) ∧ JordanPrimitiveTuple(m,x2,x3,k)
  119. 0119specialize jordan_enumeration_actual_value (k)
  120. 0120specialize jordan_enumeration_actual_value (m)
  121. 0121specialize jordan_enumeration_actual_value (A)
  122. 0122specialize jordan_enumeration_actual_value (B)
  123. 0123specialize jordan_enumeration_actual_value (C)
  124. 0124specialize jordan_enumeration_actual_value (D)
  125. 0125specialize jordan_enumeration_actual_value (u)
  126. 0126specialize jordan_enumeration_actual_value (x)
  127. 0127specialize jordan_enumeration_actual_value (x2)
  128. 0128specialize jordan_enumeration_actual_value (x3)
  129. 0129apply jordan_enumeration_actual_value
  130. 0130exact hl
  131. 0131exact ha_witness_witness_witness_witness_witness_witness_left
  132. 0132exact ha_witness_witness_witness_witness_witness_witness_right_right_right_left
  133. 0133cases left0
  134. 0134have left1 : BetaPrefixInto(x8,x9,k,m) ∧ JordanPrimitiveTuple(m,x8,x9,k)
  135. 0135specialize jordan_enumeration_actual_value (k)
  136. 0136specialize jordan_enumeration_actual_value (m)
  137. 0137specialize jordan_enumeration_actual_value (A)
  138. 0138specialize jordan_enumeration_actual_value (B)
  139. 0139specialize jordan_enumeration_actual_value (C)
  140. 0140specialize jordan_enumeration_actual_value (D)
  141. 0141specialize jordan_enumeration_actual_value (u)
  142. 0142specialize jordan_enumeration_actual_value (x6)
  143. 0143specialize jordan_enumeration_actual_value (x8)
  144. 0144specialize jordan_enumeration_actual_value (x9)
  145. 0145apply jordan_enumeration_actual_value
  146. 0146exact hl
  147. 0147exact hb_witness_witness_witness_witness_witness_witness_left
  148. 0148exact hb_witness_witness_witness_witness_witness_witness_right_right_right_left
  149. 0149cases left1
  150. 0150have leftsame : IntegerVectorZero(x2,x3,x8,x9,k)
  151. 0151specialize jordan_crt_component_recovery (m)
  152. 0152specialize jordan_crt_component_recovery (x2)
  153. 0153specialize jordan_crt_component_recovery (x3)
  154. 0154specialize jordan_crt_component_recovery (x8)
  155. 0155specialize jordan_crt_component_recovery (x9)
  156. 0156specialize jordan_crt_component_recovery (f)
  157. 0157specialize jordan_crt_component_recovery (g)
  158. 0158specialize jordan_crt_component_recovery (h)
  159. 0159specialize jordan_crt_component_recovery (s)
  160. 0160specialize jordan_crt_component_recovery (k)
  161. 0161apply jordan_crt_component_recovery
  162. 0162exact left0_left
  163. 0163exact left1_left
  164. 0164exact hacrt_right_left
  165. 0165exact hbcrt_right_left
  166. 0166exact hsame
  167. 0167have leftindex : x=x6
  168. 0168specialize jordan_enumeration_distinct (k)
  169. 0169specialize jordan_enumeration_distinct (m)
  170. 0170specialize jordan_enumeration_distinct (A)
  171. 0171specialize jordan_enumeration_distinct (B)
  172. 0172specialize jordan_enumeration_distinct (C)
  173. 0173specialize jordan_enumeration_distinct (D)
  174. 0174specialize jordan_enumeration_distinct (u)
  175. 0175specialize jordan_enumeration_distinct (x)
  176. 0176specialize jordan_enumeration_distinct (x6)
  177. 0177specialize jordan_enumeration_distinct (x2)
  178. 0178specialize jordan_enumeration_distinct (x3)
  179. 0179specialize jordan_enumeration_distinct (x8)
  180. 0180specialize jordan_enumeration_distinct (x9)
  181. 0181apply jordan_enumeration_distinct
  182. 0182exact hl
  183. 0183exact ha_witness_witness_witness_witness_witness_witness_left
  184. 0184exact hb_witness_witness_witness_witness_witness_witness_left
  185. 0185exact ha_witness_witness_witness_witness_witness_witness_right_right_right_left
  186. 0186exact hb_witness_witness_witness_witness_witness_witness_right_right_right_left
  187. 0187exact leftsame
  188. 0188have right0 : BetaPrefixInto(x4,x5,k,n) ∧ JordanPrimitiveTuple(n,x4,x5,k)
  189. 0189specialize jordan_enumeration_actual_value (k)
  190. 0190specialize jordan_enumeration_actual_value (n)
  191. 0191specialize jordan_enumeration_actual_value (E)
  192. 0192specialize jordan_enumeration_actual_value (F)
  193. 0193specialize jordan_enumeration_actual_value (G)
  194. 0194specialize jordan_enumeration_actual_value (H)
  195. 0195specialize jordan_enumeration_actual_value (v)
  196. 0196specialize jordan_enumeration_actual_value (x1)
  197. 0197specialize jordan_enumeration_actual_value (x4)
  198. 0198specialize jordan_enumeration_actual_value (x5)
  199. 0199apply jordan_enumeration_actual_value
  200. 0200exact hh
  201. 0201exact ha_witness_witness_witness_witness_witness_witness_right_left
  202. 0202exact ha_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  203. 0203cases right0
  204. 0204have right1 : BetaPrefixInto(x10,x11,k,n) ∧ JordanPrimitiveTuple(n,x10,x11,k)
  205. 0205specialize jordan_enumeration_actual_value (k)
  206. 0206specialize jordan_enumeration_actual_value (n)
  207. 0207specialize jordan_enumeration_actual_value (E)
  208. 0208specialize jordan_enumeration_actual_value (F)
  209. 0209specialize jordan_enumeration_actual_value (G)
  210. 0210specialize jordan_enumeration_actual_value (H)
  211. 0211specialize jordan_enumeration_actual_value (v)
  212. 0212specialize jordan_enumeration_actual_value (x7)
  213. 0213specialize jordan_enumeration_actual_value (x10)
  214. 0214specialize jordan_enumeration_actual_value (x11)
  215. 0215apply jordan_enumeration_actual_value
  216. 0216exact hh
  217. 0217exact hb_witness_witness_witness_witness_witness_witness_right_left
  218. 0218exact hb_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  219. 0219cases right1
  220. 0220have rightsame : IntegerVectorZero(x4,x5,x10,x11,k)
  221. 0221specialize jordan_crt_component_recovery (n)
  222. 0222specialize jordan_crt_component_recovery (x4)
  223. 0223specialize jordan_crt_component_recovery (x5)
  224. 0224specialize jordan_crt_component_recovery (x10)
  225. 0225specialize jordan_crt_component_recovery (x11)
  226. 0226specialize jordan_crt_component_recovery (f)
  227. 0227specialize jordan_crt_component_recovery (g)
  228. 0228specialize jordan_crt_component_recovery (h)
  229. 0229specialize jordan_crt_component_recovery (s)
  230. 0230specialize jordan_crt_component_recovery (k)
  231. 0231apply jordan_crt_component_recovery
  232. 0232exact right0_left
  233. 0233exact right1_left
  234. 0234exact hacrt_right_right
  235. 0235exact hbcrt_right_right
  236. 0236exact hsame
  237. 0237have rightindex : x1=x7
  238. 0238specialize jordan_enumeration_distinct (k)
  239. 0239specialize jordan_enumeration_distinct (n)
  240. 0240specialize jordan_enumeration_distinct (E)
  241. 0241specialize jordan_enumeration_distinct (F)
  242. 0242specialize jordan_enumeration_distinct (G)
  243. 0243specialize jordan_enumeration_distinct (H)
  244. 0244specialize jordan_enumeration_distinct (v)
  245. 0245specialize jordan_enumeration_distinct (x1)
  246. 0246specialize jordan_enumeration_distinct (x7)
  247. 0247specialize jordan_enumeration_distinct (x4)
  248. 0248specialize jordan_enumeration_distinct (x5)
  249. 0249specialize jordan_enumeration_distinct (x10)
  250. 0250specialize jordan_enumeration_distinct (x11)
  251. 0251apply jordan_enumeration_distinct
  252. 0252exact hh
  253. 0253exact ha_witness_witness_witness_witness_witness_witness_right_left
  254. 0254exact hb_witness_witness_witness_witness_witness_witness_right_left
  255. 0255exact ha_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  256. 0256exact hb_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  257. 0257exact rightsame
  258. 0258have hpos : p=v*x+x1
  259. 0259exact ha_witness_witness_witness_witness_witness_witness_right_right_left
  260. 0260rewrite leftindex at hpos
  261. 0261rewrite rightindex at hpos
  262. 0262trans v*x6+x7
  263. 0263exact hpos
  264. 0264symm
  265. 0265exact hb_witness_witness_witness_witness_witness_witness_right_right_left