JT0046

jordan_rectangle_crt_distinct

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

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

Exact expanded first-order arithmetic statement

forall m n k A B C D u E F G H v P Q R T 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

Constructive proof overview

Generated structural guide

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

The unchanged tactic script uses 4 declared prerequisites and contains 265 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

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.

Named ingredients (4)

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 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: JordanPrimitiveTupleJordanCanonicalTupleCRTLtBetaAt
  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
  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: JordanPrimitiveTupleJordanCanonicalTupleCRTLtBetaAt
  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
  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: BetaPrefixIntoJordanPrimitiveTuple
  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: BetaPrefixIntoJordanPrimitiveTuple
  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
  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: BetaPrefixIntoJordanPrimitiveTuple
  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: BetaPrefixIntoJordanPrimitiveTuple
  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
  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 exact 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 : exists i j b c d e. ((exists jt_gap_havaluerow. jt_gap_havaluerow+S (i)=(u)) /\ (((exists jt_gap_havaluecolumn. jt_gap_havaluecolumn+S (j)=(v)) /\ (((p=(v)*(i)+(j)) /\ (((((((exists fs_h_jt_havalueleftcode. fs_h_jt_havalueleftcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_havalueleftcode. A = fs_q_jt_havalueleftcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_havalueleftscale. fs_h_jt_havalueleftscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_havalueleftscale. C = fs_q_jt_havalueleftscale * S ((S (i)) * D) + (c))))) /\ (((((((exists fs_h_jt_havaluerightcode. fs_h_jt_havaluerightcode + S (d) = S ((S (j)) * F)) /\ exists fs_q_jt_havaluerightcode. E = fs_q_jt_havaluerightcode * S ((S (j)) * F) + (d))) /\ (((exists fs_h_jt_havaluerightscale. fs_h_jt_havaluerightscale + S (e) = S ((S (j)) * H)) /\ exists fs_q_jt_havaluerightscale. G = fs_q_jt_havaluerightscale * S ((S (j)) * H) + (e))))) /\ (((((((exists fs_h_jt_havalueoutputcode. fs_h_jt_havalueoutputcode + S (f) = S ((S (p)) * Q)) /\ exists fs_q_jt_havalueoutputcode. P = fs_q_jt_havalueoutputcode * S ((S (p)) * Q) + (f))) /\ (((exists fs_h_jt_havalueoutputscale. fs_h_jt_havalueoutputscale + S (g) = S ((S (p)) * T)) /\ exists fs_q_jt_havalueoutputscale. R = fs_q_jt_havalueoutputscale * S ((S (p)) * T) + (g))))) /\ (((((forall jt_index_havaluecrtbound. (exists jt_gap_havaluecrtboundindex. jt_gap_havaluecrtboundindex+S (jt_index_havaluecrtbound)=(k)) -> exists jt_value_havaluecrtbound. ((((exists fs_h_jt_havaluecrtboundat. fs_h_jt_havaluecrtboundat + S (jt_value_havaluecrtbound) = S ((S (jt_index_havaluecrtbound)) * g)) /\ exists fs_q_jt_havaluecrtboundat. f = fs_q_jt_havaluecrtboundat * S ((S (jt_index_havaluecrtbound)) * g) + (jt_value_havaluecrtbound))) /\ (exists jt_gap_havaluecrtboundvalue. jt_gap_havaluecrtboundvalue+S (jt_value_havaluecrtbound)=(m*n)))) /\ (((forall jt_index_havaluecrtleft jt_left_havaluecrtleft jt_right_havaluecrtleft. (exists jt_gap_havaluecrtleftindex. jt_gap_havaluecrtleftindex+S (jt_index_havaluecrtleft)=(k)) -> (((exists fs_h_jt_havaluecrtleftleft. fs_h_jt_havaluecrtleftleft + S (jt_left_havaluecrtleft) = S ((S (jt_index_havaluecrtleft)) * g)) /\ exists fs_q_jt_havaluecrtleftleft. f = fs_q_jt_havaluecrtleftleft * S ((S (jt_index_havaluecrtleft)) * g) + (jt_left_havaluecrtleft))) -> (((exists fs_h_jt_havaluecrtleftright. fs_h_jt_havaluecrtleftright + S (jt_right_havaluecrtleft) = S ((S (jt_index_havaluecrtleft)) * c)) /\ exists fs_q_jt_havaluecrtleftright. b = fs_q_jt_havaluecrtleftright * S ((S (jt_index_havaluecrtleft)) * c) + (jt_right_havaluecrtleft))) -> (exists jt_left_havaluecrtleftmod jt_right_havaluecrtleftmod. (jt_left_havaluecrtleft)+(m)*jt_left_havaluecrtleftmod=(jt_right_havaluecrtleft)+(m)*jt_right_havaluecrtleftmod)) /\ (forall jt_index_havaluecrtright jt_left_havaluecrtright jt_right_havaluecrtright. (exists jt_gap_havaluecrtrightindex. jt_gap_havaluecrtrightindex+S (jt_index_havaluecrtright)=(k)) -> (((exists fs_h_jt_havaluecrtrightleft. fs_h_jt_havaluecrtrightleft + S (jt_left_havaluecrtright) = S ((S (jt_index_havaluecrtright)) * g)) /\ exists fs_q_jt_havaluecrtrightleft. f = fs_q_jt_havaluecrtrightleft * S ((S (jt_index_havaluecrtright)) * g) + (jt_left_havaluecrtright))) -> (((exists fs_h_jt_havaluecrtrightright. fs_h_jt_havaluecrtrightright + S (jt_right_havaluecrtright) = S ((S (jt_index_havaluecrtright)) * e)) /\ exists fs_q_jt_havaluecrtrightright. d = fs_q_jt_havaluecrtrightright * S ((S (jt_index_havaluecrtright)) * e) + (jt_right_havaluecrtright))) -> (exists jt_left_havaluecrtrightmod jt_right_havaluecrtrightmod. (jt_left_havaluecrtright)+(n)*jt_left_havaluecrtrightmod=(jt_right_havaluecrtright)+(n)*jt_right_havaluecrtrightmod)))))) /\ (forall jt_divisor_havalueprimitive. (exists jt_factor_havalueprimitivemodulus. (m*n)=(jt_divisor_havalueprimitive)*jt_factor_havalueprimitivemodulus) -> (forall jt_index_havalueprimitivecoordinates jt_value_havalueprimitivecoordinates. (exists jt_gap_havalueprimitivecoordinatesindex. jt_gap_havalueprimitivecoordinatesindex+S (jt_index_havalueprimitivecoordinates)=(k)) -> (((exists fs_h_jt_havalueprimitivecoordinatesat. fs_h_jt_havalueprimitivecoordinatesat + S (jt_value_havalueprimitivecoordinates) = S ((S (jt_index_havalueprimitivecoordinates)) * g)) /\ exists fs_q_jt_havalueprimitivecoordinatesat. f = fs_q_jt_havalueprimitivecoordinatesat * S ((S (jt_index_havalueprimitivecoordinates)) * g) + (jt_value_havalueprimitivecoordinates))) -> (exists jt_factor_havalueprimitivecoordinatesdivides. (jt_value_havalueprimitivecoordinates)=(jt_divisor_havalueprimitive)*jt_factor_havalueprimitivecoordinatesdivides)) -> jt_divisor_havalueprimitive=1))))))))))))))
  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 : ((forall jt_index_hacrtbound. (exists jt_gap_hacrtboundindex. jt_gap_hacrtboundindex+S (jt_index_hacrtbound)=(k)) -> exists jt_value_hacrtbound. ((((exists fs_h_jt_hacrtboundat. fs_h_jt_hacrtboundat + S (jt_value_hacrtbound) = S ((S (jt_index_hacrtbound)) * g)) /\ exists fs_q_jt_hacrtboundat. f = fs_q_jt_hacrtboundat * S ((S (jt_index_hacrtbound)) * g) + (jt_value_hacrtbound))) /\ (exists jt_gap_hacrtboundvalue. jt_gap_hacrtboundvalue+S (jt_value_hacrtbound)=(m*n)))) /\ (((forall jt_index_hacrtleft jt_left_hacrtleft jt_right_hacrtleft. (exists jt_gap_hacrtleftindex. jt_gap_hacrtleftindex+S (jt_index_hacrtleft)=(k)) -> (((exists fs_h_jt_hacrtleftleft. fs_h_jt_hacrtleftleft + S (jt_left_hacrtleft) = S ((S (jt_index_hacrtleft)) * g)) /\ exists fs_q_jt_hacrtleftleft. f = fs_q_jt_hacrtleftleft * S ((S (jt_index_hacrtleft)) * g) + (jt_left_hacrtleft))) -> (((exists fs_h_jt_hacrtleftright. fs_h_jt_hacrtleftright + S (jt_right_hacrtleft) = S ((S (jt_index_hacrtleft)) * x3)) /\ exists fs_q_jt_hacrtleftright. x2 = fs_q_jt_hacrtleftright * S ((S (jt_index_hacrtleft)) * x3) + (jt_right_hacrtleft))) -> (exists jt_left_hacrtleftmod jt_right_hacrtleftmod. (jt_left_hacrtleft)+(m)*jt_left_hacrtleftmod=(jt_right_hacrtleft)+(m)*jt_right_hacrtleftmod)) /\ (forall jt_index_hacrtright jt_left_hacrtright jt_right_hacrtright. (exists jt_gap_hacrtrightindex. jt_gap_hacrtrightindex+S (jt_index_hacrtright)=(k)) -> (((exists fs_h_jt_hacrtrightleft. fs_h_jt_hacrtrightleft + S (jt_left_hacrtright) = S ((S (jt_index_hacrtright)) * g)) /\ exists fs_q_jt_hacrtrightleft. f = fs_q_jt_hacrtrightleft * S ((S (jt_index_hacrtright)) * g) + (jt_left_hacrtright))) -> (((exists fs_h_jt_hacrtrightright. fs_h_jt_hacrtrightright + S (jt_right_hacrtright) = S ((S (jt_index_hacrtright)) * x5)) /\ exists fs_q_jt_hacrtrightright. x4 = fs_q_jt_hacrtrightright * S ((S (jt_index_hacrtright)) * x5) + (jt_right_hacrtright))) -> (exists jt_left_hacrtrightmod jt_right_hacrtrightmod. (jt_left_hacrtright)+(n)*jt_left_hacrtrightmod=(jt_right_hacrtright)+(n)*jt_right_hacrtrightmod)))))
  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 : exists i j b c d e. ((exists jt_gap_hbvaluerow. jt_gap_hbvaluerow+S (i)=(u)) /\ (((exists jt_gap_hbvaluecolumn. jt_gap_hbvaluecolumn+S (j)=(v)) /\ (((z=(v)*(i)+(j)) /\ (((((((exists fs_h_jt_hbvalueleftcode. fs_h_jt_hbvalueleftcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_hbvalueleftcode. A = fs_q_jt_hbvalueleftcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_hbvalueleftscale. fs_h_jt_hbvalueleftscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_hbvalueleftscale. C = fs_q_jt_hbvalueleftscale * S ((S (i)) * D) + (c))))) /\ (((((((exists fs_h_jt_hbvaluerightcode. fs_h_jt_hbvaluerightcode + S (d) = S ((S (j)) * F)) /\ exists fs_q_jt_hbvaluerightcode. E = fs_q_jt_hbvaluerightcode * S ((S (j)) * F) + (d))) /\ (((exists fs_h_jt_hbvaluerightscale. fs_h_jt_hbvaluerightscale + S (e) = S ((S (j)) * H)) /\ exists fs_q_jt_hbvaluerightscale. G = fs_q_jt_hbvaluerightscale * S ((S (j)) * H) + (e))))) /\ (((((((exists fs_h_jt_hbvalueoutputcode. fs_h_jt_hbvalueoutputcode + S (h) = S ((S (z)) * Q)) /\ exists fs_q_jt_hbvalueoutputcode. P = fs_q_jt_hbvalueoutputcode * S ((S (z)) * Q) + (h))) /\ (((exists fs_h_jt_hbvalueoutputscale. fs_h_jt_hbvalueoutputscale + S (s) = S ((S (z)) * T)) /\ exists fs_q_jt_hbvalueoutputscale. R = fs_q_jt_hbvalueoutputscale * S ((S (z)) * T) + (s))))) /\ (((((forall jt_index_hbvaluecrtbound. (exists jt_gap_hbvaluecrtboundindex. jt_gap_hbvaluecrtboundindex+S (jt_index_hbvaluecrtbound)=(k)) -> exists jt_value_hbvaluecrtbound. ((((exists fs_h_jt_hbvaluecrtboundat. fs_h_jt_hbvaluecrtboundat + S (jt_value_hbvaluecrtbound) = S ((S (jt_index_hbvaluecrtbound)) * s)) /\ exists fs_q_jt_hbvaluecrtboundat. h = fs_q_jt_hbvaluecrtboundat * S ((S (jt_index_hbvaluecrtbound)) * s) + (jt_value_hbvaluecrtbound))) /\ (exists jt_gap_hbvaluecrtboundvalue. jt_gap_hbvaluecrtboundvalue+S (jt_value_hbvaluecrtbound)=(m*n)))) /\ (((forall jt_index_hbvaluecrtleft jt_left_hbvaluecrtleft jt_right_hbvaluecrtleft. (exists jt_gap_hbvaluecrtleftindex. jt_gap_hbvaluecrtleftindex+S (jt_index_hbvaluecrtleft)=(k)) -> (((exists fs_h_jt_hbvaluecrtleftleft. fs_h_jt_hbvaluecrtleftleft + S (jt_left_hbvaluecrtleft) = S ((S (jt_index_hbvaluecrtleft)) * s)) /\ exists fs_q_jt_hbvaluecrtleftleft. h = fs_q_jt_hbvaluecrtleftleft * S ((S (jt_index_hbvaluecrtleft)) * s) + (jt_left_hbvaluecrtleft))) -> (((exists fs_h_jt_hbvaluecrtleftright. fs_h_jt_hbvaluecrtleftright + S (jt_right_hbvaluecrtleft) = S ((S (jt_index_hbvaluecrtleft)) * c)) /\ exists fs_q_jt_hbvaluecrtleftright. b = fs_q_jt_hbvaluecrtleftright * S ((S (jt_index_hbvaluecrtleft)) * c) + (jt_right_hbvaluecrtleft))) -> (exists jt_left_hbvaluecrtleftmod jt_right_hbvaluecrtleftmod. (jt_left_hbvaluecrtleft)+(m)*jt_left_hbvaluecrtleftmod=(jt_right_hbvaluecrtleft)+(m)*jt_right_hbvaluecrtleftmod)) /\ (forall jt_index_hbvaluecrtright jt_left_hbvaluecrtright jt_right_hbvaluecrtright. (exists jt_gap_hbvaluecrtrightindex. jt_gap_hbvaluecrtrightindex+S (jt_index_hbvaluecrtright)=(k)) -> (((exists fs_h_jt_hbvaluecrtrightleft. fs_h_jt_hbvaluecrtrightleft + S (jt_left_hbvaluecrtright) = S ((S (jt_index_hbvaluecrtright)) * s)) /\ exists fs_q_jt_hbvaluecrtrightleft. h = fs_q_jt_hbvaluecrtrightleft * S ((S (jt_index_hbvaluecrtright)) * s) + (jt_left_hbvaluecrtright))) -> (((exists fs_h_jt_hbvaluecrtrightright. fs_h_jt_hbvaluecrtrightright + S (jt_right_hbvaluecrtright) = S ((S (jt_index_hbvaluecrtright)) * e)) /\ exists fs_q_jt_hbvaluecrtrightright. d = fs_q_jt_hbvaluecrtrightright * S ((S (jt_index_hbvaluecrtright)) * e) + (jt_right_hbvaluecrtright))) -> (exists jt_left_hbvaluecrtrightmod jt_right_hbvaluecrtrightmod. (jt_left_hbvaluecrtright)+(n)*jt_left_hbvaluecrtrightmod=(jt_right_hbvaluecrtright)+(n)*jt_right_hbvaluecrtrightmod)))))) /\ (forall jt_divisor_hbvalueprimitive. (exists jt_factor_hbvalueprimitivemodulus. (m*n)=(jt_divisor_hbvalueprimitive)*jt_factor_hbvalueprimitivemodulus) -> (forall jt_index_hbvalueprimitivecoordinates jt_value_hbvalueprimitivecoordinates. (exists jt_gap_hbvalueprimitivecoordinatesindex. jt_gap_hbvalueprimitivecoordinatesindex+S (jt_index_hbvalueprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hbvalueprimitivecoordinatesat. fs_h_jt_hbvalueprimitivecoordinatesat + S (jt_value_hbvalueprimitivecoordinates) = S ((S (jt_index_hbvalueprimitivecoordinates)) * s)) /\ exists fs_q_jt_hbvalueprimitivecoordinatesat. h = fs_q_jt_hbvalueprimitivecoordinatesat * S ((S (jt_index_hbvalueprimitivecoordinates)) * s) + (jt_value_hbvalueprimitivecoordinates))) -> (exists jt_factor_hbvalueprimitivecoordinatesdivides. (jt_value_hbvalueprimitivecoordinates)=(jt_divisor_hbvalueprimitive)*jt_factor_hbvalueprimitivecoordinatesdivides)) -> jt_divisor_hbvalueprimitive=1))))))))))))))
  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 : ((forall jt_index_hbcrtbound. (exists jt_gap_hbcrtboundindex. jt_gap_hbcrtboundindex+S (jt_index_hbcrtbound)=(k)) -> exists jt_value_hbcrtbound. ((((exists fs_h_jt_hbcrtboundat. fs_h_jt_hbcrtboundat + S (jt_value_hbcrtbound) = S ((S (jt_index_hbcrtbound)) * s)) /\ exists fs_q_jt_hbcrtboundat. h = fs_q_jt_hbcrtboundat * S ((S (jt_index_hbcrtbound)) * s) + (jt_value_hbcrtbound))) /\ (exists jt_gap_hbcrtboundvalue. jt_gap_hbcrtboundvalue+S (jt_value_hbcrtbound)=(m*n)))) /\ (((forall jt_index_hbcrtleft jt_left_hbcrtleft jt_right_hbcrtleft. (exists jt_gap_hbcrtleftindex. jt_gap_hbcrtleftindex+S (jt_index_hbcrtleft)=(k)) -> (((exists fs_h_jt_hbcrtleftleft. fs_h_jt_hbcrtleftleft + S (jt_left_hbcrtleft) = S ((S (jt_index_hbcrtleft)) * s)) /\ exists fs_q_jt_hbcrtleftleft. h = fs_q_jt_hbcrtleftleft * S ((S (jt_index_hbcrtleft)) * s) + (jt_left_hbcrtleft))) -> (((exists fs_h_jt_hbcrtleftright. fs_h_jt_hbcrtleftright + S (jt_right_hbcrtleft) = S ((S (jt_index_hbcrtleft)) * x9)) /\ exists fs_q_jt_hbcrtleftright. x8 = fs_q_jt_hbcrtleftright * S ((S (jt_index_hbcrtleft)) * x9) + (jt_right_hbcrtleft))) -> (exists jt_left_hbcrtleftmod jt_right_hbcrtleftmod. (jt_left_hbcrtleft)+(m)*jt_left_hbcrtleftmod=(jt_right_hbcrtleft)+(m)*jt_right_hbcrtleftmod)) /\ (forall jt_index_hbcrtright jt_left_hbcrtright jt_right_hbcrtright. (exists jt_gap_hbcrtrightindex. jt_gap_hbcrtrightindex+S (jt_index_hbcrtright)=(k)) -> (((exists fs_h_jt_hbcrtrightleft. fs_h_jt_hbcrtrightleft + S (jt_left_hbcrtright) = S ((S (jt_index_hbcrtright)) * s)) /\ exists fs_q_jt_hbcrtrightleft. h = fs_q_jt_hbcrtrightleft * S ((S (jt_index_hbcrtright)) * s) + (jt_left_hbcrtright))) -> (((exists fs_h_jt_hbcrtrightright. fs_h_jt_hbcrtrightright + S (jt_right_hbcrtright) = S ((S (jt_index_hbcrtright)) * x11)) /\ exists fs_q_jt_hbcrtrightright. x10 = fs_q_jt_hbcrtrightright * S ((S (jt_index_hbcrtright)) * x11) + (jt_right_hbcrtright))) -> (exists jt_left_hbcrtrightmod jt_right_hbcrtrightmod. (jt_left_hbcrtright)+(n)*jt_left_hbcrtrightmod=(jt_right_hbcrtright)+(n)*jt_right_hbcrtrightmod)))))
  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 : ((forall jt_index_left0bound. (exists jt_gap_left0boundindex. jt_gap_left0boundindex+S (jt_index_left0bound)=(k)) -> exists jt_value_left0bound. ((((exists fs_h_jt_left0boundat. fs_h_jt_left0boundat + S (jt_value_left0bound) = S ((S (jt_index_left0bound)) * x3)) /\ exists fs_q_jt_left0boundat. x2 = fs_q_jt_left0boundat * S ((S (jt_index_left0bound)) * x3) + (jt_value_left0bound))) /\ (exists jt_gap_left0boundvalue. jt_gap_left0boundvalue+S (jt_value_left0bound)=(m)))) /\ (forall jt_divisor_left0primitive. (exists jt_factor_left0primitivemodulus. (m)=(jt_divisor_left0primitive)*jt_factor_left0primitivemodulus) -> (forall jt_index_left0primitivecoordinates jt_value_left0primitivecoordinates. (exists jt_gap_left0primitivecoordinatesindex. jt_gap_left0primitivecoordinatesindex+S (jt_index_left0primitivecoordinates)=(k)) -> (((exists fs_h_jt_left0primitivecoordinatesat. fs_h_jt_left0primitivecoordinatesat + S (jt_value_left0primitivecoordinates) = S ((S (jt_index_left0primitivecoordinates)) * x3)) /\ exists fs_q_jt_left0primitivecoordinatesat. x2 = fs_q_jt_left0primitivecoordinatesat * S ((S (jt_index_left0primitivecoordinates)) * x3) + (jt_value_left0primitivecoordinates))) -> (exists jt_factor_left0primitivecoordinatesdivides. (jt_value_left0primitivecoordinates)=(jt_divisor_left0primitive)*jt_factor_left0primitivecoordinatesdivides)) -> jt_divisor_left0primitive=1))
  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 : ((forall jt_index_left1bound. (exists jt_gap_left1boundindex. jt_gap_left1boundindex+S (jt_index_left1bound)=(k)) -> exists jt_value_left1bound. ((((exists fs_h_jt_left1boundat. fs_h_jt_left1boundat + S (jt_value_left1bound) = S ((S (jt_index_left1bound)) * x9)) /\ exists fs_q_jt_left1boundat. x8 = fs_q_jt_left1boundat * S ((S (jt_index_left1bound)) * x9) + (jt_value_left1bound))) /\ (exists jt_gap_left1boundvalue. jt_gap_left1boundvalue+S (jt_value_left1bound)=(m)))) /\ (forall jt_divisor_left1primitive. (exists jt_factor_left1primitivemodulus. (m)=(jt_divisor_left1primitive)*jt_factor_left1primitivemodulus) -> (forall jt_index_left1primitivecoordinates jt_value_left1primitivecoordinates. (exists jt_gap_left1primitivecoordinatesindex. jt_gap_left1primitivecoordinatesindex+S (jt_index_left1primitivecoordinates)=(k)) -> (((exists fs_h_jt_left1primitivecoordinatesat. fs_h_jt_left1primitivecoordinatesat + S (jt_value_left1primitivecoordinates) = S ((S (jt_index_left1primitivecoordinates)) * x9)) /\ exists fs_q_jt_left1primitivecoordinatesat. x8 = fs_q_jt_left1primitivecoordinatesat * S ((S (jt_index_left1primitivecoordinates)) * x9) + (jt_value_left1primitivecoordinates))) -> (exists jt_factor_left1primitivecoordinatesdivides. (jt_value_left1primitivecoordinates)=(jt_divisor_left1primitive)*jt_factor_left1primitivecoordinatesdivides)) -> jt_divisor_left1primitive=1))
  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 : forall jt_index_leftsame jt_left_leftsame jt_right_leftsame. (exists jt_gap_leftsameindex. jt_gap_leftsameindex+S (jt_index_leftsame)=(k)) -> (((exists fs_h_jt_leftsameleft. fs_h_jt_leftsameleft + S (jt_left_leftsame) = S ((S (jt_index_leftsame)) * x3)) /\ exists fs_q_jt_leftsameleft. x2 = fs_q_jt_leftsameleft * S ((S (jt_index_leftsame)) * x3) + (jt_left_leftsame))) -> (((exists fs_h_jt_leftsameright. fs_h_jt_leftsameright + S (jt_right_leftsame) = S ((S (jt_index_leftsame)) * x9)) /\ exists fs_q_jt_leftsameright. x8 = fs_q_jt_leftsameright * S ((S (jt_index_leftsame)) * x9) + (jt_right_leftsame))) -> jt_left_leftsame=jt_right_leftsame
  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 : ((forall jt_index_right0bound. (exists jt_gap_right0boundindex. jt_gap_right0boundindex+S (jt_index_right0bound)=(k)) -> exists jt_value_right0bound. ((((exists fs_h_jt_right0boundat. fs_h_jt_right0boundat + S (jt_value_right0bound) = S ((S (jt_index_right0bound)) * x5)) /\ exists fs_q_jt_right0boundat. x4 = fs_q_jt_right0boundat * S ((S (jt_index_right0bound)) * x5) + (jt_value_right0bound))) /\ (exists jt_gap_right0boundvalue. jt_gap_right0boundvalue+S (jt_value_right0bound)=(n)))) /\ (forall jt_divisor_right0primitive. (exists jt_factor_right0primitivemodulus. (n)=(jt_divisor_right0primitive)*jt_factor_right0primitivemodulus) -> (forall jt_index_right0primitivecoordinates jt_value_right0primitivecoordinates. (exists jt_gap_right0primitivecoordinatesindex. jt_gap_right0primitivecoordinatesindex+S (jt_index_right0primitivecoordinates)=(k)) -> (((exists fs_h_jt_right0primitivecoordinatesat. fs_h_jt_right0primitivecoordinatesat + S (jt_value_right0primitivecoordinates) = S ((S (jt_index_right0primitivecoordinates)) * x5)) /\ exists fs_q_jt_right0primitivecoordinatesat. x4 = fs_q_jt_right0primitivecoordinatesat * S ((S (jt_index_right0primitivecoordinates)) * x5) + (jt_value_right0primitivecoordinates))) -> (exists jt_factor_right0primitivecoordinatesdivides. (jt_value_right0primitivecoordinates)=(jt_divisor_right0primitive)*jt_factor_right0primitivecoordinatesdivides)) -> jt_divisor_right0primitive=1))
  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 : ((forall jt_index_right1bound. (exists jt_gap_right1boundindex. jt_gap_right1boundindex+S (jt_index_right1bound)=(k)) -> exists jt_value_right1bound. ((((exists fs_h_jt_right1boundat. fs_h_jt_right1boundat + S (jt_value_right1bound) = S ((S (jt_index_right1bound)) * x11)) /\ exists fs_q_jt_right1boundat. x10 = fs_q_jt_right1boundat * S ((S (jt_index_right1bound)) * x11) + (jt_value_right1bound))) /\ (exists jt_gap_right1boundvalue. jt_gap_right1boundvalue+S (jt_value_right1bound)=(n)))) /\ (forall jt_divisor_right1primitive. (exists jt_factor_right1primitivemodulus. (n)=(jt_divisor_right1primitive)*jt_factor_right1primitivemodulus) -> (forall jt_index_right1primitivecoordinates jt_value_right1primitivecoordinates. (exists jt_gap_right1primitivecoordinatesindex. jt_gap_right1primitivecoordinatesindex+S (jt_index_right1primitivecoordinates)=(k)) -> (((exists fs_h_jt_right1primitivecoordinatesat. fs_h_jt_right1primitivecoordinatesat + S (jt_value_right1primitivecoordinates) = S ((S (jt_index_right1primitivecoordinates)) * x11)) /\ exists fs_q_jt_right1primitivecoordinatesat. x10 = fs_q_jt_right1primitivecoordinatesat * S ((S (jt_index_right1primitivecoordinates)) * x11) + (jt_value_right1primitivecoordinates))) -> (exists jt_factor_right1primitivecoordinatesdivides. (jt_value_right1primitivecoordinates)=(jt_divisor_right1primitive)*jt_factor_right1primitivecoordinatesdivides)) -> jt_divisor_right1primitive=1))
  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 : forall jt_index_rightsame jt_left_rightsame jt_right_rightsame. (exists jt_gap_rightsameindex. jt_gap_rightsameindex+S (jt_index_rightsame)=(k)) -> (((exists fs_h_jt_rightsameleft. fs_h_jt_rightsameleft + S (jt_left_rightsame) = S ((S (jt_index_rightsame)) * x5)) /\ exists fs_q_jt_rightsameleft. x4 = fs_q_jt_rightsameleft * S ((S (jt_index_rightsame)) * x5) + (jt_left_rightsame))) -> (((exists fs_h_jt_rightsameright. fs_h_jt_rightsameright + S (jt_right_rightsame) = S ((S (jt_index_rightsame)) * x11)) /\ exists fs_q_jt_rightsameright. x10 = fs_q_jt_rightsameright * S ((S (jt_index_rightsame)) * x11) + (jt_right_rightsame))) -> jt_left_rightsame=jt_right_rightsame
  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