JT0048

jordan_rectangle_crt_enumeration

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

The constructed table is a duplicate-free exhaustive primitive tuple enumeration of literal length u*v.

Exact expanded first-order arithmetic statement

forall m n k A B C D u E F G H v P Q R T. ~(m=0) -> ~(n=0) -> (forall jt_divisor_rectenumcop. (exists jt_factor_rectenumcopa. (m)=(jt_divisor_rectenumcop)*jt_factor_rectenumcopa) -> (exists jt_factor_rectenumcopb. (n)=(jt_divisor_rectenumcop)*jt_factor_rectenumcopb) -> jt_divisor_rectenumcop=1) -> (((forall jt_i_enumleft. (exists jt_gap_enumleftsoundindex. jt_gap_enumleftsoundindex+S (jt_i_enumleft)=(u)) -> exists jt_b_enumleft jt_c_enumleft. ((((((exists fs_h_jt_enumleftsoundcode. fs_h_jt_enumleftsoundcode + S (jt_b_enumleft) = S ((S (jt_i_enumleft)) * B)) /\ exists fs_q_jt_enumleftsoundcode. A = fs_q_jt_enumleftsoundcode * S ((S (jt_i_enumleft)) * B) + (jt_b_enumleft))) /\ (((exists fs_h_jt_enumleftsoundscale. fs_h_jt_enumleftsoundscale + S (jt_c_enumleft) = S ((S (jt_i_enumleft)) * D)) /\ exists fs_q_jt_enumleftsoundscale. C = fs_q_jt_enumleftsoundscale * S ((S (jt_i_enumleft)) * D) + (jt_c_enumleft))))) /\ (((forall jt_index_enumleftbound. (exists jt_gap_enumleftboundindex. jt_gap_enumleftboundindex+S (jt_index_enumleftbound)=(k)) -> exists jt_value_enumleftbound. ((((exists fs_h_jt_enumleftboundat. fs_h_jt_enumleftboundat + S (jt_value_enumleftbound) = S ((S (jt_index_enumleftbound)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftboundat. jt_b_enumleft = fs_q_jt_enumleftboundat * S ((S (jt_index_enumleftbound)) * jt_c_enumleft) + (jt_value_enumleftbound))) /\ (exists jt_gap_enumleftboundvalue. jt_gap_enumleftboundvalue+S (jt_value_enumleftbound)=(m)))) /\ (forall jt_divisor_enumleftprimitive. (exists jt_factor_enumleftprimitivemodulus. (m)=(jt_divisor_enumleftprimitive)*jt_factor_enumleftprimitivemodulus) -> (forall jt_index_enumleftprimitivecoordinates jt_value_enumleftprimitivecoordinates. (exists jt_gap_enumleftprimitivecoordinatesindex. jt_gap_enumleftprimitivecoordinatesindex+S (jt_index_enumleftprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumleftprimitivecoordinatesat. fs_h_jt_enumleftprimitivecoordinatesat + S (jt_value_enumleftprimitivecoordinates) = S ((S (jt_index_enumleftprimitivecoordinates)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftprimitivecoordinatesat. jt_b_enumleft = fs_q_jt_enumleftprimitivecoordinatesat * S ((S (jt_index_enumleftprimitivecoordinates)) * jt_c_enumleft) + (jt_value_enumleftprimitivecoordinates))) -> (exists jt_factor_enumleftprimitivecoordinatesdivides. (jt_value_enumleftprimitivecoordinates)=(jt_divisor_enumleftprimitive)*jt_factor_enumleftprimitivecoordinatesdivides)) -> jt_divisor_enumleftprimitive=1))))) /\ (((forall jt_b_enumleft jt_c_enumleft. (forall jt_index_enumleftinputbound. (exists jt_gap_enumleftinputboundindex. jt_gap_enumleftinputboundindex+S (jt_index_enumleftinputbound)=(k)) -> exists jt_value_enumleftinputbound. ((((exists fs_h_jt_enumleftinputboundat. fs_h_jt_enumleftinputboundat + S (jt_value_enumleftinputbound) = S ((S (jt_index_enumleftinputbound)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftinputboundat. jt_b_enumleft = fs_q_jt_enumleftinputboundat * S ((S (jt_index_enumleftinputbound)) * jt_c_enumleft) + (jt_value_enumleftinputbound))) /\ (exists jt_gap_enumleftinputboundvalue. jt_gap_enumleftinputboundvalue+S (jt_value_enumleftinputbound)=(m)))) -> (forall jt_divisor_enumleftinputprimitive. (exists jt_factor_enumleftinputprimitivemodulus. (m)=(jt_divisor_enumleftinputprimitive)*jt_factor_enumleftinputprimitivemodulus) -> (forall jt_index_enumleftinputprimitivecoordinates jt_value_enumleftinputprimitivecoordinates. (exists jt_gap_enumleftinputprimitivecoordinatesindex. jt_gap_enumleftinputprimitivecoordinatesindex+S (jt_index_enumleftinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumleftinputprimitivecoordinatesat. fs_h_jt_enumleftinputprimitivecoordinatesat + S (jt_value_enumleftinputprimitivecoordinates) = S ((S (jt_index_enumleftinputprimitivecoordinates)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftinputprimitivecoordinatesat. jt_b_enumleft = fs_q_jt_enumleftinputprimitivecoordinatesat * S ((S (jt_index_enumleftinputprimitivecoordinates)) * jt_c_enumleft) + (jt_value_enumleftinputprimitivecoordinates))) -> (exists jt_factor_enumleftinputprimitivecoordinatesdivides. (jt_value_enumleftinputprimitivecoordinates)=(jt_divisor_enumleftinputprimitive)*jt_factor_enumleftinputprimitivecoordinatesdivides)) -> jt_divisor_enumleftinputprimitive=1) -> exists jt_i_enumleft jt_d_enumleft jt_e_enumleft. ((exists jt_gap_enumleftcompleteindex. jt_gap_enumleftcompleteindex+S (jt_i_enumleft)=(u)) /\ (((((((exists fs_h_jt_enumleftcompletecode. fs_h_jt_enumleftcompletecode + S (jt_d_enumleft) = S ((S (jt_i_enumleft)) * B)) /\ exists fs_q_jt_enumleftcompletecode. A = fs_q_jt_enumleftcompletecode * S ((S (jt_i_enumleft)) * B) + (jt_d_enumleft))) /\ (((exists fs_h_jt_enumleftcompletescale. fs_h_jt_enumleftcompletescale + S (jt_e_enumleft) = S ((S (jt_i_enumleft)) * D)) /\ exists fs_q_jt_enumleftcompletescale. C = fs_q_jt_enumleftcompletescale * S ((S (jt_i_enumleft)) * D) + (jt_e_enumleft))))) /\ (forall jt_index_enumleftrepresented jt_left_enumleftrepresented jt_right_enumleftrepresented. (exists jt_gap_enumleftrepresentedindex. jt_gap_enumleftrepresentedindex+S (jt_index_enumleftrepresented)=(k)) -> (((exists fs_h_jt_enumleftrepresentedleft. fs_h_jt_enumleftrepresentedleft + S (jt_left_enumleftrepresented) = S ((S (jt_index_enumleftrepresented)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftrepresentedleft. jt_b_enumleft = fs_q_jt_enumleftrepresentedleft * S ((S (jt_index_enumleftrepresented)) * jt_c_enumleft) + (jt_left_enumleftrepresented))) -> (((exists fs_h_jt_enumleftrepresentedright. fs_h_jt_enumleftrepresentedright + S (jt_right_enumleftrepresented) = S ((S (jt_index_enumleftrepresented)) * jt_e_enumleft)) /\ exists fs_q_jt_enumleftrepresentedright. jt_d_enumleft = fs_q_jt_enumleftrepresentedright * S ((S (jt_index_enumleftrepresented)) * jt_e_enumleft) + (jt_right_enumleftrepresented))) -> jt_left_enumleftrepresented=jt_right_enumleftrepresented))))) /\ (forall jt_i_enumleft jt_h_enumleft jt_b_enumleft jt_c_enumleft jt_d_enumleft jt_e_enumleft. (exists jt_gap_enumleftfirstindex. jt_gap_enumleftfirstindex+S (jt_i_enumleft)=(u)) -> (exists jt_gap_enumleftsecondindex. jt_gap_enumleftsecondindex+S (jt_h_enumleft)=(u)) -> (((((exists fs_h_jt_enumleftfirstcode. fs_h_jt_enumleftfirstcode + S (jt_b_enumleft) = S ((S (jt_i_enumleft)) * B)) /\ exists fs_q_jt_enumleftfirstcode. A = fs_q_jt_enumleftfirstcode * S ((S (jt_i_enumleft)) * B) + (jt_b_enumleft))) /\ (((exists fs_h_jt_enumleftfirstscale. fs_h_jt_enumleftfirstscale + S (jt_c_enumleft) = S ((S (jt_i_enumleft)) * D)) /\ exists fs_q_jt_enumleftfirstscale. C = fs_q_jt_enumleftfirstscale * S ((S (jt_i_enumleft)) * D) + (jt_c_enumleft))))) -> (((((exists fs_h_jt_enumleftsecondcode. fs_h_jt_enumleftsecondcode + S (jt_d_enumleft) = S ((S (jt_h_enumleft)) * B)) /\ exists fs_q_jt_enumleftsecondcode. A = fs_q_jt_enumleftsecondcode * S ((S (jt_h_enumleft)) * B) + (jt_d_enumleft))) /\ (((exists fs_h_jt_enumleftsecondscale. fs_h_jt_enumleftsecondscale + S (jt_e_enumleft) = S ((S (jt_h_enumleft)) * D)) /\ exists fs_q_jt_enumleftsecondscale. C = fs_q_jt_enumleftsecondscale * S ((S (jt_h_enumleft)) * D) + (jt_e_enumleft))))) -> (forall jt_index_enumleftsame jt_left_enumleftsame jt_right_enumleftsame. (exists jt_gap_enumleftsameindex. jt_gap_enumleftsameindex+S (jt_index_enumleftsame)=(k)) -> (((exists fs_h_jt_enumleftsameleft. fs_h_jt_enumleftsameleft + S (jt_left_enumleftsame) = S ((S (jt_index_enumleftsame)) * jt_c_enumleft)) /\ exists fs_q_jt_enumleftsameleft. jt_b_enumleft = fs_q_jt_enumleftsameleft * S ((S (jt_index_enumleftsame)) * jt_c_enumleft) + (jt_left_enumleftsame))) -> (((exists fs_h_jt_enumleftsameright. fs_h_jt_enumleftsameright + S (jt_right_enumleftsame) = S ((S (jt_index_enumleftsame)) * jt_e_enumleft)) /\ exists fs_q_jt_enumleftsameright. jt_d_enumleft = fs_q_jt_enumleftsameright * S ((S (jt_index_enumleftsame)) * jt_e_enumleft) + (jt_right_enumleftsame))) -> jt_left_enumleftsame=jt_right_enumleftsame) -> jt_i_enumleft=jt_h_enumleft))))) -> (((forall jt_i_enumright. (exists jt_gap_enumrightsoundindex. jt_gap_enumrightsoundindex+S (jt_i_enumright)=(v)) -> exists jt_b_enumright jt_c_enumright. ((((((exists fs_h_jt_enumrightsoundcode. fs_h_jt_enumrightsoundcode + S (jt_b_enumright) = S ((S (jt_i_enumright)) * F)) /\ exists fs_q_jt_enumrightsoundcode. E = fs_q_jt_enumrightsoundcode * S ((S (jt_i_enumright)) * F) + (jt_b_enumright))) /\ (((exists fs_h_jt_enumrightsoundscale. fs_h_jt_enumrightsoundscale + S (jt_c_enumright) = S ((S (jt_i_enumright)) * H)) /\ exists fs_q_jt_enumrightsoundscale. G = fs_q_jt_enumrightsoundscale * S ((S (jt_i_enumright)) * H) + (jt_c_enumright))))) /\ (((forall jt_index_enumrightbound. (exists jt_gap_enumrightboundindex. jt_gap_enumrightboundindex+S (jt_index_enumrightbound)=(k)) -> exists jt_value_enumrightbound. ((((exists fs_h_jt_enumrightboundat. fs_h_jt_enumrightboundat + S (jt_value_enumrightbound) = S ((S (jt_index_enumrightbound)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightboundat. jt_b_enumright = fs_q_jt_enumrightboundat * S ((S (jt_index_enumrightbound)) * jt_c_enumright) + (jt_value_enumrightbound))) /\ (exists jt_gap_enumrightboundvalue. jt_gap_enumrightboundvalue+S (jt_value_enumrightbound)=(n)))) /\ (forall jt_divisor_enumrightprimitive. (exists jt_factor_enumrightprimitivemodulus. (n)=(jt_divisor_enumrightprimitive)*jt_factor_enumrightprimitivemodulus) -> (forall jt_index_enumrightprimitivecoordinates jt_value_enumrightprimitivecoordinates. (exists jt_gap_enumrightprimitivecoordinatesindex. jt_gap_enumrightprimitivecoordinatesindex+S (jt_index_enumrightprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumrightprimitivecoordinatesat. fs_h_jt_enumrightprimitivecoordinatesat + S (jt_value_enumrightprimitivecoordinates) = S ((S (jt_index_enumrightprimitivecoordinates)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightprimitivecoordinatesat. jt_b_enumright = fs_q_jt_enumrightprimitivecoordinatesat * S ((S (jt_index_enumrightprimitivecoordinates)) * jt_c_enumright) + (jt_value_enumrightprimitivecoordinates))) -> (exists jt_factor_enumrightprimitivecoordinatesdivides. (jt_value_enumrightprimitivecoordinates)=(jt_divisor_enumrightprimitive)*jt_factor_enumrightprimitivecoordinatesdivides)) -> jt_divisor_enumrightprimitive=1))))) /\ (((forall jt_b_enumright jt_c_enumright. (forall jt_index_enumrightinputbound. (exists jt_gap_enumrightinputboundindex. jt_gap_enumrightinputboundindex+S (jt_index_enumrightinputbound)=(k)) -> exists jt_value_enumrightinputbound. ((((exists fs_h_jt_enumrightinputboundat. fs_h_jt_enumrightinputboundat + S (jt_value_enumrightinputbound) = S ((S (jt_index_enumrightinputbound)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightinputboundat. jt_b_enumright = fs_q_jt_enumrightinputboundat * S ((S (jt_index_enumrightinputbound)) * jt_c_enumright) + (jt_value_enumrightinputbound))) /\ (exists jt_gap_enumrightinputboundvalue. jt_gap_enumrightinputboundvalue+S (jt_value_enumrightinputbound)=(n)))) -> (forall jt_divisor_enumrightinputprimitive. (exists jt_factor_enumrightinputprimitivemodulus. (n)=(jt_divisor_enumrightinputprimitive)*jt_factor_enumrightinputprimitivemodulus) -> (forall jt_index_enumrightinputprimitivecoordinates jt_value_enumrightinputprimitivecoordinates. (exists jt_gap_enumrightinputprimitivecoordinatesindex. jt_gap_enumrightinputprimitivecoordinatesindex+S (jt_index_enumrightinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumrightinputprimitivecoordinatesat. fs_h_jt_enumrightinputprimitivecoordinatesat + S (jt_value_enumrightinputprimitivecoordinates) = S ((S (jt_index_enumrightinputprimitivecoordinates)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightinputprimitivecoordinatesat. jt_b_enumright = fs_q_jt_enumrightinputprimitivecoordinatesat * S ((S (jt_index_enumrightinputprimitivecoordinates)) * jt_c_enumright) + (jt_value_enumrightinputprimitivecoordinates))) -> (exists jt_factor_enumrightinputprimitivecoordinatesdivides. (jt_value_enumrightinputprimitivecoordinates)=(jt_divisor_enumrightinputprimitive)*jt_factor_enumrightinputprimitivecoordinatesdivides)) -> jt_divisor_enumrightinputprimitive=1) -> exists jt_i_enumright jt_d_enumright jt_e_enumright. ((exists jt_gap_enumrightcompleteindex. jt_gap_enumrightcompleteindex+S (jt_i_enumright)=(v)) /\ (((((((exists fs_h_jt_enumrightcompletecode. fs_h_jt_enumrightcompletecode + S (jt_d_enumright) = S ((S (jt_i_enumright)) * F)) /\ exists fs_q_jt_enumrightcompletecode. E = fs_q_jt_enumrightcompletecode * S ((S (jt_i_enumright)) * F) + (jt_d_enumright))) /\ (((exists fs_h_jt_enumrightcompletescale. fs_h_jt_enumrightcompletescale + S (jt_e_enumright) = S ((S (jt_i_enumright)) * H)) /\ exists fs_q_jt_enumrightcompletescale. G = fs_q_jt_enumrightcompletescale * S ((S (jt_i_enumright)) * H) + (jt_e_enumright))))) /\ (forall jt_index_enumrightrepresented jt_left_enumrightrepresented jt_right_enumrightrepresented. (exists jt_gap_enumrightrepresentedindex. jt_gap_enumrightrepresentedindex+S (jt_index_enumrightrepresented)=(k)) -> (((exists fs_h_jt_enumrightrepresentedleft. fs_h_jt_enumrightrepresentedleft + S (jt_left_enumrightrepresented) = S ((S (jt_index_enumrightrepresented)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightrepresentedleft. jt_b_enumright = fs_q_jt_enumrightrepresentedleft * S ((S (jt_index_enumrightrepresented)) * jt_c_enumright) + (jt_left_enumrightrepresented))) -> (((exists fs_h_jt_enumrightrepresentedright. fs_h_jt_enumrightrepresentedright + S (jt_right_enumrightrepresented) = S ((S (jt_index_enumrightrepresented)) * jt_e_enumright)) /\ exists fs_q_jt_enumrightrepresentedright. jt_d_enumright = fs_q_jt_enumrightrepresentedright * S ((S (jt_index_enumrightrepresented)) * jt_e_enumright) + (jt_right_enumrightrepresented))) -> jt_left_enumrightrepresented=jt_right_enumrightrepresented))))) /\ (forall jt_i_enumright jt_h_enumright jt_b_enumright jt_c_enumright jt_d_enumright jt_e_enumright. (exists jt_gap_enumrightfirstindex. jt_gap_enumrightfirstindex+S (jt_i_enumright)=(v)) -> (exists jt_gap_enumrightsecondindex. jt_gap_enumrightsecondindex+S (jt_h_enumright)=(v)) -> (((((exists fs_h_jt_enumrightfirstcode. fs_h_jt_enumrightfirstcode + S (jt_b_enumright) = S ((S (jt_i_enumright)) * F)) /\ exists fs_q_jt_enumrightfirstcode. E = fs_q_jt_enumrightfirstcode * S ((S (jt_i_enumright)) * F) + (jt_b_enumright))) /\ (((exists fs_h_jt_enumrightfirstscale. fs_h_jt_enumrightfirstscale + S (jt_c_enumright) = S ((S (jt_i_enumright)) * H)) /\ exists fs_q_jt_enumrightfirstscale. G = fs_q_jt_enumrightfirstscale * S ((S (jt_i_enumright)) * H) + (jt_c_enumright))))) -> (((((exists fs_h_jt_enumrightsecondcode. fs_h_jt_enumrightsecondcode + S (jt_d_enumright) = S ((S (jt_h_enumright)) * F)) /\ exists fs_q_jt_enumrightsecondcode. E = fs_q_jt_enumrightsecondcode * S ((S (jt_h_enumright)) * F) + (jt_d_enumright))) /\ (((exists fs_h_jt_enumrightsecondscale. fs_h_jt_enumrightsecondscale + S (jt_e_enumright) = S ((S (jt_h_enumright)) * H)) /\ exists fs_q_jt_enumrightsecondscale. G = fs_q_jt_enumrightsecondscale * S ((S (jt_h_enumright)) * H) + (jt_e_enumright))))) -> (forall jt_index_enumrightsame jt_left_enumrightsame jt_right_enumrightsame. (exists jt_gap_enumrightsameindex. jt_gap_enumrightsameindex+S (jt_index_enumrightsame)=(k)) -> (((exists fs_h_jt_enumrightsameleft. fs_h_jt_enumrightsameleft + S (jt_left_enumrightsame) = S ((S (jt_index_enumrightsame)) * jt_c_enumright)) /\ exists fs_q_jt_enumrightsameleft. jt_b_enumright = fs_q_jt_enumrightsameleft * S ((S (jt_index_enumrightsame)) * jt_c_enumright) + (jt_left_enumrightsame))) -> (((exists fs_h_jt_enumrightsameright. fs_h_jt_enumrightsameright + S (jt_right_enumrightsame) = S ((S (jt_index_enumrightsame)) * jt_e_enumright)) /\ exists fs_q_jt_enumrightsameright. jt_d_enumright = fs_q_jt_enumrightsameright * S ((S (jt_index_enumrightsame)) * jt_e_enumright) + (jt_right_enumrightsame))) -> jt_left_enumrightsame=jt_right_enumrightsame) -> jt_i_enumright=jt_h_enumright))))) -> (forall jt_index_enumrect. (exists jt_gap_enumrectindex. jt_gap_enumrectindex+S (jt_index_enumrect)=(u*v)) -> exists jt_row_enumrect jt_column_enumrect jt_b_enumrect jt_c_enumrect jt_d_enumrect jt_e_enumrect jt_f_enumrect jt_g_enumrect. ((exists jt_gap_enumrectrow. jt_gap_enumrectrow+S (jt_row_enumrect)=(u)) /\ (((exists jt_gap_enumrectcolumn. jt_gap_enumrectcolumn+S (jt_column_enumrect)=(v)) /\ (((jt_index_enumrect=(v)*jt_row_enumrect+jt_column_enumrect) /\ (((((((exists fs_h_jt_enumrectleftcode. fs_h_jt_enumrectleftcode + S (jt_b_enumrect) = S ((S (jt_row_enumrect)) * B)) /\ exists fs_q_jt_enumrectleftcode. A = fs_q_jt_enumrectleftcode * S ((S (jt_row_enumrect)) * B) + (jt_b_enumrect))) /\ (((exists fs_h_jt_enumrectleftscale. fs_h_jt_enumrectleftscale + S (jt_c_enumrect) = S ((S (jt_row_enumrect)) * D)) /\ exists fs_q_jt_enumrectleftscale. C = fs_q_jt_enumrectleftscale * S ((S (jt_row_enumrect)) * D) + (jt_c_enumrect))))) /\ (((((((exists fs_h_jt_enumrectrightcode. fs_h_jt_enumrectrightcode + S (jt_d_enumrect) = S ((S (jt_column_enumrect)) * F)) /\ exists fs_q_jt_enumrectrightcode. E = fs_q_jt_enumrectrightcode * S ((S (jt_column_enumrect)) * F) + (jt_d_enumrect))) /\ (((exists fs_h_jt_enumrectrightscale. fs_h_jt_enumrectrightscale + S (jt_e_enumrect) = S ((S (jt_column_enumrect)) * H)) /\ exists fs_q_jt_enumrectrightscale. G = fs_q_jt_enumrectrightscale * S ((S (jt_column_enumrect)) * H) + (jt_e_enumrect))))) /\ (((((((exists fs_h_jt_enumrectoutputcode. fs_h_jt_enumrectoutputcode + S (jt_f_enumrect) = S ((S (jt_index_enumrect)) * Q)) /\ exists fs_q_jt_enumrectoutputcode. P = fs_q_jt_enumrectoutputcode * S ((S (jt_index_enumrect)) * Q) + (jt_f_enumrect))) /\ (((exists fs_h_jt_enumrectoutputscale. fs_h_jt_enumrectoutputscale + S (jt_g_enumrect) = S ((S (jt_index_enumrect)) * T)) /\ exists fs_q_jt_enumrectoutputscale. R = fs_q_jt_enumrectoutputscale * S ((S (jt_index_enumrect)) * T) + (jt_g_enumrect))))) /\ (((((forall jt_index_enumrectcrtbound. (exists jt_gap_enumrectcrtboundindex. jt_gap_enumrectcrtboundindex+S (jt_index_enumrectcrtbound)=(k)) -> exists jt_value_enumrectcrtbound. ((((exists fs_h_jt_enumrectcrtboundat. fs_h_jt_enumrectcrtboundat + S (jt_value_enumrectcrtbound) = S ((S (jt_index_enumrectcrtbound)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectcrtboundat. jt_f_enumrect = fs_q_jt_enumrectcrtboundat * S ((S (jt_index_enumrectcrtbound)) * jt_g_enumrect) + (jt_value_enumrectcrtbound))) /\ (exists jt_gap_enumrectcrtboundvalue. jt_gap_enumrectcrtboundvalue+S (jt_value_enumrectcrtbound)=(m*n)))) /\ (((forall jt_index_enumrectcrtleft jt_left_enumrectcrtleft jt_right_enumrectcrtleft. (exists jt_gap_enumrectcrtleftindex. jt_gap_enumrectcrtleftindex+S (jt_index_enumrectcrtleft)=(k)) -> (((exists fs_h_jt_enumrectcrtleftleft. fs_h_jt_enumrectcrtleftleft + S (jt_left_enumrectcrtleft) = S ((S (jt_index_enumrectcrtleft)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectcrtleftleft. jt_f_enumrect = fs_q_jt_enumrectcrtleftleft * S ((S (jt_index_enumrectcrtleft)) * jt_g_enumrect) + (jt_left_enumrectcrtleft))) -> (((exists fs_h_jt_enumrectcrtleftright. fs_h_jt_enumrectcrtleftright + S (jt_right_enumrectcrtleft) = S ((S (jt_index_enumrectcrtleft)) * jt_c_enumrect)) /\ exists fs_q_jt_enumrectcrtleftright. jt_b_enumrect = fs_q_jt_enumrectcrtleftright * S ((S (jt_index_enumrectcrtleft)) * jt_c_enumrect) + (jt_right_enumrectcrtleft))) -> (exists jt_left_enumrectcrtleftmod jt_right_enumrectcrtleftmod. (jt_left_enumrectcrtleft)+(m)*jt_left_enumrectcrtleftmod=(jt_right_enumrectcrtleft)+(m)*jt_right_enumrectcrtleftmod)) /\ (forall jt_index_enumrectcrtright jt_left_enumrectcrtright jt_right_enumrectcrtright. (exists jt_gap_enumrectcrtrightindex. jt_gap_enumrectcrtrightindex+S (jt_index_enumrectcrtright)=(k)) -> (((exists fs_h_jt_enumrectcrtrightleft. fs_h_jt_enumrectcrtrightleft + S (jt_left_enumrectcrtright) = S ((S (jt_index_enumrectcrtright)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectcrtrightleft. jt_f_enumrect = fs_q_jt_enumrectcrtrightleft * S ((S (jt_index_enumrectcrtright)) * jt_g_enumrect) + (jt_left_enumrectcrtright))) -> (((exists fs_h_jt_enumrectcrtrightright. fs_h_jt_enumrectcrtrightright + S (jt_right_enumrectcrtright) = S ((S (jt_index_enumrectcrtright)) * jt_e_enumrect)) /\ exists fs_q_jt_enumrectcrtrightright. jt_d_enumrect = fs_q_jt_enumrectcrtrightright * S ((S (jt_index_enumrectcrtright)) * jt_e_enumrect) + (jt_right_enumrectcrtright))) -> (exists jt_left_enumrectcrtrightmod jt_right_enumrectcrtrightmod. (jt_left_enumrectcrtright)+(n)*jt_left_enumrectcrtrightmod=(jt_right_enumrectcrtright)+(n)*jt_right_enumrectcrtrightmod)))))) /\ (forall jt_divisor_enumrectprimitive. (exists jt_factor_enumrectprimitivemodulus. (m*n)=(jt_divisor_enumrectprimitive)*jt_factor_enumrectprimitivemodulus) -> (forall jt_index_enumrectprimitivecoordinates jt_value_enumrectprimitivecoordinates. (exists jt_gap_enumrectprimitivecoordinatesindex. jt_gap_enumrectprimitivecoordinatesindex+S (jt_index_enumrectprimitivecoordinates)=(k)) -> (((exists fs_h_jt_enumrectprimitivecoordinatesat. fs_h_jt_enumrectprimitivecoordinatesat + S (jt_value_enumrectprimitivecoordinates) = S ((S (jt_index_enumrectprimitivecoordinates)) * jt_g_enumrect)) /\ exists fs_q_jt_enumrectprimitivecoordinatesat. jt_f_enumrect = fs_q_jt_enumrectprimitivecoordinatesat * S ((S (jt_index_enumrectprimitivecoordinates)) * jt_g_enumrect) + (jt_value_enumrectprimitivecoordinates))) -> (exists jt_factor_enumrectprimitivecoordinatesdivides. (jt_value_enumrectprimitivecoordinates)=(jt_divisor_enumrectprimitive)*jt_factor_enumrectprimitivecoordinatesdivides)) -> jt_divisor_enumrectprimitive=1))))))))))))))) -> ((forall jt_i_productenum. (exists jt_gap_productenumsoundindex. jt_gap_productenumsoundindex+S (jt_i_productenum)=(u*v)) -> exists jt_b_productenum jt_c_productenum. ((((((exists fs_h_jt_productenumsoundcode. fs_h_jt_productenumsoundcode + S (jt_b_productenum) = S ((S (jt_i_productenum)) * Q)) /\ exists fs_q_jt_productenumsoundcode. P = fs_q_jt_productenumsoundcode * S ((S (jt_i_productenum)) * Q) + (jt_b_productenum))) /\ (((exists fs_h_jt_productenumsoundscale. fs_h_jt_productenumsoundscale + S (jt_c_productenum) = S ((S (jt_i_productenum)) * T)) /\ exists fs_q_jt_productenumsoundscale. R = fs_q_jt_productenumsoundscale * S ((S (jt_i_productenum)) * T) + (jt_c_productenum))))) /\ (((forall jt_index_productenumbound. (exists jt_gap_productenumboundindex. jt_gap_productenumboundindex+S (jt_index_productenumbound)=(k)) -> exists jt_value_productenumbound. ((((exists fs_h_jt_productenumboundat. fs_h_jt_productenumboundat + S (jt_value_productenumbound) = S ((S (jt_index_productenumbound)) * jt_c_productenum)) /\ exists fs_q_jt_productenumboundat. jt_b_productenum = fs_q_jt_productenumboundat * S ((S (jt_index_productenumbound)) * jt_c_productenum) + (jt_value_productenumbound))) /\ (exists jt_gap_productenumboundvalue. jt_gap_productenumboundvalue+S (jt_value_productenumbound)=(m*n)))) /\ (forall jt_divisor_productenumprimitive. (exists jt_factor_productenumprimitivemodulus. (m*n)=(jt_divisor_productenumprimitive)*jt_factor_productenumprimitivemodulus) -> (forall jt_index_productenumprimitivecoordinates jt_value_productenumprimitivecoordinates. (exists jt_gap_productenumprimitivecoordinatesindex. jt_gap_productenumprimitivecoordinatesindex+S (jt_index_productenumprimitivecoordinates)=(k)) -> (((exists fs_h_jt_productenumprimitivecoordinatesat. fs_h_jt_productenumprimitivecoordinatesat + S (jt_value_productenumprimitivecoordinates) = S ((S (jt_index_productenumprimitivecoordinates)) * jt_c_productenum)) /\ exists fs_q_jt_productenumprimitivecoordinatesat. jt_b_productenum = fs_q_jt_productenumprimitivecoordinatesat * S ((S (jt_index_productenumprimitivecoordinates)) * jt_c_productenum) + (jt_value_productenumprimitivecoordinates))) -> (exists jt_factor_productenumprimitivecoordinatesdivides. (jt_value_productenumprimitivecoordinates)=(jt_divisor_productenumprimitive)*jt_factor_productenumprimitivecoordinatesdivides)) -> jt_divisor_productenumprimitive=1))))) /\ (((forall jt_b_productenum jt_c_productenum. (forall jt_index_productenuminputbound. (exists jt_gap_productenuminputboundindex. jt_gap_productenuminputboundindex+S (jt_index_productenuminputbound)=(k)) -> exists jt_value_productenuminputbound. ((((exists fs_h_jt_productenuminputboundat. fs_h_jt_productenuminputboundat + S (jt_value_productenuminputbound) = S ((S (jt_index_productenuminputbound)) * jt_c_productenum)) /\ exists fs_q_jt_productenuminputboundat. jt_b_productenum = fs_q_jt_productenuminputboundat * S ((S (jt_index_productenuminputbound)) * jt_c_productenum) + (jt_value_productenuminputbound))) /\ (exists jt_gap_productenuminputboundvalue. jt_gap_productenuminputboundvalue+S (jt_value_productenuminputbound)=(m*n)))) -> (forall jt_divisor_productenuminputprimitive. (exists jt_factor_productenuminputprimitivemodulus. (m*n)=(jt_divisor_productenuminputprimitive)*jt_factor_productenuminputprimitivemodulus) -> (forall jt_index_productenuminputprimitivecoordinates jt_value_productenuminputprimitivecoordinates. (exists jt_gap_productenuminputprimitivecoordinatesindex. jt_gap_productenuminputprimitivecoordinatesindex+S (jt_index_productenuminputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_productenuminputprimitivecoordinatesat. fs_h_jt_productenuminputprimitivecoordinatesat + S (jt_value_productenuminputprimitivecoordinates) = S ((S (jt_index_productenuminputprimitivecoordinates)) * jt_c_productenum)) /\ exists fs_q_jt_productenuminputprimitivecoordinatesat. jt_b_productenum = fs_q_jt_productenuminputprimitivecoordinatesat * S ((S (jt_index_productenuminputprimitivecoordinates)) * jt_c_productenum) + (jt_value_productenuminputprimitivecoordinates))) -> (exists jt_factor_productenuminputprimitivecoordinatesdivides. (jt_value_productenuminputprimitivecoordinates)=(jt_divisor_productenuminputprimitive)*jt_factor_productenuminputprimitivecoordinatesdivides)) -> jt_divisor_productenuminputprimitive=1) -> exists jt_i_productenum jt_d_productenum jt_e_productenum. ((exists jt_gap_productenumcompleteindex. jt_gap_productenumcompleteindex+S (jt_i_productenum)=(u*v)) /\ (((((((exists fs_h_jt_productenumcompletecode. fs_h_jt_productenumcompletecode + S (jt_d_productenum) = S ((S (jt_i_productenum)) * Q)) /\ exists fs_q_jt_productenumcompletecode. P = fs_q_jt_productenumcompletecode * S ((S (jt_i_productenum)) * Q) + (jt_d_productenum))) /\ (((exists fs_h_jt_productenumcompletescale. fs_h_jt_productenumcompletescale + S (jt_e_productenum) = S ((S (jt_i_productenum)) * T)) /\ exists fs_q_jt_productenumcompletescale. R = fs_q_jt_productenumcompletescale * S ((S (jt_i_productenum)) * T) + (jt_e_productenum))))) /\ (forall jt_index_productenumrepresented jt_left_productenumrepresented jt_right_productenumrepresented. (exists jt_gap_productenumrepresentedindex. jt_gap_productenumrepresentedindex+S (jt_index_productenumrepresented)=(k)) -> (((exists fs_h_jt_productenumrepresentedleft. fs_h_jt_productenumrepresentedleft + S (jt_left_productenumrepresented) = S ((S (jt_index_productenumrepresented)) * jt_c_productenum)) /\ exists fs_q_jt_productenumrepresentedleft. jt_b_productenum = fs_q_jt_productenumrepresentedleft * S ((S (jt_index_productenumrepresented)) * jt_c_productenum) + (jt_left_productenumrepresented))) -> (((exists fs_h_jt_productenumrepresentedright. fs_h_jt_productenumrepresentedright + S (jt_right_productenumrepresented) = S ((S (jt_index_productenumrepresented)) * jt_e_productenum)) /\ exists fs_q_jt_productenumrepresentedright. jt_d_productenum = fs_q_jt_productenumrepresentedright * S ((S (jt_index_productenumrepresented)) * jt_e_productenum) + (jt_right_productenumrepresented))) -> jt_left_productenumrepresented=jt_right_productenumrepresented))))) /\ (forall jt_i_productenum jt_h_productenum jt_b_productenum jt_c_productenum jt_d_productenum jt_e_productenum. (exists jt_gap_productenumfirstindex. jt_gap_productenumfirstindex+S (jt_i_productenum)=(u*v)) -> (exists jt_gap_productenumsecondindex. jt_gap_productenumsecondindex+S (jt_h_productenum)=(u*v)) -> (((((exists fs_h_jt_productenumfirstcode. fs_h_jt_productenumfirstcode + S (jt_b_productenum) = S ((S (jt_i_productenum)) * Q)) /\ exists fs_q_jt_productenumfirstcode. P = fs_q_jt_productenumfirstcode * S ((S (jt_i_productenum)) * Q) + (jt_b_productenum))) /\ (((exists fs_h_jt_productenumfirstscale. fs_h_jt_productenumfirstscale + S (jt_c_productenum) = S ((S (jt_i_productenum)) * T)) /\ exists fs_q_jt_productenumfirstscale. R = fs_q_jt_productenumfirstscale * S ((S (jt_i_productenum)) * T) + (jt_c_productenum))))) -> (((((exists fs_h_jt_productenumsecondcode. fs_h_jt_productenumsecondcode + S (jt_d_productenum) = S ((S (jt_h_productenum)) * Q)) /\ exists fs_q_jt_productenumsecondcode. P = fs_q_jt_productenumsecondcode * S ((S (jt_h_productenum)) * Q) + (jt_d_productenum))) /\ (((exists fs_h_jt_productenumsecondscale. fs_h_jt_productenumsecondscale + S (jt_e_productenum) = S ((S (jt_h_productenum)) * T)) /\ exists fs_q_jt_productenumsecondscale. R = fs_q_jt_productenumsecondscale * S ((S (jt_h_productenum)) * T) + (jt_e_productenum))))) -> (forall jt_index_productenumsame jt_left_productenumsame jt_right_productenumsame. (exists jt_gap_productenumsameindex. jt_gap_productenumsameindex+S (jt_index_productenumsame)=(k)) -> (((exists fs_h_jt_productenumsameleft. fs_h_jt_productenumsameleft + S (jt_left_productenumsame) = S ((S (jt_index_productenumsame)) * jt_c_productenum)) /\ exists fs_q_jt_productenumsameleft. jt_b_productenum = fs_q_jt_productenumsameleft * S ((S (jt_index_productenumsame)) * jt_c_productenum) + (jt_left_productenumsame))) -> (((exists fs_h_jt_productenumsameright. fs_h_jt_productenumsameright + S (jt_right_productenumsame) = S ((S (jt_index_productenumsame)) * jt_e_productenum)) /\ exists fs_q_jt_productenumsameright. jt_d_productenum = fs_q_jt_productenumsameright * S ((S (jt_index_productenumsame)) * jt_e_productenum) + (jt_right_productenumsame))) -> jt_left_productenumsame=jt_right_productenumsame) -> jt_i_productenum=jt_h_productenum))))

Constructive proof overview

Generated structural guide

The constructed table is a duplicate-free exhaustive primitive tuple enumeration of literal length u*v.

The unchanged tactic script uses 2 declared prerequisites and contains 131 exact native proof lines.

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

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

Dependencies are introduced as named hypotheses before line 1. Local theorem links identify exact declared prerequisites. This exact body belongs to a complete independently kernel-checked constructive proof bundle and has Alpha checked-use authority; it does not imply Stable membership.

Read the argument

Proof checkpoints

131 script commands · 26 reading checkpoints · 2 local claims

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

Named ingredients (2)

Long local formulas use this family’s existing definitions. Each new abbreviation was expanded back to the identical native formula, including its free-variable context. The original edition is preserved below.

01Fix variables and assumptionsL1–10

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

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

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

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

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

  1. L21
    intro hl
  2. L22
    intro hh
  3. L23
    intro hr
04Separate the logical casesL24–24

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

  1. L24
    split
05Fix variables and assumptionsL25–26

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

  1. L25
    intro p
  2. L26
    intro hp
06Establish hvL27–30

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

  1. L27
    have hv : ∃ i. ∃ j. ∃ b. ∃ c. ∃ d. ∃ e. ∃ f. ∃ g. Lt(i,u) ∧ (Lt(j,v) ∧ (p = v · i + j ∧ (BetaAt(A,B,i,b) ∧ BetaAt(C,D,i,c) ∧ (BetaAt(E,F,j,d) ∧ BetaAt(G,H,j,e) ∧ (BetaAt(P,Q,p,f) ∧ BetaAt(R,T,p,g) ∧ (JordanCanonicalTupleCRT(m,n,b,c,d,e,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k)))))))Definitions: JordanPrimitiveTupleJordanCanonicalTupleCRTLtBetaAt
  2. L28
    specialize hr (p)
  3. L29
    apply hr
  4. L30
    exact hp
07Separate the logical casesL31–40

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

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

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

  1. L41
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  2. L42
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  3. L43
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  4. L44
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  5. L45
    cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
09Construct an explicit witnessL46–47

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

  1. L46
    exists x6
  2. L47
    exists x7
10Separate the logical casesL48–48

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

  1. L48
    split
11Use earlier factsL49–49

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

  1. L49
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
12Separate the logical casesL50–50

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

  1. L50
    split
13Establish hcL51–52

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

  1. L51
    have hc : JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,x6,x7,k)Definitions: JordanCanonicalTupleCRT
  2. L52
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
14Separate the logical casesL53–53

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

  1. L53
    cases hc
15Use earlier factsL54–55

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

  1. L54
    exact hc_left
  2. L55
    exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
16Separate the logical casesL56–56

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

  1. L56
    split
17Fix variables and assumptionsL57–60

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

  1. L57
    intro b
  2. L58
    intro c
  3. L59
    intro hb
  4. L60
    intro hp
18Use earlier factsL61–70

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

  1. L61
    specialize jordan_rectangle_crt_covers (m)
  2. L62
    specialize jordan_rectangle_crt_covers (n)
  3. L63
    specialize jordan_rectangle_crt_covers (k)
  4. L64
    specialize jordan_rectangle_crt_covers (A)
  5. L65
    specialize jordan_rectangle_crt_covers (B)
  6. L66
    specialize jordan_rectangle_crt_covers (C)
  7. L67
    specialize jordan_rectangle_crt_covers (D)
  8. L68
    specialize jordan_rectangle_crt_covers (u)
  9. L69
    specialize jordan_rectangle_crt_covers (E)
  10. L70
    specialize jordan_rectangle_crt_covers (F)
19Use earlier factsL71–80

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

  1. L71
    specialize jordan_rectangle_crt_covers (G)
  2. L72
    specialize jordan_rectangle_crt_covers (H)
  3. L73
    specialize jordan_rectangle_crt_covers (v)
  4. L74
    specialize jordan_rectangle_crt_covers (P)
  5. L75
    specialize jordan_rectangle_crt_covers (Q)
  6. L76
    specialize jordan_rectangle_crt_covers (R)
  7. L77
    specialize jordan_rectangle_crt_covers (T)
  8. L78
    specialize jordan_rectangle_crt_covers (b)
  9. L79
    specialize jordan_rectangle_crt_covers (c)
  10. L80
    apply jordan_rectangle_crt_covers
20Use earlier factsL81–88

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

  1. L81
    exact hm
  2. L82
    exact hn
  3. L83
    exact hcop
  4. L84
    exact hl
  5. L85
    exact hh
  6. L86
    exact hr
  7. L87
    exact hb
  8. L88
    exact hp
21Fix variables and assumptionsL89–98

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

  1. L89
    intro i
  2. L90
    intro j
  3. L91
    intro b
  4. L92
    intro c
  5. L93
    intro d
  6. L94
    intro e
  7. L95
    intro hi
  8. L96
    intro hj
  9. L97
    intro he
  10. L98
    intro hf
22Fix variables and assumptionsL99–99

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

  1. L99
    intro hsame
23Use earlier factsL100–109

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

  1. L100
    specialize jordan_rectangle_crt_distinct (m)
  2. L101
    specialize jordan_rectangle_crt_distinct (n)
  3. L102
    specialize jordan_rectangle_crt_distinct (k)
  4. L103
    specialize jordan_rectangle_crt_distinct (A)
  5. L104
    specialize jordan_rectangle_crt_distinct (B)
  6. L105
    specialize jordan_rectangle_crt_distinct (C)
  7. L106
    specialize jordan_rectangle_crt_distinct (D)
  8. L107
    specialize jordan_rectangle_crt_distinct (u)
  9. L108
    specialize jordan_rectangle_crt_distinct (E)
  10. L109
    specialize jordan_rectangle_crt_distinct (F)
24Use earlier factsL110–119

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

  1. L110
    specialize jordan_rectangle_crt_distinct (G)
  2. L111
    specialize jordan_rectangle_crt_distinct (H)
  3. L112
    specialize jordan_rectangle_crt_distinct (v)
  4. L113
    specialize jordan_rectangle_crt_distinct (P)
  5. L114
    specialize jordan_rectangle_crt_distinct (Q)
  6. L115
    specialize jordan_rectangle_crt_distinct (R)
  7. L116
    specialize jordan_rectangle_crt_distinct (T)
  8. L117
    specialize jordan_rectangle_crt_distinct (i)
  9. L118
    specialize jordan_rectangle_crt_distinct (j)
  10. L119
    specialize jordan_rectangle_crt_distinct (b)
25Use earlier factsL120–129

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

  1. L120
    specialize jordan_rectangle_crt_distinct (c)
  2. L121
    specialize jordan_rectangle_crt_distinct (d)
  3. L122
    specialize jordan_rectangle_crt_distinct (e)
  4. L123
    apply jordan_rectangle_crt_distinct
  5. L124
    exact hl
  6. L125
    exact hh
  7. L126
    exact hr
  8. L127
    exact hi
  9. L128
    exact hj
  10. L129
    exact he
26Use earlier factsL130–131

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

  1. L130
    exact hf
  2. L131
    exact hsame

Library-wide reading audit

Original exact command ledger · 131 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 hm
  19. 0019intro hn
  20. 0020intro hcop
  21. 0021intro hl
  22. 0022intro hh
  23. 0023intro hr
  24. 0024split
  25. 0025intro p
  26. 0026intro hp
  27. 0027have hv : exists i j b c d e f g. ((exists jt_gap_soundrectvaluerow. jt_gap_soundrectvaluerow+S (i)=(u)) /\ (((exists jt_gap_soundrectvaluecolumn. jt_gap_soundrectvaluecolumn+S (j)=(v)) /\ (((p=(v)*(i)+(j)) /\ (((((((exists fs_h_jt_soundrectvalueleftcode. fs_h_jt_soundrectvalueleftcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_soundrectvalueleftcode. A = fs_q_jt_soundrectvalueleftcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_soundrectvalueleftscale. fs_h_jt_soundrectvalueleftscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_soundrectvalueleftscale. C = fs_q_jt_soundrectvalueleftscale * S ((S (i)) * D) + (c))))) /\ (((((((exists fs_h_jt_soundrectvaluerightcode. fs_h_jt_soundrectvaluerightcode + S (d) = S ((S (j)) * F)) /\ exists fs_q_jt_soundrectvaluerightcode. E = fs_q_jt_soundrectvaluerightcode * S ((S (j)) * F) + (d))) /\ (((exists fs_h_jt_soundrectvaluerightscale. fs_h_jt_soundrectvaluerightscale + S (e) = S ((S (j)) * H)) /\ exists fs_q_jt_soundrectvaluerightscale. G = fs_q_jt_soundrectvaluerightscale * S ((S (j)) * H) + (e))))) /\ (((((((exists fs_h_jt_soundrectvalueoutputcode. fs_h_jt_soundrectvalueoutputcode + S (f) = S ((S (p)) * Q)) /\ exists fs_q_jt_soundrectvalueoutputcode. P = fs_q_jt_soundrectvalueoutputcode * S ((S (p)) * Q) + (f))) /\ (((exists fs_h_jt_soundrectvalueoutputscale. fs_h_jt_soundrectvalueoutputscale + S (g) = S ((S (p)) * T)) /\ exists fs_q_jt_soundrectvalueoutputscale. R = fs_q_jt_soundrectvalueoutputscale * S ((S (p)) * T) + (g))))) /\ (((((forall jt_index_soundrectvaluecrtbound. (exists jt_gap_soundrectvaluecrtboundindex. jt_gap_soundrectvaluecrtboundindex+S (jt_index_soundrectvaluecrtbound)=(k)) -> exists jt_value_soundrectvaluecrtbound. ((((exists fs_h_jt_soundrectvaluecrtboundat. fs_h_jt_soundrectvaluecrtboundat + S (jt_value_soundrectvaluecrtbound) = S ((S (jt_index_soundrectvaluecrtbound)) * g)) /\ exists fs_q_jt_soundrectvaluecrtboundat. f = fs_q_jt_soundrectvaluecrtboundat * S ((S (jt_index_soundrectvaluecrtbound)) * g) + (jt_value_soundrectvaluecrtbound))) /\ (exists jt_gap_soundrectvaluecrtboundvalue. jt_gap_soundrectvaluecrtboundvalue+S (jt_value_soundrectvaluecrtbound)=(m*n)))) /\ (((forall jt_index_soundrectvaluecrtleft jt_left_soundrectvaluecrtleft jt_right_soundrectvaluecrtleft. (exists jt_gap_soundrectvaluecrtleftindex. jt_gap_soundrectvaluecrtleftindex+S (jt_index_soundrectvaluecrtleft)=(k)) -> (((exists fs_h_jt_soundrectvaluecrtleftleft. fs_h_jt_soundrectvaluecrtleftleft + S (jt_left_soundrectvaluecrtleft) = S ((S (jt_index_soundrectvaluecrtleft)) * g)) /\ exists fs_q_jt_soundrectvaluecrtleftleft. f = fs_q_jt_soundrectvaluecrtleftleft * S ((S (jt_index_soundrectvaluecrtleft)) * g) + (jt_left_soundrectvaluecrtleft))) -> (((exists fs_h_jt_soundrectvaluecrtleftright. fs_h_jt_soundrectvaluecrtleftright + S (jt_right_soundrectvaluecrtleft) = S ((S (jt_index_soundrectvaluecrtleft)) * c)) /\ exists fs_q_jt_soundrectvaluecrtleftright. b = fs_q_jt_soundrectvaluecrtleftright * S ((S (jt_index_soundrectvaluecrtleft)) * c) + (jt_right_soundrectvaluecrtleft))) -> (exists jt_left_soundrectvaluecrtleftmod jt_right_soundrectvaluecrtleftmod. (jt_left_soundrectvaluecrtleft)+(m)*jt_left_soundrectvaluecrtleftmod=(jt_right_soundrectvaluecrtleft)+(m)*jt_right_soundrectvaluecrtleftmod)) /\ (forall jt_index_soundrectvaluecrtright jt_left_soundrectvaluecrtright jt_right_soundrectvaluecrtright. (exists jt_gap_soundrectvaluecrtrightindex. jt_gap_soundrectvaluecrtrightindex+S (jt_index_soundrectvaluecrtright)=(k)) -> (((exists fs_h_jt_soundrectvaluecrtrightleft. fs_h_jt_soundrectvaluecrtrightleft + S (jt_left_soundrectvaluecrtright) = S ((S (jt_index_soundrectvaluecrtright)) * g)) /\ exists fs_q_jt_soundrectvaluecrtrightleft. f = fs_q_jt_soundrectvaluecrtrightleft * S ((S (jt_index_soundrectvaluecrtright)) * g) + (jt_left_soundrectvaluecrtright))) -> (((exists fs_h_jt_soundrectvaluecrtrightright. fs_h_jt_soundrectvaluecrtrightright + S (jt_right_soundrectvaluecrtright) = S ((S (jt_index_soundrectvaluecrtright)) * e)) /\ exists fs_q_jt_soundrectvaluecrtrightright. d = fs_q_jt_soundrectvaluecrtrightright * S ((S (jt_index_soundrectvaluecrtright)) * e) + (jt_right_soundrectvaluecrtright))) -> (exists jt_left_soundrectvaluecrtrightmod jt_right_soundrectvaluecrtrightmod. (jt_left_soundrectvaluecrtright)+(n)*jt_left_soundrectvaluecrtrightmod=(jt_right_soundrectvaluecrtright)+(n)*jt_right_soundrectvaluecrtrightmod)))))) /\ (forall jt_divisor_soundrectvalueprimitive. (exists jt_factor_soundrectvalueprimitivemodulus. (m*n)=(jt_divisor_soundrectvalueprimitive)*jt_factor_soundrectvalueprimitivemodulus) -> (forall jt_index_soundrectvalueprimitivecoordinates jt_value_soundrectvalueprimitivecoordinates. (exists jt_gap_soundrectvalueprimitivecoordinatesindex. jt_gap_soundrectvalueprimitivecoordinatesindex+S (jt_index_soundrectvalueprimitivecoordinates)=(k)) -> (((exists fs_h_jt_soundrectvalueprimitivecoordinatesat. fs_h_jt_soundrectvalueprimitivecoordinatesat + S (jt_value_soundrectvalueprimitivecoordinates) = S ((S (jt_index_soundrectvalueprimitivecoordinates)) * g)) /\ exists fs_q_jt_soundrectvalueprimitivecoordinatesat. f = fs_q_jt_soundrectvalueprimitivecoordinatesat * S ((S (jt_index_soundrectvalueprimitivecoordinates)) * g) + (jt_value_soundrectvalueprimitivecoordinates))) -> (exists jt_factor_soundrectvalueprimitivecoordinatesdivides. (jt_value_soundrectvalueprimitivecoordinates)=(jt_divisor_soundrectvalueprimitive)*jt_factor_soundrectvalueprimitivecoordinatesdivides)) -> jt_divisor_soundrectvalueprimitive=1))))))))))))))
  28. 0028specialize hr (p)
  29. 0029apply hr
  30. 0030exact hp
  31. 0031cases hv
  32. 0032cases hv_witness
  33. 0033cases hv_witness_witness
  34. 0034cases hv_witness_witness_witness
  35. 0035cases hv_witness_witness_witness_witness
  36. 0036cases hv_witness_witness_witness_witness_witness
  37. 0037cases hv_witness_witness_witness_witness_witness_witness
  38. 0038cases hv_witness_witness_witness_witness_witness_witness_witness
  39. 0039cases hv_witness_witness_witness_witness_witness_witness_witness_witness
  40. 0040cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right
  41. 0041cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  42. 0042cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  43. 0043cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  44. 0044cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  45. 0045cases hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  46. 0046exists x6
  47. 0047exists x7
  48. 0048split
  49. 0049exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
  50. 0050split
  51. 0051have hc : ((forall jt_index_soundcrtbound. (exists jt_gap_soundcrtboundindex. jt_gap_soundcrtboundindex+S (jt_index_soundcrtbound)=(k)) -> exists jt_value_soundcrtbound. ((((exists fs_h_jt_soundcrtboundat. fs_h_jt_soundcrtboundat + S (jt_value_soundcrtbound) = S ((S (jt_index_soundcrtbound)) * x7)) /\ exists fs_q_jt_soundcrtboundat. x6 = fs_q_jt_soundcrtboundat * S ((S (jt_index_soundcrtbound)) * x7) + (jt_value_soundcrtbound))) /\ (exists jt_gap_soundcrtboundvalue. jt_gap_soundcrtboundvalue+S (jt_value_soundcrtbound)=(m*n)))) /\ (((forall jt_index_soundcrtleft jt_left_soundcrtleft jt_right_soundcrtleft. (exists jt_gap_soundcrtleftindex. jt_gap_soundcrtleftindex+S (jt_index_soundcrtleft)=(k)) -> (((exists fs_h_jt_soundcrtleftleft. fs_h_jt_soundcrtleftleft + S (jt_left_soundcrtleft) = S ((S (jt_index_soundcrtleft)) * x7)) /\ exists fs_q_jt_soundcrtleftleft. x6 = fs_q_jt_soundcrtleftleft * S ((S (jt_index_soundcrtleft)) * x7) + (jt_left_soundcrtleft))) -> (((exists fs_h_jt_soundcrtleftright. fs_h_jt_soundcrtleftright + S (jt_right_soundcrtleft) = S ((S (jt_index_soundcrtleft)) * x3)) /\ exists fs_q_jt_soundcrtleftright. x2 = fs_q_jt_soundcrtleftright * S ((S (jt_index_soundcrtleft)) * x3) + (jt_right_soundcrtleft))) -> (exists jt_left_soundcrtleftmod jt_right_soundcrtleftmod. (jt_left_soundcrtleft)+(m)*jt_left_soundcrtleftmod=(jt_right_soundcrtleft)+(m)*jt_right_soundcrtleftmod)) /\ (forall jt_index_soundcrtright jt_left_soundcrtright jt_right_soundcrtright. (exists jt_gap_soundcrtrightindex. jt_gap_soundcrtrightindex+S (jt_index_soundcrtright)=(k)) -> (((exists fs_h_jt_soundcrtrightleft. fs_h_jt_soundcrtrightleft + S (jt_left_soundcrtright) = S ((S (jt_index_soundcrtright)) * x7)) /\ exists fs_q_jt_soundcrtrightleft. x6 = fs_q_jt_soundcrtrightleft * S ((S (jt_index_soundcrtright)) * x7) + (jt_left_soundcrtright))) -> (((exists fs_h_jt_soundcrtrightright. fs_h_jt_soundcrtrightright + S (jt_right_soundcrtright) = S ((S (jt_index_soundcrtright)) * x5)) /\ exists fs_q_jt_soundcrtrightright. x4 = fs_q_jt_soundcrtrightright * S ((S (jt_index_soundcrtright)) * x5) + (jt_right_soundcrtright))) -> (exists jt_left_soundcrtrightmod jt_right_soundcrtrightmod. (jt_left_soundcrtright)+(n)*jt_left_soundcrtrightmod=(jt_right_soundcrtright)+(n)*jt_right_soundcrtrightmod)))))
  52. 0052exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  53. 0053cases hc
  54. 0054exact hc_left
  55. 0055exact hv_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right
  56. 0056split
  57. 0057intro b
  58. 0058intro c
  59. 0059intro hb
  60. 0060intro hp
  61. 0061specialize jordan_rectangle_crt_covers (m)
  62. 0062specialize jordan_rectangle_crt_covers (n)
  63. 0063specialize jordan_rectangle_crt_covers (k)
  64. 0064specialize jordan_rectangle_crt_covers (A)
  65. 0065specialize jordan_rectangle_crt_covers (B)
  66. 0066specialize jordan_rectangle_crt_covers (C)
  67. 0067specialize jordan_rectangle_crt_covers (D)
  68. 0068specialize jordan_rectangle_crt_covers (u)
  69. 0069specialize jordan_rectangle_crt_covers (E)
  70. 0070specialize jordan_rectangle_crt_covers (F)
  71. 0071specialize jordan_rectangle_crt_covers (G)
  72. 0072specialize jordan_rectangle_crt_covers (H)
  73. 0073specialize jordan_rectangle_crt_covers (v)
  74. 0074specialize jordan_rectangle_crt_covers (P)
  75. 0075specialize jordan_rectangle_crt_covers (Q)
  76. 0076specialize jordan_rectangle_crt_covers (R)
  77. 0077specialize jordan_rectangle_crt_covers (T)
  78. 0078specialize jordan_rectangle_crt_covers (b)
  79. 0079specialize jordan_rectangle_crt_covers (c)
  80. 0080apply jordan_rectangle_crt_covers
  81. 0081exact hm
  82. 0082exact hn
  83. 0083exact hcop
  84. 0084exact hl
  85. 0085exact hh
  86. 0086exact hr
  87. 0087exact hb
  88. 0088exact hp
  89. 0089intro i
  90. 0090intro j
  91. 0091intro b
  92. 0092intro c
  93. 0093intro d
  94. 0094intro e
  95. 0095intro hi
  96. 0096intro hj
  97. 0097intro he
  98. 0098intro hf
  99. 0099intro hsame
  100. 0100specialize jordan_rectangle_crt_distinct (m)
  101. 0101specialize jordan_rectangle_crt_distinct (n)
  102. 0102specialize jordan_rectangle_crt_distinct (k)
  103. 0103specialize jordan_rectangle_crt_distinct (A)
  104. 0104specialize jordan_rectangle_crt_distinct (B)
  105. 0105specialize jordan_rectangle_crt_distinct (C)
  106. 0106specialize jordan_rectangle_crt_distinct (D)
  107. 0107specialize jordan_rectangle_crt_distinct (u)
  108. 0108specialize jordan_rectangle_crt_distinct (E)
  109. 0109specialize jordan_rectangle_crt_distinct (F)
  110. 0110specialize jordan_rectangle_crt_distinct (G)
  111. 0111specialize jordan_rectangle_crt_distinct (H)
  112. 0112specialize jordan_rectangle_crt_distinct (v)
  113. 0113specialize jordan_rectangle_crt_distinct (P)
  114. 0114specialize jordan_rectangle_crt_distinct (Q)
  115. 0115specialize jordan_rectangle_crt_distinct (R)
  116. 0116specialize jordan_rectangle_crt_distinct (T)
  117. 0117specialize jordan_rectangle_crt_distinct (i)
  118. 0118specialize jordan_rectangle_crt_distinct (j)
  119. 0119specialize jordan_rectangle_crt_distinct (b)
  120. 0120specialize jordan_rectangle_crt_distinct (c)
  121. 0121specialize jordan_rectangle_crt_distinct (d)
  122. 0122specialize jordan_rectangle_crt_distinct (e)
  123. 0123apply jordan_rectangle_crt_distinct
  124. 0124exact hl
  125. 0125exact hh
  126. 0126exact hr
  127. 0127exact hi
  128. 0128exact hj
  129. 0129exact he
  130. 0130exact hf
  131. 0131exact hsame