JT0042

jordan_rectangle_crt_exists

HA induction constructs the genuine rectangular CRT output table at every prefix through u*v, including zero-width rectangles.

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. ¬m = 0 → ¬n = 0 → Coprime(m,n) → JordanTupleEnumeration(k,m,A,B,C,D,u) → JordanTupleEnumeration(k,n,E,F,G,H,v) → ∀ x. Le(x,u · v) → ∃ y. ∃ z. ∃ i. ∃ j. JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,y,z,i,j,x)

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. ~(m=0) -> ~(n=0) -> (forall jt_divisor_rectexistscop. (exists jt_factor_rectexistscopa. (m)=(jt_divisor_rectexistscop)*jt_factor_rectexistscopa) -> (exists jt_factor_rectexistscopb. (n)=(jt_divisor_rectexistscop)*jt_factor_rectexistscopb) -> jt_divisor_rectexistscop=1) -> (((forall jt_i_rectexistsleft. (exists jt_gap_rectexistsleftsoundindex. jt_gap_rectexistsleftsoundindex+S (jt_i_rectexistsleft)=(u)) -> exists jt_b_rectexistsleft jt_c_rectexistsleft. ((((((exists fs_h_jt_rectexistsleftsoundcode. fs_h_jt_rectexistsleftsoundcode + S (jt_b_rectexistsleft) = S ((S (jt_i_rectexistsleft)) * B)) /\ exists fs_q_jt_rectexistsleftsoundcode. A = fs_q_jt_rectexistsleftsoundcode * S ((S (jt_i_rectexistsleft)) * B) + (jt_b_rectexistsleft))) /\ (((exists fs_h_jt_rectexistsleftsoundscale. fs_h_jt_rectexistsleftsoundscale + S (jt_c_rectexistsleft) = S ((S (jt_i_rectexistsleft)) * D)) /\ exists fs_q_jt_rectexistsleftsoundscale. C = fs_q_jt_rectexistsleftsoundscale * S ((S (jt_i_rectexistsleft)) * D) + (jt_c_rectexistsleft))))) /\ (((forall jt_index_rectexistsleftbound. (exists jt_gap_rectexistsleftboundindex. jt_gap_rectexistsleftboundindex+S (jt_index_rectexistsleftbound)=(k)) -> exists jt_value_rectexistsleftbound. ((((exists fs_h_jt_rectexistsleftboundat. fs_h_jt_rectexistsleftboundat + S (jt_value_rectexistsleftbound) = S ((S (jt_index_rectexistsleftbound)) * jt_c_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftboundat. jt_b_rectexistsleft = fs_q_jt_rectexistsleftboundat * S ((S (jt_index_rectexistsleftbound)) * jt_c_rectexistsleft) + (jt_value_rectexistsleftbound))) /\ (exists jt_gap_rectexistsleftboundvalue. jt_gap_rectexistsleftboundvalue+S (jt_value_rectexistsleftbound)=(m)))) /\ (forall jt_divisor_rectexistsleftprimitive. (exists jt_factor_rectexistsleftprimitivemodulus. (m)=(jt_divisor_rectexistsleftprimitive)*jt_factor_rectexistsleftprimitivemodulus) -> (forall jt_index_rectexistsleftprimitivecoordinates jt_value_rectexistsleftprimitivecoordinates. (exists jt_gap_rectexistsleftprimitivecoordinatesindex. jt_gap_rectexistsleftprimitivecoordinatesindex+S (jt_index_rectexistsleftprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectexistsleftprimitivecoordinatesat. fs_h_jt_rectexistsleftprimitivecoordinatesat + S (jt_value_rectexistsleftprimitivecoordinates) = S ((S (jt_index_rectexistsleftprimitivecoordinates)) * jt_c_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftprimitivecoordinatesat. jt_b_rectexistsleft = fs_q_jt_rectexistsleftprimitivecoordinatesat * S ((S (jt_index_rectexistsleftprimitivecoordinates)) * jt_c_rectexistsleft) + (jt_value_rectexistsleftprimitivecoordinates))) -> (exists jt_factor_rectexistsleftprimitivecoordinatesdivides. (jt_value_rectexistsleftprimitivecoordinates)=(jt_divisor_rectexistsleftprimitive)*jt_factor_rectexistsleftprimitivecoordinatesdivides)) -> jt_divisor_rectexistsleftprimitive=1))))) /\ (((forall jt_b_rectexistsleft jt_c_rectexistsleft. (forall jt_index_rectexistsleftinputbound. (exists jt_gap_rectexistsleftinputboundindex. jt_gap_rectexistsleftinputboundindex+S (jt_index_rectexistsleftinputbound)=(k)) -> exists jt_value_rectexistsleftinputbound. ((((exists fs_h_jt_rectexistsleftinputboundat. fs_h_jt_rectexistsleftinputboundat + S (jt_value_rectexistsleftinputbound) = S ((S (jt_index_rectexistsleftinputbound)) * jt_c_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftinputboundat. jt_b_rectexistsleft = fs_q_jt_rectexistsleftinputboundat * S ((S (jt_index_rectexistsleftinputbound)) * jt_c_rectexistsleft) + (jt_value_rectexistsleftinputbound))) /\ (exists jt_gap_rectexistsleftinputboundvalue. jt_gap_rectexistsleftinputboundvalue+S (jt_value_rectexistsleftinputbound)=(m)))) -> (forall jt_divisor_rectexistsleftinputprimitive. (exists jt_factor_rectexistsleftinputprimitivemodulus. (m)=(jt_divisor_rectexistsleftinputprimitive)*jt_factor_rectexistsleftinputprimitivemodulus) -> (forall jt_index_rectexistsleftinputprimitivecoordinates jt_value_rectexistsleftinputprimitivecoordinates. (exists jt_gap_rectexistsleftinputprimitivecoordinatesindex. jt_gap_rectexistsleftinputprimitivecoordinatesindex+S (jt_index_rectexistsleftinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectexistsleftinputprimitivecoordinatesat. fs_h_jt_rectexistsleftinputprimitivecoordinatesat + S (jt_value_rectexistsleftinputprimitivecoordinates) = S ((S (jt_index_rectexistsleftinputprimitivecoordinates)) * jt_c_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftinputprimitivecoordinatesat. jt_b_rectexistsleft = fs_q_jt_rectexistsleftinputprimitivecoordinatesat * S ((S (jt_index_rectexistsleftinputprimitivecoordinates)) * jt_c_rectexistsleft) + (jt_value_rectexistsleftinputprimitivecoordinates))) -> (exists jt_factor_rectexistsleftinputprimitivecoordinatesdivides. (jt_value_rectexistsleftinputprimitivecoordinates)=(jt_divisor_rectexistsleftinputprimitive)*jt_factor_rectexistsleftinputprimitivecoordinatesdivides)) -> jt_divisor_rectexistsleftinputprimitive=1) -> exists jt_i_rectexistsleft jt_d_rectexistsleft jt_e_rectexistsleft. ((exists jt_gap_rectexistsleftcompleteindex. jt_gap_rectexistsleftcompleteindex+S (jt_i_rectexistsleft)=(u)) /\ (((((((exists fs_h_jt_rectexistsleftcompletecode. fs_h_jt_rectexistsleftcompletecode + S (jt_d_rectexistsleft) = S ((S (jt_i_rectexistsleft)) * B)) /\ exists fs_q_jt_rectexistsleftcompletecode. A = fs_q_jt_rectexistsleftcompletecode * S ((S (jt_i_rectexistsleft)) * B) + (jt_d_rectexistsleft))) /\ (((exists fs_h_jt_rectexistsleftcompletescale. fs_h_jt_rectexistsleftcompletescale + S (jt_e_rectexistsleft) = S ((S (jt_i_rectexistsleft)) * D)) /\ exists fs_q_jt_rectexistsleftcompletescale. C = fs_q_jt_rectexistsleftcompletescale * S ((S (jt_i_rectexistsleft)) * D) + (jt_e_rectexistsleft))))) /\ (forall jt_index_rectexistsleftrepresented jt_left_rectexistsleftrepresented jt_right_rectexistsleftrepresented. (exists jt_gap_rectexistsleftrepresentedindex. jt_gap_rectexistsleftrepresentedindex+S (jt_index_rectexistsleftrepresented)=(k)) -> (((exists fs_h_jt_rectexistsleftrepresentedleft. fs_h_jt_rectexistsleftrepresentedleft + S (jt_left_rectexistsleftrepresented) = S ((S (jt_index_rectexistsleftrepresented)) * jt_c_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftrepresentedleft. jt_b_rectexistsleft = fs_q_jt_rectexistsleftrepresentedleft * S ((S (jt_index_rectexistsleftrepresented)) * jt_c_rectexistsleft) + (jt_left_rectexistsleftrepresented))) -> (((exists fs_h_jt_rectexistsleftrepresentedright. fs_h_jt_rectexistsleftrepresentedright + S (jt_right_rectexistsleftrepresented) = S ((S (jt_index_rectexistsleftrepresented)) * jt_e_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftrepresentedright. jt_d_rectexistsleft = fs_q_jt_rectexistsleftrepresentedright * S ((S (jt_index_rectexistsleftrepresented)) * jt_e_rectexistsleft) + (jt_right_rectexistsleftrepresented))) -> jt_left_rectexistsleftrepresented=jt_right_rectexistsleftrepresented))))) /\ (forall jt_i_rectexistsleft jt_h_rectexistsleft jt_b_rectexistsleft jt_c_rectexistsleft jt_d_rectexistsleft jt_e_rectexistsleft. (exists jt_gap_rectexistsleftfirstindex. jt_gap_rectexistsleftfirstindex+S (jt_i_rectexistsleft)=(u)) -> (exists jt_gap_rectexistsleftsecondindex. jt_gap_rectexistsleftsecondindex+S (jt_h_rectexistsleft)=(u)) -> (((((exists fs_h_jt_rectexistsleftfirstcode. fs_h_jt_rectexistsleftfirstcode + S (jt_b_rectexistsleft) = S ((S (jt_i_rectexistsleft)) * B)) /\ exists fs_q_jt_rectexistsleftfirstcode. A = fs_q_jt_rectexistsleftfirstcode * S ((S (jt_i_rectexistsleft)) * B) + (jt_b_rectexistsleft))) /\ (((exists fs_h_jt_rectexistsleftfirstscale. fs_h_jt_rectexistsleftfirstscale + S (jt_c_rectexistsleft) = S ((S (jt_i_rectexistsleft)) * D)) /\ exists fs_q_jt_rectexistsleftfirstscale. C = fs_q_jt_rectexistsleftfirstscale * S ((S (jt_i_rectexistsleft)) * D) + (jt_c_rectexistsleft))))) -> (((((exists fs_h_jt_rectexistsleftsecondcode. fs_h_jt_rectexistsleftsecondcode + S (jt_d_rectexistsleft) = S ((S (jt_h_rectexistsleft)) * B)) /\ exists fs_q_jt_rectexistsleftsecondcode. A = fs_q_jt_rectexistsleftsecondcode * S ((S (jt_h_rectexistsleft)) * B) + (jt_d_rectexistsleft))) /\ (((exists fs_h_jt_rectexistsleftsecondscale. fs_h_jt_rectexistsleftsecondscale + S (jt_e_rectexistsleft) = S ((S (jt_h_rectexistsleft)) * D)) /\ exists fs_q_jt_rectexistsleftsecondscale. C = fs_q_jt_rectexistsleftsecondscale * S ((S (jt_h_rectexistsleft)) * D) + (jt_e_rectexistsleft))))) -> (forall jt_index_rectexistsleftsame jt_left_rectexistsleftsame jt_right_rectexistsleftsame. (exists jt_gap_rectexistsleftsameindex. jt_gap_rectexistsleftsameindex+S (jt_index_rectexistsleftsame)=(k)) -> (((exists fs_h_jt_rectexistsleftsameleft. fs_h_jt_rectexistsleftsameleft + S (jt_left_rectexistsleftsame) = S ((S (jt_index_rectexistsleftsame)) * jt_c_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftsameleft. jt_b_rectexistsleft = fs_q_jt_rectexistsleftsameleft * S ((S (jt_index_rectexistsleftsame)) * jt_c_rectexistsleft) + (jt_left_rectexistsleftsame))) -> (((exists fs_h_jt_rectexistsleftsameright. fs_h_jt_rectexistsleftsameright + S (jt_right_rectexistsleftsame) = S ((S (jt_index_rectexistsleftsame)) * jt_e_rectexistsleft)) /\ exists fs_q_jt_rectexistsleftsameright. jt_d_rectexistsleft = fs_q_jt_rectexistsleftsameright * S ((S (jt_index_rectexistsleftsame)) * jt_e_rectexistsleft) + (jt_right_rectexistsleftsame))) -> jt_left_rectexistsleftsame=jt_right_rectexistsleftsame) -> jt_i_rectexistsleft=jt_h_rectexistsleft))))) -> (((forall jt_i_rectexistsright. (exists jt_gap_rectexistsrightsoundindex. jt_gap_rectexistsrightsoundindex+S (jt_i_rectexistsright)=(v)) -> exists jt_b_rectexistsright jt_c_rectexistsright. ((((((exists fs_h_jt_rectexistsrightsoundcode. fs_h_jt_rectexistsrightsoundcode + S (jt_b_rectexistsright) = S ((S (jt_i_rectexistsright)) * F)) /\ exists fs_q_jt_rectexistsrightsoundcode. E = fs_q_jt_rectexistsrightsoundcode * S ((S (jt_i_rectexistsright)) * F) + (jt_b_rectexistsright))) /\ (((exists fs_h_jt_rectexistsrightsoundscale. fs_h_jt_rectexistsrightsoundscale + S (jt_c_rectexistsright) = S ((S (jt_i_rectexistsright)) * H)) /\ exists fs_q_jt_rectexistsrightsoundscale. G = fs_q_jt_rectexistsrightsoundscale * S ((S (jt_i_rectexistsright)) * H) + (jt_c_rectexistsright))))) /\ (((forall jt_index_rectexistsrightbound. (exists jt_gap_rectexistsrightboundindex. jt_gap_rectexistsrightboundindex+S (jt_index_rectexistsrightbound)=(k)) -> exists jt_value_rectexistsrightbound. ((((exists fs_h_jt_rectexistsrightboundat. fs_h_jt_rectexistsrightboundat + S (jt_value_rectexistsrightbound) = S ((S (jt_index_rectexistsrightbound)) * jt_c_rectexistsright)) /\ exists fs_q_jt_rectexistsrightboundat. jt_b_rectexistsright = fs_q_jt_rectexistsrightboundat * S ((S (jt_index_rectexistsrightbound)) * jt_c_rectexistsright) + (jt_value_rectexistsrightbound))) /\ (exists jt_gap_rectexistsrightboundvalue. jt_gap_rectexistsrightboundvalue+S (jt_value_rectexistsrightbound)=(n)))) /\ (forall jt_divisor_rectexistsrightprimitive. (exists jt_factor_rectexistsrightprimitivemodulus. (n)=(jt_divisor_rectexistsrightprimitive)*jt_factor_rectexistsrightprimitivemodulus) -> (forall jt_index_rectexistsrightprimitivecoordinates jt_value_rectexistsrightprimitivecoordinates. (exists jt_gap_rectexistsrightprimitivecoordinatesindex. jt_gap_rectexistsrightprimitivecoordinatesindex+S (jt_index_rectexistsrightprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectexistsrightprimitivecoordinatesat. fs_h_jt_rectexistsrightprimitivecoordinatesat + S (jt_value_rectexistsrightprimitivecoordinates) = S ((S (jt_index_rectexistsrightprimitivecoordinates)) * jt_c_rectexistsright)) /\ exists fs_q_jt_rectexistsrightprimitivecoordinatesat. jt_b_rectexistsright = fs_q_jt_rectexistsrightprimitivecoordinatesat * S ((S (jt_index_rectexistsrightprimitivecoordinates)) * jt_c_rectexistsright) + (jt_value_rectexistsrightprimitivecoordinates))) -> (exists jt_factor_rectexistsrightprimitivecoordinatesdivides. (jt_value_rectexistsrightprimitivecoordinates)=(jt_divisor_rectexistsrightprimitive)*jt_factor_rectexistsrightprimitivecoordinatesdivides)) -> jt_divisor_rectexistsrightprimitive=1))))) /\ (((forall jt_b_rectexistsright jt_c_rectexistsright. (forall jt_index_rectexistsrightinputbound. (exists jt_gap_rectexistsrightinputboundindex. jt_gap_rectexistsrightinputboundindex+S (jt_index_rectexistsrightinputbound)=(k)) -> exists jt_value_rectexistsrightinputbound. ((((exists fs_h_jt_rectexistsrightinputboundat. fs_h_jt_rectexistsrightinputboundat + S (jt_value_rectexistsrightinputbound) = S ((S (jt_index_rectexistsrightinputbound)) * jt_c_rectexistsright)) /\ exists fs_q_jt_rectexistsrightinputboundat. jt_b_rectexistsright = fs_q_jt_rectexistsrightinputboundat * S ((S (jt_index_rectexistsrightinputbound)) * jt_c_rectexistsright) + (jt_value_rectexistsrightinputbound))) /\ (exists jt_gap_rectexistsrightinputboundvalue. jt_gap_rectexistsrightinputboundvalue+S (jt_value_rectexistsrightinputbound)=(n)))) -> (forall jt_divisor_rectexistsrightinputprimitive. (exists jt_factor_rectexistsrightinputprimitivemodulus. (n)=(jt_divisor_rectexistsrightinputprimitive)*jt_factor_rectexistsrightinputprimitivemodulus) -> (forall jt_index_rectexistsrightinputprimitivecoordinates jt_value_rectexistsrightinputprimitivecoordinates. (exists jt_gap_rectexistsrightinputprimitivecoordinatesindex. jt_gap_rectexistsrightinputprimitivecoordinatesindex+S (jt_index_rectexistsrightinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectexistsrightinputprimitivecoordinatesat. fs_h_jt_rectexistsrightinputprimitivecoordinatesat + S (jt_value_rectexistsrightinputprimitivecoordinates) = S ((S (jt_index_rectexistsrightinputprimitivecoordinates)) * jt_c_rectexistsright)) /\ exists fs_q_jt_rectexistsrightinputprimitivecoordinatesat. jt_b_rectexistsright = fs_q_jt_rectexistsrightinputprimitivecoordinatesat * S ((S (jt_index_rectexistsrightinputprimitivecoordinates)) * jt_c_rectexistsright) + (jt_value_rectexistsrightinputprimitivecoordinates))) -> (exists jt_factor_rectexistsrightinputprimitivecoordinatesdivides. (jt_value_rectexistsrightinputprimitivecoordinates)=(jt_divisor_rectexistsrightinputprimitive)*jt_factor_rectexistsrightinputprimitivecoordinatesdivides)) -> jt_divisor_rectexistsrightinputprimitive=1) -> exists jt_i_rectexistsright jt_d_rectexistsright jt_e_rectexistsright. ((exists jt_gap_rectexistsrightcompleteindex. jt_gap_rectexistsrightcompleteindex+S (jt_i_rectexistsright)=(v)) /\ (((((((exists fs_h_jt_rectexistsrightcompletecode. fs_h_jt_rectexistsrightcompletecode + S (jt_d_rectexistsright) = S ((S (jt_i_rectexistsright)) * F)) /\ exists fs_q_jt_rectexistsrightcompletecode. E = fs_q_jt_rectexistsrightcompletecode * S ((S (jt_i_rectexistsright)) * F) + (jt_d_rectexistsright))) /\ (((exists fs_h_jt_rectexistsrightcompletescale. fs_h_jt_rectexistsrightcompletescale + S (jt_e_rectexistsright) = S ((S (jt_i_rectexistsright)) * H)) /\ exists fs_q_jt_rectexistsrightcompletescale. G = fs_q_jt_rectexistsrightcompletescale * S ((S (jt_i_rectexistsright)) * H) + (jt_e_rectexistsright))))) /\ (forall jt_index_rectexistsrightrepresented jt_left_rectexistsrightrepresented jt_right_rectexistsrightrepresented. (exists jt_gap_rectexistsrightrepresentedindex. jt_gap_rectexistsrightrepresentedindex+S (jt_index_rectexistsrightrepresented)=(k)) -> (((exists fs_h_jt_rectexistsrightrepresentedleft. fs_h_jt_rectexistsrightrepresentedleft + S (jt_left_rectexistsrightrepresented) = S ((S (jt_index_rectexistsrightrepresented)) * jt_c_rectexistsright)) /\ exists fs_q_jt_rectexistsrightrepresentedleft. jt_b_rectexistsright = fs_q_jt_rectexistsrightrepresentedleft * S ((S (jt_index_rectexistsrightrepresented)) * jt_c_rectexistsright) + (jt_left_rectexistsrightrepresented))) -> (((exists fs_h_jt_rectexistsrightrepresentedright. fs_h_jt_rectexistsrightrepresentedright + S (jt_right_rectexistsrightrepresented) = S ((S (jt_index_rectexistsrightrepresented)) * jt_e_rectexistsright)) /\ exists fs_q_jt_rectexistsrightrepresentedright. jt_d_rectexistsright = fs_q_jt_rectexistsrightrepresentedright * S ((S (jt_index_rectexistsrightrepresented)) * jt_e_rectexistsright) + (jt_right_rectexistsrightrepresented))) -> jt_left_rectexistsrightrepresented=jt_right_rectexistsrightrepresented))))) /\ (forall jt_i_rectexistsright jt_h_rectexistsright jt_b_rectexistsright jt_c_rectexistsright jt_d_rectexistsright jt_e_rectexistsright. (exists jt_gap_rectexistsrightfirstindex. jt_gap_rectexistsrightfirstindex+S (jt_i_rectexistsright)=(v)) -> (exists jt_gap_rectexistsrightsecondindex. jt_gap_rectexistsrightsecondindex+S (jt_h_rectexistsright)=(v)) -> (((((exists fs_h_jt_rectexistsrightfirstcode. fs_h_jt_rectexistsrightfirstcode + S (jt_b_rectexistsright) = S ((S (jt_i_rectexistsright)) * F)) /\ exists fs_q_jt_rectexistsrightfirstcode. E = fs_q_jt_rectexistsrightfirstcode * S ((S (jt_i_rectexistsright)) * F) + (jt_b_rectexistsright))) /\ (((exists fs_h_jt_rectexistsrightfirstscale. fs_h_jt_rectexistsrightfirstscale + S (jt_c_rectexistsright) = S ((S (jt_i_rectexistsright)) * H)) /\ exists fs_q_jt_rectexistsrightfirstscale. G = fs_q_jt_rectexistsrightfirstscale * S ((S (jt_i_rectexistsright)) * H) + (jt_c_rectexistsright))))) -> (((((exists fs_h_jt_rectexistsrightsecondcode. fs_h_jt_rectexistsrightsecondcode + S (jt_d_rectexistsright) = S ((S (jt_h_rectexistsright)) * F)) /\ exists fs_q_jt_rectexistsrightsecondcode. E = fs_q_jt_rectexistsrightsecondcode * S ((S (jt_h_rectexistsright)) * F) + (jt_d_rectexistsright))) /\ (((exists fs_h_jt_rectexistsrightsecondscale. fs_h_jt_rectexistsrightsecondscale + S (jt_e_rectexistsright) = S ((S (jt_h_rectexistsright)) * H)) /\ exists fs_q_jt_rectexistsrightsecondscale. G = fs_q_jt_rectexistsrightsecondscale * S ((S (jt_h_rectexistsright)) * H) + (jt_e_rectexistsright))))) -> (forall jt_index_rectexistsrightsame jt_left_rectexistsrightsame jt_right_rectexistsrightsame. (exists jt_gap_rectexistsrightsameindex. jt_gap_rectexistsrightsameindex+S (jt_index_rectexistsrightsame)=(k)) -> (((exists fs_h_jt_rectexistsrightsameleft. fs_h_jt_rectexistsrightsameleft + S (jt_left_rectexistsrightsame) = S ((S (jt_index_rectexistsrightsame)) * jt_c_rectexistsright)) /\ exists fs_q_jt_rectexistsrightsameleft. jt_b_rectexistsright = fs_q_jt_rectexistsrightsameleft * S ((S (jt_index_rectexistsrightsame)) * jt_c_rectexistsright) + (jt_left_rectexistsrightsame))) -> (((exists fs_h_jt_rectexistsrightsameright. fs_h_jt_rectexistsrightsameright + S (jt_right_rectexistsrightsame) = S ((S (jt_index_rectexistsrightsame)) * jt_e_rectexistsright)) /\ exists fs_q_jt_rectexistsrightsameright. jt_d_rectexistsright = fs_q_jt_rectexistsrightsameright * S ((S (jt_index_rectexistsrightsame)) * jt_e_rectexistsright) + (jt_right_rectexistsrightsame))) -> jt_left_rectexistsrightsame=jt_right_rectexistsrightsame) -> jt_i_rectexistsright=jt_h_rectexistsright))))) -> forall q. (exists jt_gap_rectexistsbound. jt_gap_rectexistsbound+(q)=(u*v)) -> exists P Q R T. forall jt_index_rectexiststarget. (exists jt_gap_rectexiststargetindex. jt_gap_rectexiststargetindex+S (jt_index_rectexiststarget)=(q)) -> exists jt_row_rectexiststarget jt_column_rectexiststarget jt_b_rectexiststarget jt_c_rectexiststarget jt_d_rectexiststarget jt_e_rectexiststarget jt_f_rectexiststarget jt_g_rectexiststarget. ((exists jt_gap_rectexiststargetrow. jt_gap_rectexiststargetrow+S (jt_row_rectexiststarget)=(u)) /\ (((exists jt_gap_rectexiststargetcolumn. jt_gap_rectexiststargetcolumn+S (jt_column_rectexiststarget)=(v)) /\ (((jt_index_rectexiststarget=(v)*jt_row_rectexiststarget+jt_column_rectexiststarget) /\ (((((((exists fs_h_jt_rectexiststargetleftcode. fs_h_jt_rectexiststargetleftcode + S (jt_b_rectexiststarget) = S ((S (jt_row_rectexiststarget)) * B)) /\ exists fs_q_jt_rectexiststargetleftcode. A = fs_q_jt_rectexiststargetleftcode * S ((S (jt_row_rectexiststarget)) * B) + (jt_b_rectexiststarget))) /\ (((exists fs_h_jt_rectexiststargetleftscale. fs_h_jt_rectexiststargetleftscale + S (jt_c_rectexiststarget) = S ((S (jt_row_rectexiststarget)) * D)) /\ exists fs_q_jt_rectexiststargetleftscale. C = fs_q_jt_rectexiststargetleftscale * S ((S (jt_row_rectexiststarget)) * D) + (jt_c_rectexiststarget))))) /\ (((((((exists fs_h_jt_rectexiststargetrightcode. fs_h_jt_rectexiststargetrightcode + S (jt_d_rectexiststarget) = S ((S (jt_column_rectexiststarget)) * F)) /\ exists fs_q_jt_rectexiststargetrightcode. E = fs_q_jt_rectexiststargetrightcode * S ((S (jt_column_rectexiststarget)) * F) + (jt_d_rectexiststarget))) /\ (((exists fs_h_jt_rectexiststargetrightscale. fs_h_jt_rectexiststargetrightscale + S (jt_e_rectexiststarget) = S ((S (jt_column_rectexiststarget)) * H)) /\ exists fs_q_jt_rectexiststargetrightscale. G = fs_q_jt_rectexiststargetrightscale * S ((S (jt_column_rectexiststarget)) * H) + (jt_e_rectexiststarget))))) /\ (((((((exists fs_h_jt_rectexiststargetoutputcode. fs_h_jt_rectexiststargetoutputcode + S (jt_f_rectexiststarget) = S ((S (jt_index_rectexiststarget)) * Q)) /\ exists fs_q_jt_rectexiststargetoutputcode. P = fs_q_jt_rectexiststargetoutputcode * S ((S (jt_index_rectexiststarget)) * Q) + (jt_f_rectexiststarget))) /\ (((exists fs_h_jt_rectexiststargetoutputscale. fs_h_jt_rectexiststargetoutputscale + S (jt_g_rectexiststarget) = S ((S (jt_index_rectexiststarget)) * T)) /\ exists fs_q_jt_rectexiststargetoutputscale. R = fs_q_jt_rectexiststargetoutputscale * S ((S (jt_index_rectexiststarget)) * T) + (jt_g_rectexiststarget))))) /\ (((((forall jt_index_rectexiststargetcrtbound. (exists jt_gap_rectexiststargetcrtboundindex. jt_gap_rectexiststargetcrtboundindex+S (jt_index_rectexiststargetcrtbound)=(k)) -> exists jt_value_rectexiststargetcrtbound. ((((exists fs_h_jt_rectexiststargetcrtboundat. fs_h_jt_rectexiststargetcrtboundat + S (jt_value_rectexiststargetcrtbound) = S ((S (jt_index_rectexiststargetcrtbound)) * jt_g_rectexiststarget)) /\ exists fs_q_jt_rectexiststargetcrtboundat. jt_f_rectexiststarget = fs_q_jt_rectexiststargetcrtboundat * S ((S (jt_index_rectexiststargetcrtbound)) * jt_g_rectexiststarget) + (jt_value_rectexiststargetcrtbound))) /\ (exists jt_gap_rectexiststargetcrtboundvalue. jt_gap_rectexiststargetcrtboundvalue+S (jt_value_rectexiststargetcrtbound)=(m*n)))) /\ (((forall jt_index_rectexiststargetcrtleft jt_left_rectexiststargetcrtleft jt_right_rectexiststargetcrtleft. (exists jt_gap_rectexiststargetcrtleftindex. jt_gap_rectexiststargetcrtleftindex+S (jt_index_rectexiststargetcrtleft)=(k)) -> (((exists fs_h_jt_rectexiststargetcrtleftleft. fs_h_jt_rectexiststargetcrtleftleft + S (jt_left_rectexiststargetcrtleft) = S ((S (jt_index_rectexiststargetcrtleft)) * jt_g_rectexiststarget)) /\ exists fs_q_jt_rectexiststargetcrtleftleft. jt_f_rectexiststarget = fs_q_jt_rectexiststargetcrtleftleft * S ((S (jt_index_rectexiststargetcrtleft)) * jt_g_rectexiststarget) + (jt_left_rectexiststargetcrtleft))) -> (((exists fs_h_jt_rectexiststargetcrtleftright. fs_h_jt_rectexiststargetcrtleftright + S (jt_right_rectexiststargetcrtleft) = S ((S (jt_index_rectexiststargetcrtleft)) * jt_c_rectexiststarget)) /\ exists fs_q_jt_rectexiststargetcrtleftright. jt_b_rectexiststarget = fs_q_jt_rectexiststargetcrtleftright * S ((S (jt_index_rectexiststargetcrtleft)) * jt_c_rectexiststarget) + (jt_right_rectexiststargetcrtleft))) -> (exists jt_left_rectexiststargetcrtleftmod jt_right_rectexiststargetcrtleftmod. (jt_left_rectexiststargetcrtleft)+(m)*jt_left_rectexiststargetcrtleftmod=(jt_right_rectexiststargetcrtleft)+(m)*jt_right_rectexiststargetcrtleftmod)) /\ (forall jt_index_rectexiststargetcrtright jt_left_rectexiststargetcrtright jt_right_rectexiststargetcrtright. (exists jt_gap_rectexiststargetcrtrightindex. jt_gap_rectexiststargetcrtrightindex+S (jt_index_rectexiststargetcrtright)=(k)) -> (((exists fs_h_jt_rectexiststargetcrtrightleft. fs_h_jt_rectexiststargetcrtrightleft + S (jt_left_rectexiststargetcrtright) = S ((S (jt_index_rectexiststargetcrtright)) * jt_g_rectexiststarget)) /\ exists fs_q_jt_rectexiststargetcrtrightleft. jt_f_rectexiststarget = fs_q_jt_rectexiststargetcrtrightleft * S ((S (jt_index_rectexiststargetcrtright)) * jt_g_rectexiststarget) + (jt_left_rectexiststargetcrtright))) -> (((exists fs_h_jt_rectexiststargetcrtrightright. fs_h_jt_rectexiststargetcrtrightright + S (jt_right_rectexiststargetcrtright) = S ((S (jt_index_rectexiststargetcrtright)) * jt_e_rectexiststarget)) /\ exists fs_q_jt_rectexiststargetcrtrightright. jt_d_rectexiststarget = fs_q_jt_rectexiststargetcrtrightright * S ((S (jt_index_rectexiststargetcrtright)) * jt_e_rectexiststarget) + (jt_right_rectexiststargetcrtright))) -> (exists jt_left_rectexiststargetcrtrightmod jt_right_rectexiststargetcrtrightmod. (jt_left_rectexiststargetcrtright)+(n)*jt_left_rectexiststargetcrtrightmod=(jt_right_rectexiststargetcrtright)+(n)*jt_right_rectexiststargetcrtrightmod)))))) /\ (forall jt_divisor_rectexiststargetprimitive. (exists jt_factor_rectexiststargetprimitivemodulus. (m*n)=(jt_divisor_rectexiststargetprimitive)*jt_factor_rectexiststargetprimitivemodulus) -> (forall jt_index_rectexiststargetprimitivecoordinates jt_value_rectexiststargetprimitivecoordinates. (exists jt_gap_rectexiststargetprimitivecoordinatesindex. jt_gap_rectexiststargetprimitivecoordinatesindex+S (jt_index_rectexiststargetprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectexiststargetprimitivecoordinatesat. fs_h_jt_rectexiststargetprimitivecoordinatesat + S (jt_value_rectexiststargetprimitivecoordinates) = S ((S (jt_index_rectexiststargetprimitivecoordinates)) * jt_g_rectexiststarget)) /\ exists fs_q_jt_rectexiststargetprimitivecoordinatesat. jt_f_rectexiststarget = fs_q_jt_rectexiststargetprimitivecoordinatesat * S ((S (jt_index_rectexiststargetprimitivecoordinates)) * jt_g_rectexiststarget) + (jt_value_rectexiststargetprimitivecoordinates))) -> (exists jt_factor_rectexiststargetprimitivecoordinatesdivides. (jt_value_rectexiststargetprimitivecoordinates)=(jt_divisor_rectexiststargetprimitive)*jt_factor_rectexiststargetprimitivecoordinatesdivides)) -> jt_divisor_rectexiststargetprimitive=1))))))))))))))

Complete tactic proof in conservative notation

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

65 script commands · 12 reading checkpoints · 1 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 (1)
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–18

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 hm
  5. L15
    intro hn
  6. L16
    intro hcop
  7. L17
    intro hleft
  8. L18
    intro hright
03Induction on qL19–20

Split the argument into the base and successor obligations. The induction hypothesis is available only in the successor branch.

  1. L19
    induction q
  2. L20
    intro hq
04Construct an explicit witnessL21–24

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

  1. L21
    exists 0
  2. L22
    exists 0
  3. L23
    exists 0
  4. L24
    exists 0
05Fix variables and assumptionsL25–26

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

  1. L25
    intro p
  2. L26
    intro hp
06Separate the logical casesL27–27

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

  1. L27
    exfalso
07Use earlier factsL28–33

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

  1. L28
    specialize lt_not_le (p)
  2. L29
    specialize lt_not_le (0)
  3. L30
    apply lt_not_le
  4. L31
    exact hp
  5. L32
    specialize zero_le (p)
  6. L33
    apply zero_le
08Fix variables and assumptionsL34–34

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

  1. L34
    intro hq
09Establish holdL35–44

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

  1. L35
    have hold : ∃ P. ∃ Q. ∃ R. ∃ T. JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,P,Q,R,T,q)Definitions: JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,P,Q,R,T,q)Original native command in the exact edition
  2. L36
    apply IH
  3. L37
    specialize le_trans (q)
  4. L38
    specialize le_trans (S q)
  5. L39
    specialize le_trans (u*v)
  6. L40
    apply le_trans
  7. L41
    specialize le_succ_self (q)
  8. L42
    apply le_succ_self
  9. L43
    exact hq
  10. L44
    specialize jordan_rectangle_crt_successor (m)
10Use earlier factsL45–54

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

  1. L45
    specialize jordan_rectangle_crt_successor (n)
  2. L46
    specialize jordan_rectangle_crt_successor (k)
  3. L47
    specialize jordan_rectangle_crt_successor (A)
  4. L48
    specialize jordan_rectangle_crt_successor (B)
  5. L49
    specialize jordan_rectangle_crt_successor (C)
  6. L50
    specialize jordan_rectangle_crt_successor (D)
  7. L51
    specialize jordan_rectangle_crt_successor (u)
  8. L52
    specialize jordan_rectangle_crt_successor (E)
  9. L53
    specialize jordan_rectangle_crt_successor (F)
  10. L54
    specialize jordan_rectangle_crt_successor (G)
11Use earlier factsL55–64

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

  1. L55
    specialize jordan_rectangle_crt_successor (H)
  2. L56
    specialize jordan_rectangle_crt_successor (v)
  3. L57
    specialize jordan_rectangle_crt_successor (q)
  4. L58
    apply jordan_rectangle_crt_successor
  5. L59
    exact hm
  6. L60
    exact hn
  7. L61
    exact hcop
  8. L62
    exact hleft
  9. L63
    exact hright
  10. L64
    exact hold
12Use earlier factsL65–65

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

  1. L65
    exact hq

Library-wide reading audit

Original defined command ledger · 65 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 hm
  15. 0015intro hn
  16. 0016intro hcop
  17. 0017intro hleft
  18. 0018intro hright
  19. 0019induction q
  20. 0020intro hq
  21. 0021exists 0
  22. 0022exists 0
  23. 0023exists 0
  24. 0024exists 0
  25. 0025intro p
  26. 0026intro hp
  27. 0027exfalso
  28. 0028specialize lt_not_le (p)
  29. 0029specialize lt_not_le (0)
  30. 0030apply lt_not_le
  31. 0031exact hp
  32. 0032specialize zero_le (p)
  33. 0033apply zero_le
  34. 0034intro hq
  35. 0035have hold : ∃ P. ∃ Q. ∃ R. ∃ T. JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,P,Q,R,T,q)
  36. 0036apply IH
  37. 0037specialize le_trans (q)
  38. 0038specialize le_trans (S q)
  39. 0039specialize le_trans (u*v)
  40. 0040apply le_trans
  41. 0041specialize le_succ_self (q)
  42. 0042apply le_succ_self
  43. 0043exact hq
  44. 0044specialize jordan_rectangle_crt_successor (m)
  45. 0045specialize jordan_rectangle_crt_successor (n)
  46. 0046specialize jordan_rectangle_crt_successor (k)
  47. 0047specialize jordan_rectangle_crt_successor (A)
  48. 0048specialize jordan_rectangle_crt_successor (B)
  49. 0049specialize jordan_rectangle_crt_successor (C)
  50. 0050specialize jordan_rectangle_crt_successor (D)
  51. 0051specialize jordan_rectangle_crt_successor (u)
  52. 0052specialize jordan_rectangle_crt_successor (E)
  53. 0053specialize jordan_rectangle_crt_successor (F)
  54. 0054specialize jordan_rectangle_crt_successor (G)
  55. 0055specialize jordan_rectangle_crt_successor (H)
  56. 0056specialize jordan_rectangle_crt_successor (v)
  57. 0057specialize jordan_rectangle_crt_successor (q)
  58. 0058apply jordan_rectangle_crt_successor
  59. 0059exact hm
  60. 0060exact hn
  61. 0061exact hcop
  62. 0062exact hleft
  63. 0063exact hright
  64. 0064exact hold
  65. 0065exact hq