JT0040

jordan_rectangle_crt_append

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

At the next flat index, construct the actual primitive CRT tuple and append its code and scale to fresh beta lists.

Exact expanded first-order arithmetic statement

forall m n k A B C D u E F G H v P Q R T q. ~(m=0) -> ~(n=0) -> (forall jt_divisor_rectappendcop. (exists jt_factor_rectappendcopa. (m)=(jt_divisor_rectappendcop)*jt_factor_rectappendcopa) -> (exists jt_factor_rectappendcopb. (n)=(jt_divisor_rectappendcop)*jt_factor_rectappendcopb) -> jt_divisor_rectappendcop=1) -> (((forall jt_i_rectappendleft. (exists jt_gap_rectappendleftsoundindex. jt_gap_rectappendleftsoundindex+S (jt_i_rectappendleft)=(u)) -> exists jt_b_rectappendleft jt_c_rectappendleft. ((((((exists fs_h_jt_rectappendleftsoundcode. fs_h_jt_rectappendleftsoundcode + S (jt_b_rectappendleft) = S ((S (jt_i_rectappendleft)) * B)) /\ exists fs_q_jt_rectappendleftsoundcode. A = fs_q_jt_rectappendleftsoundcode * S ((S (jt_i_rectappendleft)) * B) + (jt_b_rectappendleft))) /\ (((exists fs_h_jt_rectappendleftsoundscale. fs_h_jt_rectappendleftsoundscale + S (jt_c_rectappendleft) = S ((S (jt_i_rectappendleft)) * D)) /\ exists fs_q_jt_rectappendleftsoundscale. C = fs_q_jt_rectappendleftsoundscale * S ((S (jt_i_rectappendleft)) * D) + (jt_c_rectappendleft))))) /\ (((forall jt_index_rectappendleftbound. (exists jt_gap_rectappendleftboundindex. jt_gap_rectappendleftboundindex+S (jt_index_rectappendleftbound)=(k)) -> exists jt_value_rectappendleftbound. ((((exists fs_h_jt_rectappendleftboundat. fs_h_jt_rectappendleftboundat + S (jt_value_rectappendleftbound) = S ((S (jt_index_rectappendleftbound)) * jt_c_rectappendleft)) /\ exists fs_q_jt_rectappendleftboundat. jt_b_rectappendleft = fs_q_jt_rectappendleftboundat * S ((S (jt_index_rectappendleftbound)) * jt_c_rectappendleft) + (jt_value_rectappendleftbound))) /\ (exists jt_gap_rectappendleftboundvalue. jt_gap_rectappendleftboundvalue+S (jt_value_rectappendleftbound)=(m)))) /\ (forall jt_divisor_rectappendleftprimitive. (exists jt_factor_rectappendleftprimitivemodulus. (m)=(jt_divisor_rectappendleftprimitive)*jt_factor_rectappendleftprimitivemodulus) -> (forall jt_index_rectappendleftprimitivecoordinates jt_value_rectappendleftprimitivecoordinates. (exists jt_gap_rectappendleftprimitivecoordinatesindex. jt_gap_rectappendleftprimitivecoordinatesindex+S (jt_index_rectappendleftprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectappendleftprimitivecoordinatesat. fs_h_jt_rectappendleftprimitivecoordinatesat + S (jt_value_rectappendleftprimitivecoordinates) = S ((S (jt_index_rectappendleftprimitivecoordinates)) * jt_c_rectappendleft)) /\ exists fs_q_jt_rectappendleftprimitivecoordinatesat. jt_b_rectappendleft = fs_q_jt_rectappendleftprimitivecoordinatesat * S ((S (jt_index_rectappendleftprimitivecoordinates)) * jt_c_rectappendleft) + (jt_value_rectappendleftprimitivecoordinates))) -> (exists jt_factor_rectappendleftprimitivecoordinatesdivides. (jt_value_rectappendleftprimitivecoordinates)=(jt_divisor_rectappendleftprimitive)*jt_factor_rectappendleftprimitivecoordinatesdivides)) -> jt_divisor_rectappendleftprimitive=1))))) /\ (((forall jt_b_rectappendleft jt_c_rectappendleft. (forall jt_index_rectappendleftinputbound. (exists jt_gap_rectappendleftinputboundindex. jt_gap_rectappendleftinputboundindex+S (jt_index_rectappendleftinputbound)=(k)) -> exists jt_value_rectappendleftinputbound. ((((exists fs_h_jt_rectappendleftinputboundat. fs_h_jt_rectappendleftinputboundat + S (jt_value_rectappendleftinputbound) = S ((S (jt_index_rectappendleftinputbound)) * jt_c_rectappendleft)) /\ exists fs_q_jt_rectappendleftinputboundat. jt_b_rectappendleft = fs_q_jt_rectappendleftinputboundat * S ((S (jt_index_rectappendleftinputbound)) * jt_c_rectappendleft) + (jt_value_rectappendleftinputbound))) /\ (exists jt_gap_rectappendleftinputboundvalue. jt_gap_rectappendleftinputboundvalue+S (jt_value_rectappendleftinputbound)=(m)))) -> (forall jt_divisor_rectappendleftinputprimitive. (exists jt_factor_rectappendleftinputprimitivemodulus. (m)=(jt_divisor_rectappendleftinputprimitive)*jt_factor_rectappendleftinputprimitivemodulus) -> (forall jt_index_rectappendleftinputprimitivecoordinates jt_value_rectappendleftinputprimitivecoordinates. (exists jt_gap_rectappendleftinputprimitivecoordinatesindex. jt_gap_rectappendleftinputprimitivecoordinatesindex+S (jt_index_rectappendleftinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectappendleftinputprimitivecoordinatesat. fs_h_jt_rectappendleftinputprimitivecoordinatesat + S (jt_value_rectappendleftinputprimitivecoordinates) = S ((S (jt_index_rectappendleftinputprimitivecoordinates)) * jt_c_rectappendleft)) /\ exists fs_q_jt_rectappendleftinputprimitivecoordinatesat. jt_b_rectappendleft = fs_q_jt_rectappendleftinputprimitivecoordinatesat * S ((S (jt_index_rectappendleftinputprimitivecoordinates)) * jt_c_rectappendleft) + (jt_value_rectappendleftinputprimitivecoordinates))) -> (exists jt_factor_rectappendleftinputprimitivecoordinatesdivides. (jt_value_rectappendleftinputprimitivecoordinates)=(jt_divisor_rectappendleftinputprimitive)*jt_factor_rectappendleftinputprimitivecoordinatesdivides)) -> jt_divisor_rectappendleftinputprimitive=1) -> exists jt_i_rectappendleft jt_d_rectappendleft jt_e_rectappendleft. ((exists jt_gap_rectappendleftcompleteindex. jt_gap_rectappendleftcompleteindex+S (jt_i_rectappendleft)=(u)) /\ (((((((exists fs_h_jt_rectappendleftcompletecode. fs_h_jt_rectappendleftcompletecode + S (jt_d_rectappendleft) = S ((S (jt_i_rectappendleft)) * B)) /\ exists fs_q_jt_rectappendleftcompletecode. A = fs_q_jt_rectappendleftcompletecode * S ((S (jt_i_rectappendleft)) * B) + (jt_d_rectappendleft))) /\ (((exists fs_h_jt_rectappendleftcompletescale. fs_h_jt_rectappendleftcompletescale + S (jt_e_rectappendleft) = S ((S (jt_i_rectappendleft)) * D)) /\ exists fs_q_jt_rectappendleftcompletescale. C = fs_q_jt_rectappendleftcompletescale * S ((S (jt_i_rectappendleft)) * D) + (jt_e_rectappendleft))))) /\ (forall jt_index_rectappendleftrepresented jt_left_rectappendleftrepresented jt_right_rectappendleftrepresented. (exists jt_gap_rectappendleftrepresentedindex. jt_gap_rectappendleftrepresentedindex+S (jt_index_rectappendleftrepresented)=(k)) -> (((exists fs_h_jt_rectappendleftrepresentedleft. fs_h_jt_rectappendleftrepresentedleft + S (jt_left_rectappendleftrepresented) = S ((S (jt_index_rectappendleftrepresented)) * jt_c_rectappendleft)) /\ exists fs_q_jt_rectappendleftrepresentedleft. jt_b_rectappendleft = fs_q_jt_rectappendleftrepresentedleft * S ((S (jt_index_rectappendleftrepresented)) * jt_c_rectappendleft) + (jt_left_rectappendleftrepresented))) -> (((exists fs_h_jt_rectappendleftrepresentedright. fs_h_jt_rectappendleftrepresentedright + S (jt_right_rectappendleftrepresented) = S ((S (jt_index_rectappendleftrepresented)) * jt_e_rectappendleft)) /\ exists fs_q_jt_rectappendleftrepresentedright. jt_d_rectappendleft = fs_q_jt_rectappendleftrepresentedright * S ((S (jt_index_rectappendleftrepresented)) * jt_e_rectappendleft) + (jt_right_rectappendleftrepresented))) -> jt_left_rectappendleftrepresented=jt_right_rectappendleftrepresented))))) /\ (forall jt_i_rectappendleft jt_h_rectappendleft jt_b_rectappendleft jt_c_rectappendleft jt_d_rectappendleft jt_e_rectappendleft. (exists jt_gap_rectappendleftfirstindex. jt_gap_rectappendleftfirstindex+S (jt_i_rectappendleft)=(u)) -> (exists jt_gap_rectappendleftsecondindex. jt_gap_rectappendleftsecondindex+S (jt_h_rectappendleft)=(u)) -> (((((exists fs_h_jt_rectappendleftfirstcode. fs_h_jt_rectappendleftfirstcode + S (jt_b_rectappendleft) = S ((S (jt_i_rectappendleft)) * B)) /\ exists fs_q_jt_rectappendleftfirstcode. A = fs_q_jt_rectappendleftfirstcode * S ((S (jt_i_rectappendleft)) * B) + (jt_b_rectappendleft))) /\ (((exists fs_h_jt_rectappendleftfirstscale. fs_h_jt_rectappendleftfirstscale + S (jt_c_rectappendleft) = S ((S (jt_i_rectappendleft)) * D)) /\ exists fs_q_jt_rectappendleftfirstscale. C = fs_q_jt_rectappendleftfirstscale * S ((S (jt_i_rectappendleft)) * D) + (jt_c_rectappendleft))))) -> (((((exists fs_h_jt_rectappendleftsecondcode. fs_h_jt_rectappendleftsecondcode + S (jt_d_rectappendleft) = S ((S (jt_h_rectappendleft)) * B)) /\ exists fs_q_jt_rectappendleftsecondcode. A = fs_q_jt_rectappendleftsecondcode * S ((S (jt_h_rectappendleft)) * B) + (jt_d_rectappendleft))) /\ (((exists fs_h_jt_rectappendleftsecondscale. fs_h_jt_rectappendleftsecondscale + S (jt_e_rectappendleft) = S ((S (jt_h_rectappendleft)) * D)) /\ exists fs_q_jt_rectappendleftsecondscale. C = fs_q_jt_rectappendleftsecondscale * S ((S (jt_h_rectappendleft)) * D) + (jt_e_rectappendleft))))) -> (forall jt_index_rectappendleftsame jt_left_rectappendleftsame jt_right_rectappendleftsame. (exists jt_gap_rectappendleftsameindex. jt_gap_rectappendleftsameindex+S (jt_index_rectappendleftsame)=(k)) -> (((exists fs_h_jt_rectappendleftsameleft. fs_h_jt_rectappendleftsameleft + S (jt_left_rectappendleftsame) = S ((S (jt_index_rectappendleftsame)) * jt_c_rectappendleft)) /\ exists fs_q_jt_rectappendleftsameleft. jt_b_rectappendleft = fs_q_jt_rectappendleftsameleft * S ((S (jt_index_rectappendleftsame)) * jt_c_rectappendleft) + (jt_left_rectappendleftsame))) -> (((exists fs_h_jt_rectappendleftsameright. fs_h_jt_rectappendleftsameright + S (jt_right_rectappendleftsame) = S ((S (jt_index_rectappendleftsame)) * jt_e_rectappendleft)) /\ exists fs_q_jt_rectappendleftsameright. jt_d_rectappendleft = fs_q_jt_rectappendleftsameright * S ((S (jt_index_rectappendleftsame)) * jt_e_rectappendleft) + (jt_right_rectappendleftsame))) -> jt_left_rectappendleftsame=jt_right_rectappendleftsame) -> jt_i_rectappendleft=jt_h_rectappendleft))))) -> (((forall jt_i_rectappendright. (exists jt_gap_rectappendrightsoundindex. jt_gap_rectappendrightsoundindex+S (jt_i_rectappendright)=(v)) -> exists jt_b_rectappendright jt_c_rectappendright. ((((((exists fs_h_jt_rectappendrightsoundcode. fs_h_jt_rectappendrightsoundcode + S (jt_b_rectappendright) = S ((S (jt_i_rectappendright)) * F)) /\ exists fs_q_jt_rectappendrightsoundcode. E = fs_q_jt_rectappendrightsoundcode * S ((S (jt_i_rectappendright)) * F) + (jt_b_rectappendright))) /\ (((exists fs_h_jt_rectappendrightsoundscale. fs_h_jt_rectappendrightsoundscale + S (jt_c_rectappendright) = S ((S (jt_i_rectappendright)) * H)) /\ exists fs_q_jt_rectappendrightsoundscale. G = fs_q_jt_rectappendrightsoundscale * S ((S (jt_i_rectappendright)) * H) + (jt_c_rectappendright))))) /\ (((forall jt_index_rectappendrightbound. (exists jt_gap_rectappendrightboundindex. jt_gap_rectappendrightboundindex+S (jt_index_rectappendrightbound)=(k)) -> exists jt_value_rectappendrightbound. ((((exists fs_h_jt_rectappendrightboundat. fs_h_jt_rectappendrightboundat + S (jt_value_rectappendrightbound) = S ((S (jt_index_rectappendrightbound)) * jt_c_rectappendright)) /\ exists fs_q_jt_rectappendrightboundat. jt_b_rectappendright = fs_q_jt_rectappendrightboundat * S ((S (jt_index_rectappendrightbound)) * jt_c_rectappendright) + (jt_value_rectappendrightbound))) /\ (exists jt_gap_rectappendrightboundvalue. jt_gap_rectappendrightboundvalue+S (jt_value_rectappendrightbound)=(n)))) /\ (forall jt_divisor_rectappendrightprimitive. (exists jt_factor_rectappendrightprimitivemodulus. (n)=(jt_divisor_rectappendrightprimitive)*jt_factor_rectappendrightprimitivemodulus) -> (forall jt_index_rectappendrightprimitivecoordinates jt_value_rectappendrightprimitivecoordinates. (exists jt_gap_rectappendrightprimitivecoordinatesindex. jt_gap_rectappendrightprimitivecoordinatesindex+S (jt_index_rectappendrightprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectappendrightprimitivecoordinatesat. fs_h_jt_rectappendrightprimitivecoordinatesat + S (jt_value_rectappendrightprimitivecoordinates) = S ((S (jt_index_rectappendrightprimitivecoordinates)) * jt_c_rectappendright)) /\ exists fs_q_jt_rectappendrightprimitivecoordinatesat. jt_b_rectappendright = fs_q_jt_rectappendrightprimitivecoordinatesat * S ((S (jt_index_rectappendrightprimitivecoordinates)) * jt_c_rectappendright) + (jt_value_rectappendrightprimitivecoordinates))) -> (exists jt_factor_rectappendrightprimitivecoordinatesdivides. (jt_value_rectappendrightprimitivecoordinates)=(jt_divisor_rectappendrightprimitive)*jt_factor_rectappendrightprimitivecoordinatesdivides)) -> jt_divisor_rectappendrightprimitive=1))))) /\ (((forall jt_b_rectappendright jt_c_rectappendright. (forall jt_index_rectappendrightinputbound. (exists jt_gap_rectappendrightinputboundindex. jt_gap_rectappendrightinputboundindex+S (jt_index_rectappendrightinputbound)=(k)) -> exists jt_value_rectappendrightinputbound. ((((exists fs_h_jt_rectappendrightinputboundat. fs_h_jt_rectappendrightinputboundat + S (jt_value_rectappendrightinputbound) = S ((S (jt_index_rectappendrightinputbound)) * jt_c_rectappendright)) /\ exists fs_q_jt_rectappendrightinputboundat. jt_b_rectappendright = fs_q_jt_rectappendrightinputboundat * S ((S (jt_index_rectappendrightinputbound)) * jt_c_rectappendright) + (jt_value_rectappendrightinputbound))) /\ (exists jt_gap_rectappendrightinputboundvalue. jt_gap_rectappendrightinputboundvalue+S (jt_value_rectappendrightinputbound)=(n)))) -> (forall jt_divisor_rectappendrightinputprimitive. (exists jt_factor_rectappendrightinputprimitivemodulus. (n)=(jt_divisor_rectappendrightinputprimitive)*jt_factor_rectappendrightinputprimitivemodulus) -> (forall jt_index_rectappendrightinputprimitivecoordinates jt_value_rectappendrightinputprimitivecoordinates. (exists jt_gap_rectappendrightinputprimitivecoordinatesindex. jt_gap_rectappendrightinputprimitivecoordinatesindex+S (jt_index_rectappendrightinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectappendrightinputprimitivecoordinatesat. fs_h_jt_rectappendrightinputprimitivecoordinatesat + S (jt_value_rectappendrightinputprimitivecoordinates) = S ((S (jt_index_rectappendrightinputprimitivecoordinates)) * jt_c_rectappendright)) /\ exists fs_q_jt_rectappendrightinputprimitivecoordinatesat. jt_b_rectappendright = fs_q_jt_rectappendrightinputprimitivecoordinatesat * S ((S (jt_index_rectappendrightinputprimitivecoordinates)) * jt_c_rectappendright) + (jt_value_rectappendrightinputprimitivecoordinates))) -> (exists jt_factor_rectappendrightinputprimitivecoordinatesdivides. (jt_value_rectappendrightinputprimitivecoordinates)=(jt_divisor_rectappendrightinputprimitive)*jt_factor_rectappendrightinputprimitivecoordinatesdivides)) -> jt_divisor_rectappendrightinputprimitive=1) -> exists jt_i_rectappendright jt_d_rectappendright jt_e_rectappendright. ((exists jt_gap_rectappendrightcompleteindex. jt_gap_rectappendrightcompleteindex+S (jt_i_rectappendright)=(v)) /\ (((((((exists fs_h_jt_rectappendrightcompletecode. fs_h_jt_rectappendrightcompletecode + S (jt_d_rectappendright) = S ((S (jt_i_rectappendright)) * F)) /\ exists fs_q_jt_rectappendrightcompletecode. E = fs_q_jt_rectappendrightcompletecode * S ((S (jt_i_rectappendright)) * F) + (jt_d_rectappendright))) /\ (((exists fs_h_jt_rectappendrightcompletescale. fs_h_jt_rectappendrightcompletescale + S (jt_e_rectappendright) = S ((S (jt_i_rectappendright)) * H)) /\ exists fs_q_jt_rectappendrightcompletescale. G = fs_q_jt_rectappendrightcompletescale * S ((S (jt_i_rectappendright)) * H) + (jt_e_rectappendright))))) /\ (forall jt_index_rectappendrightrepresented jt_left_rectappendrightrepresented jt_right_rectappendrightrepresented. (exists jt_gap_rectappendrightrepresentedindex. jt_gap_rectappendrightrepresentedindex+S (jt_index_rectappendrightrepresented)=(k)) -> (((exists fs_h_jt_rectappendrightrepresentedleft. fs_h_jt_rectappendrightrepresentedleft + S (jt_left_rectappendrightrepresented) = S ((S (jt_index_rectappendrightrepresented)) * jt_c_rectappendright)) /\ exists fs_q_jt_rectappendrightrepresentedleft. jt_b_rectappendright = fs_q_jt_rectappendrightrepresentedleft * S ((S (jt_index_rectappendrightrepresented)) * jt_c_rectappendright) + (jt_left_rectappendrightrepresented))) -> (((exists fs_h_jt_rectappendrightrepresentedright. fs_h_jt_rectappendrightrepresentedright + S (jt_right_rectappendrightrepresented) = S ((S (jt_index_rectappendrightrepresented)) * jt_e_rectappendright)) /\ exists fs_q_jt_rectappendrightrepresentedright. jt_d_rectappendright = fs_q_jt_rectappendrightrepresentedright * S ((S (jt_index_rectappendrightrepresented)) * jt_e_rectappendright) + (jt_right_rectappendrightrepresented))) -> jt_left_rectappendrightrepresented=jt_right_rectappendrightrepresented))))) /\ (forall jt_i_rectappendright jt_h_rectappendright jt_b_rectappendright jt_c_rectappendright jt_d_rectappendright jt_e_rectappendright. (exists jt_gap_rectappendrightfirstindex. jt_gap_rectappendrightfirstindex+S (jt_i_rectappendright)=(v)) -> (exists jt_gap_rectappendrightsecondindex. jt_gap_rectappendrightsecondindex+S (jt_h_rectappendright)=(v)) -> (((((exists fs_h_jt_rectappendrightfirstcode. fs_h_jt_rectappendrightfirstcode + S (jt_b_rectappendright) = S ((S (jt_i_rectappendright)) * F)) /\ exists fs_q_jt_rectappendrightfirstcode. E = fs_q_jt_rectappendrightfirstcode * S ((S (jt_i_rectappendright)) * F) + (jt_b_rectappendright))) /\ (((exists fs_h_jt_rectappendrightfirstscale. fs_h_jt_rectappendrightfirstscale + S (jt_c_rectappendright) = S ((S (jt_i_rectappendright)) * H)) /\ exists fs_q_jt_rectappendrightfirstscale. G = fs_q_jt_rectappendrightfirstscale * S ((S (jt_i_rectappendright)) * H) + (jt_c_rectappendright))))) -> (((((exists fs_h_jt_rectappendrightsecondcode. fs_h_jt_rectappendrightsecondcode + S (jt_d_rectappendright) = S ((S (jt_h_rectappendright)) * F)) /\ exists fs_q_jt_rectappendrightsecondcode. E = fs_q_jt_rectappendrightsecondcode * S ((S (jt_h_rectappendright)) * F) + (jt_d_rectappendright))) /\ (((exists fs_h_jt_rectappendrightsecondscale. fs_h_jt_rectappendrightsecondscale + S (jt_e_rectappendright) = S ((S (jt_h_rectappendright)) * H)) /\ exists fs_q_jt_rectappendrightsecondscale. G = fs_q_jt_rectappendrightsecondscale * S ((S (jt_h_rectappendright)) * H) + (jt_e_rectappendright))))) -> (forall jt_index_rectappendrightsame jt_left_rectappendrightsame jt_right_rectappendrightsame. (exists jt_gap_rectappendrightsameindex. jt_gap_rectappendrightsameindex+S (jt_index_rectappendrightsame)=(k)) -> (((exists fs_h_jt_rectappendrightsameleft. fs_h_jt_rectappendrightsameleft + S (jt_left_rectappendrightsame) = S ((S (jt_index_rectappendrightsame)) * jt_c_rectappendright)) /\ exists fs_q_jt_rectappendrightsameleft. jt_b_rectappendright = fs_q_jt_rectappendrightsameleft * S ((S (jt_index_rectappendrightsame)) * jt_c_rectappendright) + (jt_left_rectappendrightsame))) -> (((exists fs_h_jt_rectappendrightsameright. fs_h_jt_rectappendrightsameright + S (jt_right_rectappendrightsame) = S ((S (jt_index_rectappendrightsame)) * jt_e_rectappendright)) /\ exists fs_q_jt_rectappendrightsameright. jt_d_rectappendright = fs_q_jt_rectappendrightsameright * S ((S (jt_index_rectappendrightsame)) * jt_e_rectappendright) + (jt_right_rectappendrightsame))) -> jt_left_rectappendrightsame=jt_right_rectappendrightsame) -> jt_i_rectappendright=jt_h_rectappendright))))) -> (forall jt_index_rectappendold. (exists jt_gap_rectappendoldindex. jt_gap_rectappendoldindex+S (jt_index_rectappendold)=(q)) -> exists jt_row_rectappendold jt_column_rectappendold jt_b_rectappendold jt_c_rectappendold jt_d_rectappendold jt_e_rectappendold jt_f_rectappendold jt_g_rectappendold. ((exists jt_gap_rectappendoldrow. jt_gap_rectappendoldrow+S (jt_row_rectappendold)=(u)) /\ (((exists jt_gap_rectappendoldcolumn. jt_gap_rectappendoldcolumn+S (jt_column_rectappendold)=(v)) /\ (((jt_index_rectappendold=(v)*jt_row_rectappendold+jt_column_rectappendold) /\ (((((((exists fs_h_jt_rectappendoldleftcode. fs_h_jt_rectappendoldleftcode + S (jt_b_rectappendold) = S ((S (jt_row_rectappendold)) * B)) /\ exists fs_q_jt_rectappendoldleftcode. A = fs_q_jt_rectappendoldleftcode * S ((S (jt_row_rectappendold)) * B) + (jt_b_rectappendold))) /\ (((exists fs_h_jt_rectappendoldleftscale. fs_h_jt_rectappendoldleftscale + S (jt_c_rectappendold) = S ((S (jt_row_rectappendold)) * D)) /\ exists fs_q_jt_rectappendoldleftscale. C = fs_q_jt_rectappendoldleftscale * S ((S (jt_row_rectappendold)) * D) + (jt_c_rectappendold))))) /\ (((((((exists fs_h_jt_rectappendoldrightcode. fs_h_jt_rectappendoldrightcode + S (jt_d_rectappendold) = S ((S (jt_column_rectappendold)) * F)) /\ exists fs_q_jt_rectappendoldrightcode. E = fs_q_jt_rectappendoldrightcode * S ((S (jt_column_rectappendold)) * F) + (jt_d_rectappendold))) /\ (((exists fs_h_jt_rectappendoldrightscale. fs_h_jt_rectappendoldrightscale + S (jt_e_rectappendold) = S ((S (jt_column_rectappendold)) * H)) /\ exists fs_q_jt_rectappendoldrightscale. G = fs_q_jt_rectappendoldrightscale * S ((S (jt_column_rectappendold)) * H) + (jt_e_rectappendold))))) /\ (((((((exists fs_h_jt_rectappendoldoutputcode. fs_h_jt_rectappendoldoutputcode + S (jt_f_rectappendold) = S ((S (jt_index_rectappendold)) * Q)) /\ exists fs_q_jt_rectappendoldoutputcode. P = fs_q_jt_rectappendoldoutputcode * S ((S (jt_index_rectappendold)) * Q) + (jt_f_rectappendold))) /\ (((exists fs_h_jt_rectappendoldoutputscale. fs_h_jt_rectappendoldoutputscale + S (jt_g_rectappendold) = S ((S (jt_index_rectappendold)) * T)) /\ exists fs_q_jt_rectappendoldoutputscale. R = fs_q_jt_rectappendoldoutputscale * S ((S (jt_index_rectappendold)) * T) + (jt_g_rectappendold))))) /\ (((((forall jt_index_rectappendoldcrtbound. (exists jt_gap_rectappendoldcrtboundindex. jt_gap_rectappendoldcrtboundindex+S (jt_index_rectappendoldcrtbound)=(k)) -> exists jt_value_rectappendoldcrtbound. ((((exists fs_h_jt_rectappendoldcrtboundat. fs_h_jt_rectappendoldcrtboundat + S (jt_value_rectappendoldcrtbound) = S ((S (jt_index_rectappendoldcrtbound)) * jt_g_rectappendold)) /\ exists fs_q_jt_rectappendoldcrtboundat. jt_f_rectappendold = fs_q_jt_rectappendoldcrtboundat * S ((S (jt_index_rectappendoldcrtbound)) * jt_g_rectappendold) + (jt_value_rectappendoldcrtbound))) /\ (exists jt_gap_rectappendoldcrtboundvalue. jt_gap_rectappendoldcrtboundvalue+S (jt_value_rectappendoldcrtbound)=(m*n)))) /\ (((forall jt_index_rectappendoldcrtleft jt_left_rectappendoldcrtleft jt_right_rectappendoldcrtleft. (exists jt_gap_rectappendoldcrtleftindex. jt_gap_rectappendoldcrtleftindex+S (jt_index_rectappendoldcrtleft)=(k)) -> (((exists fs_h_jt_rectappendoldcrtleftleft. fs_h_jt_rectappendoldcrtleftleft + S (jt_left_rectappendoldcrtleft) = S ((S (jt_index_rectappendoldcrtleft)) * jt_g_rectappendold)) /\ exists fs_q_jt_rectappendoldcrtleftleft. jt_f_rectappendold = fs_q_jt_rectappendoldcrtleftleft * S ((S (jt_index_rectappendoldcrtleft)) * jt_g_rectappendold) + (jt_left_rectappendoldcrtleft))) -> (((exists fs_h_jt_rectappendoldcrtleftright. fs_h_jt_rectappendoldcrtleftright + S (jt_right_rectappendoldcrtleft) = S ((S (jt_index_rectappendoldcrtleft)) * jt_c_rectappendold)) /\ exists fs_q_jt_rectappendoldcrtleftright. jt_b_rectappendold = fs_q_jt_rectappendoldcrtleftright * S ((S (jt_index_rectappendoldcrtleft)) * jt_c_rectappendold) + (jt_right_rectappendoldcrtleft))) -> (exists jt_left_rectappendoldcrtleftmod jt_right_rectappendoldcrtleftmod. (jt_left_rectappendoldcrtleft)+(m)*jt_left_rectappendoldcrtleftmod=(jt_right_rectappendoldcrtleft)+(m)*jt_right_rectappendoldcrtleftmod)) /\ (forall jt_index_rectappendoldcrtright jt_left_rectappendoldcrtright jt_right_rectappendoldcrtright. (exists jt_gap_rectappendoldcrtrightindex. jt_gap_rectappendoldcrtrightindex+S (jt_index_rectappendoldcrtright)=(k)) -> (((exists fs_h_jt_rectappendoldcrtrightleft. fs_h_jt_rectappendoldcrtrightleft + S (jt_left_rectappendoldcrtright) = S ((S (jt_index_rectappendoldcrtright)) * jt_g_rectappendold)) /\ exists fs_q_jt_rectappendoldcrtrightleft. jt_f_rectappendold = fs_q_jt_rectappendoldcrtrightleft * S ((S (jt_index_rectappendoldcrtright)) * jt_g_rectappendold) + (jt_left_rectappendoldcrtright))) -> (((exists fs_h_jt_rectappendoldcrtrightright. fs_h_jt_rectappendoldcrtrightright + S (jt_right_rectappendoldcrtright) = S ((S (jt_index_rectappendoldcrtright)) * jt_e_rectappendold)) /\ exists fs_q_jt_rectappendoldcrtrightright. jt_d_rectappendold = fs_q_jt_rectappendoldcrtrightright * S ((S (jt_index_rectappendoldcrtright)) * jt_e_rectappendold) + (jt_right_rectappendoldcrtright))) -> (exists jt_left_rectappendoldcrtrightmod jt_right_rectappendoldcrtrightmod. (jt_left_rectappendoldcrtright)+(n)*jt_left_rectappendoldcrtrightmod=(jt_right_rectappendoldcrtright)+(n)*jt_right_rectappendoldcrtrightmod)))))) /\ (forall jt_divisor_rectappendoldprimitive. (exists jt_factor_rectappendoldprimitivemodulus. (m*n)=(jt_divisor_rectappendoldprimitive)*jt_factor_rectappendoldprimitivemodulus) -> (forall jt_index_rectappendoldprimitivecoordinates jt_value_rectappendoldprimitivecoordinates. (exists jt_gap_rectappendoldprimitivecoordinatesindex. jt_gap_rectappendoldprimitivecoordinatesindex+S (jt_index_rectappendoldprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectappendoldprimitivecoordinatesat. fs_h_jt_rectappendoldprimitivecoordinatesat + S (jt_value_rectappendoldprimitivecoordinates) = S ((S (jt_index_rectappendoldprimitivecoordinates)) * jt_g_rectappendold)) /\ exists fs_q_jt_rectappendoldprimitivecoordinatesat. jt_f_rectappendold = fs_q_jt_rectappendoldprimitivecoordinatesat * S ((S (jt_index_rectappendoldprimitivecoordinates)) * jt_g_rectappendold) + (jt_value_rectappendoldprimitivecoordinates))) -> (exists jt_factor_rectappendoldprimitivecoordinatesdivides. (jt_value_rectappendoldprimitivecoordinates)=(jt_divisor_rectappendoldprimitive)*jt_factor_rectappendoldprimitivecoordinatesdivides)) -> jt_divisor_rectappendoldprimitive=1))))))))))))))) -> (exists jt_gap_rectappendbound. jt_gap_rectappendbound+S (q)=(u*v)) -> exists U V W X. forall jt_index_rectappendnew. (exists jt_gap_rectappendnewindex. jt_gap_rectappendnewindex+S (jt_index_rectappendnew)=(S q)) -> exists jt_row_rectappendnew jt_column_rectappendnew jt_b_rectappendnew jt_c_rectappendnew jt_d_rectappendnew jt_e_rectappendnew jt_f_rectappendnew jt_g_rectappendnew. ((exists jt_gap_rectappendnewrow. jt_gap_rectappendnewrow+S (jt_row_rectappendnew)=(u)) /\ (((exists jt_gap_rectappendnewcolumn. jt_gap_rectappendnewcolumn+S (jt_column_rectappendnew)=(v)) /\ (((jt_index_rectappendnew=(v)*jt_row_rectappendnew+jt_column_rectappendnew) /\ (((((((exists fs_h_jt_rectappendnewleftcode. fs_h_jt_rectappendnewleftcode + S (jt_b_rectappendnew) = S ((S (jt_row_rectappendnew)) * B)) /\ exists fs_q_jt_rectappendnewleftcode. A = fs_q_jt_rectappendnewleftcode * S ((S (jt_row_rectappendnew)) * B) + (jt_b_rectappendnew))) /\ (((exists fs_h_jt_rectappendnewleftscale. fs_h_jt_rectappendnewleftscale + S (jt_c_rectappendnew) = S ((S (jt_row_rectappendnew)) * D)) /\ exists fs_q_jt_rectappendnewleftscale. C = fs_q_jt_rectappendnewleftscale * S ((S (jt_row_rectappendnew)) * D) + (jt_c_rectappendnew))))) /\ (((((((exists fs_h_jt_rectappendnewrightcode. fs_h_jt_rectappendnewrightcode + S (jt_d_rectappendnew) = S ((S (jt_column_rectappendnew)) * F)) /\ exists fs_q_jt_rectappendnewrightcode. E = fs_q_jt_rectappendnewrightcode * S ((S (jt_column_rectappendnew)) * F) + (jt_d_rectappendnew))) /\ (((exists fs_h_jt_rectappendnewrightscale. fs_h_jt_rectappendnewrightscale + S (jt_e_rectappendnew) = S ((S (jt_column_rectappendnew)) * H)) /\ exists fs_q_jt_rectappendnewrightscale. G = fs_q_jt_rectappendnewrightscale * S ((S (jt_column_rectappendnew)) * H) + (jt_e_rectappendnew))))) /\ (((((((exists fs_h_jt_rectappendnewoutputcode. fs_h_jt_rectappendnewoutputcode + S (jt_f_rectappendnew) = S ((S (jt_index_rectappendnew)) * V)) /\ exists fs_q_jt_rectappendnewoutputcode. U = fs_q_jt_rectappendnewoutputcode * S ((S (jt_index_rectappendnew)) * V) + (jt_f_rectappendnew))) /\ (((exists fs_h_jt_rectappendnewoutputscale. fs_h_jt_rectappendnewoutputscale + S (jt_g_rectappendnew) = S ((S (jt_index_rectappendnew)) * X)) /\ exists fs_q_jt_rectappendnewoutputscale. W = fs_q_jt_rectappendnewoutputscale * S ((S (jt_index_rectappendnew)) * X) + (jt_g_rectappendnew))))) /\ (((((forall jt_index_rectappendnewcrtbound. (exists jt_gap_rectappendnewcrtboundindex. jt_gap_rectappendnewcrtboundindex+S (jt_index_rectappendnewcrtbound)=(k)) -> exists jt_value_rectappendnewcrtbound. ((((exists fs_h_jt_rectappendnewcrtboundat. fs_h_jt_rectappendnewcrtboundat + S (jt_value_rectappendnewcrtbound) = S ((S (jt_index_rectappendnewcrtbound)) * jt_g_rectappendnew)) /\ exists fs_q_jt_rectappendnewcrtboundat. jt_f_rectappendnew = fs_q_jt_rectappendnewcrtboundat * S ((S (jt_index_rectappendnewcrtbound)) * jt_g_rectappendnew) + (jt_value_rectappendnewcrtbound))) /\ (exists jt_gap_rectappendnewcrtboundvalue. jt_gap_rectappendnewcrtboundvalue+S (jt_value_rectappendnewcrtbound)=(m*n)))) /\ (((forall jt_index_rectappendnewcrtleft jt_left_rectappendnewcrtleft jt_right_rectappendnewcrtleft. (exists jt_gap_rectappendnewcrtleftindex. jt_gap_rectappendnewcrtleftindex+S (jt_index_rectappendnewcrtleft)=(k)) -> (((exists fs_h_jt_rectappendnewcrtleftleft. fs_h_jt_rectappendnewcrtleftleft + S (jt_left_rectappendnewcrtleft) = S ((S (jt_index_rectappendnewcrtleft)) * jt_g_rectappendnew)) /\ exists fs_q_jt_rectappendnewcrtleftleft. jt_f_rectappendnew = fs_q_jt_rectappendnewcrtleftleft * S ((S (jt_index_rectappendnewcrtleft)) * jt_g_rectappendnew) + (jt_left_rectappendnewcrtleft))) -> (((exists fs_h_jt_rectappendnewcrtleftright. fs_h_jt_rectappendnewcrtleftright + S (jt_right_rectappendnewcrtleft) = S ((S (jt_index_rectappendnewcrtleft)) * jt_c_rectappendnew)) /\ exists fs_q_jt_rectappendnewcrtleftright. jt_b_rectappendnew = fs_q_jt_rectappendnewcrtleftright * S ((S (jt_index_rectappendnewcrtleft)) * jt_c_rectappendnew) + (jt_right_rectappendnewcrtleft))) -> (exists jt_left_rectappendnewcrtleftmod jt_right_rectappendnewcrtleftmod. (jt_left_rectappendnewcrtleft)+(m)*jt_left_rectappendnewcrtleftmod=(jt_right_rectappendnewcrtleft)+(m)*jt_right_rectappendnewcrtleftmod)) /\ (forall jt_index_rectappendnewcrtright jt_left_rectappendnewcrtright jt_right_rectappendnewcrtright. (exists jt_gap_rectappendnewcrtrightindex. jt_gap_rectappendnewcrtrightindex+S (jt_index_rectappendnewcrtright)=(k)) -> (((exists fs_h_jt_rectappendnewcrtrightleft. fs_h_jt_rectappendnewcrtrightleft + S (jt_left_rectappendnewcrtright) = S ((S (jt_index_rectappendnewcrtright)) * jt_g_rectappendnew)) /\ exists fs_q_jt_rectappendnewcrtrightleft. jt_f_rectappendnew = fs_q_jt_rectappendnewcrtrightleft * S ((S (jt_index_rectappendnewcrtright)) * jt_g_rectappendnew) + (jt_left_rectappendnewcrtright))) -> (((exists fs_h_jt_rectappendnewcrtrightright. fs_h_jt_rectappendnewcrtrightright + S (jt_right_rectappendnewcrtright) = S ((S (jt_index_rectappendnewcrtright)) * jt_e_rectappendnew)) /\ exists fs_q_jt_rectappendnewcrtrightright. jt_d_rectappendnew = fs_q_jt_rectappendnewcrtrightright * S ((S (jt_index_rectappendnewcrtright)) * jt_e_rectappendnew) + (jt_right_rectappendnewcrtright))) -> (exists jt_left_rectappendnewcrtrightmod jt_right_rectappendnewcrtrightmod. (jt_left_rectappendnewcrtright)+(n)*jt_left_rectappendnewcrtrightmod=(jt_right_rectappendnewcrtright)+(n)*jt_right_rectappendnewcrtrightmod)))))) /\ (forall jt_divisor_rectappendnewprimitive. (exists jt_factor_rectappendnewprimitivemodulus. (m*n)=(jt_divisor_rectappendnewprimitive)*jt_factor_rectappendnewprimitivemodulus) -> (forall jt_index_rectappendnewprimitivecoordinates jt_value_rectappendnewprimitivecoordinates. (exists jt_gap_rectappendnewprimitivecoordinatesindex. jt_gap_rectappendnewprimitivecoordinatesindex+S (jt_index_rectappendnewprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectappendnewprimitivecoordinatesat. fs_h_jt_rectappendnewprimitivecoordinatesat + S (jt_value_rectappendnewprimitivecoordinates) = S ((S (jt_index_rectappendnewprimitivecoordinates)) * jt_g_rectappendnew)) /\ exists fs_q_jt_rectappendnewprimitivecoordinatesat. jt_f_rectappendnew = fs_q_jt_rectappendnewprimitivecoordinatesat * S ((S (jt_index_rectappendnewprimitivecoordinates)) * jt_g_rectappendnew) + (jt_value_rectappendnewprimitivecoordinates))) -> (exists jt_factor_rectappendnewprimitivecoordinatesdivides. (jt_value_rectappendnewprimitivecoordinates)=(jt_divisor_rectappendnewprimitive)*jt_factor_rectappendnewprimitivecoordinatesdivides)) -> jt_divisor_rectappendnewprimitive=1))))))))))))))

Constructive proof overview

Generated structural guide

At the next flat index, construct the actual primitive CRT tuple and append its code and scale to fresh beta lists.

The unchanged tactic script uses 7 declared prerequisites and contains 217 exact native proof lines.

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

Proof neighborhood

Direct dependencies

JT0034 jordan_rectangle_width_nonzero division_remainder_exists Alpha theorem; checked-use authorized JT0035 jordan_rectangle_quotient_bound JT0033 jordan_primitive_crt_tuple_exists JT0021 jordan_tuple_outer_append_exists finite_lt_succ_eq_or_lt Alpha theorem; checked-use authorized JT001F jordan_tuple_equal_entry

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

217 script commands · 67 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 (5)

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 q
  9. L19
    intro hm
  10. L20
    intro hn
03Fix variables and assumptionsL21–25

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

  1. L21
    intro hcop
  2. L22
    intro hleft
  3. L23
    intro hright
  4. L24
    intro hold
  5. L25
    intro hq
04Establish hvL26–33

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan rectangle width nonzero.

  1. L26
    have hv : ~(v=0)
  2. L27
    intro hvzero
  3. L28
    specialize jordan_rectangle_width_nonzero (u)
  4. L29
    specialize jordan_rectangle_width_nonzero (v)
  5. L30
    specialize jordan_rectangle_width_nonzero (q)
  6. L31
    apply jordan_rectangle_width_nonzero
  7. L32
    exact hq
  8. L33
    exact hvzero
05Establish hcoordsL34–38

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

  1. L34
    have hcoords : exists i j. ((q=v*i+j) /\ (exists jt_gap_rectcolumn. jt_gap_rectcolumn+S (j)=(v)))
  2. L35
    specialize division_remainder_exists (v)
  3. L36
    specialize division_remainder_exists (q)
  4. L37
    apply division_remainder_exists
  5. L38
    exact hv
06Separate the logical casesL39–41

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

  1. L39
    cases hcoords
  2. L40
    cases hcoords_witness
  3. L41
    cases hcoords_witness_witness
07Establish hrowL42–51

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan rectangle quotient bound.

  1. L42
    have hrow : exists jt_gap_rectrow. jt_gap_rectrow+S (x)=(u)
  2. L43
    specialize jordan_rectangle_quotient_bound (u)
  3. L44
    specialize jordan_rectangle_quotient_bound (v)
  4. L45
    specialize jordan_rectangle_quotient_bound (q)
  5. L46
    specialize jordan_rectangle_quotient_bound (x)
  6. L47
    specialize jordan_rectangle_quotient_bound (x1)
  7. L48
    apply jordan_rectangle_quotient_bound
  8. L49
    exact hq
  9. L50
    exact hcoords_witness_witness_left
  10. L51
    exact hcoords_witness_witness_right
08Establish hlsoundL52–52

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

  1. L52
    have hlsound : ∀ i. Lt(i,u) → ∃ x. ∃ y. BetaAt(A,B,i,x) ∧ BetaAt(C,D,i,y) ∧ (BetaPrefixInto(x,y,k,m) ∧ JordanPrimitiveTuple(m,x,y,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleLtBetaAt
09Establish hcopyL53–54

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

  1. L53
    have hcopy : JordanTupleEnumeration(k,m,A,B,C,D,u)Definitions: JordanTupleEnumeration
  2. L54
    exact hleft
10Separate the logical casesL55–55

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

  1. L55
    cases hcopy
11Use earlier factsL56–56

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

  1. L56
    exact hcopy_left
12Establish hlL57–60

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

  1. L57
    have hl : ∃ b. ∃ c. BetaAt(A,B,x,b) ∧ BetaAt(C,D,x,c) ∧ (BetaPrefixInto(b,c,k,m) ∧ JordanPrimitiveTuple(m,b,c,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleBetaAt
  2. L58
    specialize hlsound (x)
  3. L59
    apply hlsound
  4. L60
    exact hrow
13Separate the logical casesL61–64

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

  1. L61
    cases hl
  2. L62
    cases hl_witness
  3. L63
    cases hl_witness_witness
  4. L64
    cases hl_witness_witness_right
14Establish hrsoundL65–65

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

  1. L65
    have hrsound : ∀ i. Lt(i,v) → ∃ x. ∃ y. BetaAt(E,F,i,x) ∧ BetaAt(G,H,i,y) ∧ (BetaPrefixInto(x,y,k,n) ∧ JordanPrimitiveTuple(n,x,y,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleLtBetaAt
15Establish hcopyL66–67

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

  1. L66
    have hcopy : JordanTupleEnumeration(k,n,E,F,G,H,v)Definitions: JordanTupleEnumeration
  2. L67
    exact hright
16Separate the logical casesL68–68

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

  1. L68
    cases hcopy
17Use earlier factsL69–69

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

  1. L69
    exact hcopy_left
18Establish hrL70–73

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

  1. L70
    have hr : ∃ b. ∃ c. BetaAt(E,F,x1,b) ∧ BetaAt(G,H,x1,c) ∧ (BetaPrefixInto(b,c,k,n) ∧ JordanPrimitiveTuple(n,b,c,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleBetaAt
  2. L71
    specialize hrsound (x1)
  3. L72
    apply hrsound
  4. L73
    exact hcoords_witness_witness_right
19Separate the logical casesL74–77

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

  1. L74
    cases hr
  2. L75
    cases hr_witness
  3. L76
    cases hr_witness_witness
  4. L77
    cases hr_witness_witness_right
20Establish hcL78–87

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

  1. L78
    have hc : ∃ f. ∃ g. JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k)Definitions: JordanPrimitiveTupleJordanCanonicalTupleCRT
  2. L79
    specialize jordan_primitive_crt_tuple_exists (m)
  3. L80
    specialize jordan_primitive_crt_tuple_exists (n)
  4. L81
    specialize jordan_primitive_crt_tuple_exists (x2)
  5. L82
    specialize jordan_primitive_crt_tuple_exists (x3)
  6. L83
    specialize jordan_primitive_crt_tuple_exists (x4)
  7. L84
    specialize jordan_primitive_crt_tuple_exists (x5)
  8. L85
    specialize jordan_primitive_crt_tuple_exists (k)
  9. L86
    apply jordan_primitive_crt_tuple_exists
  10. L87
    exact hm
21Use earlier factsL88–91

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

  1. L88
    exact hn
  2. L89
    exact hcop
  3. L90
    exact hl_witness_witness_right_right
  4. L91
    exact hr_witness_witness_right_right
22Separate the logical casesL92–94

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

  1. L92
    cases hc
  2. L93
    cases hc_witness
  3. L94
    cases hc_witness_witness
23Establish hextL95–103

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply jordan tuple outer append exists.

  1. L95
    have hext : ∃ U. ∃ V. ∃ W. ∃ X. IntegerVectorZero(P,Q,U,V,q) ∧ (IntegerVectorZero(R,T,W,X,q) ∧ (BetaAt(U,V,q,x6) ∧ BetaAt(W,X,q,x7)))Definitions: IntegerVectorZeroBetaAt
  2. L96
    specialize jordan_tuple_outer_append_exists (P)
  3. L97
    specialize jordan_tuple_outer_append_exists (Q)
  4. L98
    specialize jordan_tuple_outer_append_exists (R)
  5. L99
    specialize jordan_tuple_outer_append_exists (T)
  6. L100
    specialize jordan_tuple_outer_append_exists (q)
  7. L101
    specialize jordan_tuple_outer_append_exists (x6)
  8. L102
    specialize jordan_tuple_outer_append_exists (x7)
  9. L103
    apply jordan_tuple_outer_append_exists
24Separate the logical casesL104–110

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

  1. L104
    cases hext
  2. L105
    cases hext_witness
  3. L106
    cases hext_witness_witness
  4. L107
    cases hext_witness_witness_witness
  5. L108
    cases hext_witness_witness_witness_witness
  6. L109
    cases hext_witness_witness_witness_witness_right
  7. L110
    cases hext_witness_witness_witness_witness_right_right
25Construct an explicit witnessL111–114

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

  1. L111
    exists x8
  2. L112
    exists x9
  3. L113
    exists x10
  4. L114
    exists x11
26Fix variables and assumptionsL115–116

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

  1. L115
    intro p
  2. L116
    intro hp
27Establish hpcL117–121

Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.

  1. L117
    have hpc : p=q \/ (exists jt_gap_rectnewcase. jt_gap_rectnewcase+S (p)=(q))
  2. L118
    specialize finite_lt_succ_eq_or_lt (q)
  3. L119
    specialize finite_lt_succ_eq_or_lt (p)
  4. L120
    apply finite_lt_succ_eq_or_lt
  5. L121
    exact hp
28Separate the logical casesL122–122

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

  1. L122
    cases hpc
29Construct an explicit witnessL123–130

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

  1. L123
    exists x
  2. L124
    exists x1
  3. L125
    exists x2
  4. L126
    exists x3
  5. L127
    exists x4
  6. L128
    exists x5
  7. L129
    exists x6
  8. L130
    exists x7
30Separate the logical casesL131–131

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

  1. L131
    split
31Use earlier factsL132–132

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

  1. L132
    exact hrow
32Separate the logical casesL133–133

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

  1. L133
    split
33Use earlier factsL134–134

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

  1. L134
    exact hcoords_witness_witness_right
34Separate the logical casesL135–135

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

  1. L135
    split
35Calculate and transport equalitiesL136–136

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L136
    rewrite hpc_left
36Use earlier factsL137–137

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

  1. L137
    exact hcoords_witness_witness_left
37Separate the logical casesL138–138

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

  1. L138
    split
38Use earlier factsL139–139

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

  1. L139
    exact hl_witness_witness_left
39Separate the logical casesL140–140

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

  1. L140
    split
40Use earlier factsL141–141

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

  1. L141
    exact hr_witness_witness_left
41Separate the logical casesL142–143

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

  1. L142
    split
  2. L143
    split
42Calculate and transport equalitiesL144–145

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L144
    rewrite hpc_left
  2. L145
    rewrite hpc_left
43Use earlier factsL146–146

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

  1. L146
    exact hext_witness_witness_witness_witness_right_right_left
44Calculate and transport equalitiesL147–148

Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.

  1. L147
    rewrite hpc_left
  2. L148
    rewrite hpc_left
45Use earlier factsL149–149

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

  1. L149
    exact hext_witness_witness_witness_witness_right_right_right
46Separate the logical casesL150–150

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

  1. L150
    split
47Use earlier factsL151–152

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

  1. L151
    exact hc_witness_witness_left
  2. L152
    exact hc_witness_witness_right
48Establish hprevL153–156

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

  1. L153
    have hprev : ∃ 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. L154
    specialize hold (p)
  3. L155
    apply hold
  4. L156
    exact hpc_right
49Separate the logical casesL157–166

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

  1. L157
    cases hprev
  2. L158
    cases hprev_witness
  3. L159
    cases hprev_witness_witness
  4. L160
    cases hprev_witness_witness_witness
  5. L161
    cases hprev_witness_witness_witness_witness
  6. L162
    cases hprev_witness_witness_witness_witness_witness
  7. L163
    cases hprev_witness_witness_witness_witness_witness_witness
  8. L164
    cases hprev_witness_witness_witness_witness_witness_witness_witness
  9. L165
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness
  10. L166
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right
50Separate the logical casesL167–172

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

  1. L167
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  2. L168
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  3. L169
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  4. L170
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  5. L171
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  6. L172
    cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
51Construct an explicit witnessL173–180

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

  1. L173
    exists x12
  2. L174
    exists x13
  3. L175
    exists x14
  4. L176
    exists x15
  5. L177
    exists x16
  6. L178
    exists x17
  7. L179
    exists x18
  8. L180
    exists x19
52Separate the logical casesL181–181

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

  1. L181
    split
53Use earlier factsL182–182

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

  1. L182
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_left
54Separate the logical casesL183–183

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

  1. L183
    split
55Use earlier factsL184–184

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

  1. L184
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_left
56Separate the logical casesL185–185

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

  1. L185
    split
57Use earlier factsL186–186

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

  1. L186
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_left
58Separate the logical casesL187–187

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

  1. L187
    split
59Use earlier factsL188–188

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

  1. L188
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
60Separate the logical casesL189–189

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

  1. L189
    split
61Use earlier factsL190–190

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

  1. L190
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
62Separate the logical casesL191–192

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

  1. L191
    split
  2. L192
    split
63Use earlier factsL193–202

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

  1. L193
    specialize jordan_tuple_equal_entry (P)
  2. L194
    specialize jordan_tuple_equal_entry (Q)
  3. L195
    specialize jordan_tuple_equal_entry (x8)
  4. L196
    specialize jordan_tuple_equal_entry (x9)
  5. L197
    specialize jordan_tuple_equal_entry (q)
  6. L198
    specialize jordan_tuple_equal_entry (p)
  7. L199
    specialize jordan_tuple_equal_entry (x18)
  8. L200
    apply jordan_tuple_equal_entry
  9. L201
    exact hext_witness_witness_witness_witness_left
  10. L202
    exact hpc_right
64Use earlier factsL203–212

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

  1. L203
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_left
  2. L204
    specialize jordan_tuple_equal_entry (R)
  3. L205
    specialize jordan_tuple_equal_entry (T)
  4. L206
    specialize jordan_tuple_equal_entry (x10)
  5. L207
    specialize jordan_tuple_equal_entry (x11)
  6. L208
    specialize jordan_tuple_equal_entry (q)
  7. L209
    specialize jordan_tuple_equal_entry (p)
  8. L210
    specialize jordan_tuple_equal_entry (x19)
  9. L211
    apply jordan_tuple_equal_entry
  10. L212
    exact hext_witness_witness_witness_witness_right_left
65Use earlier factsL213–214

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

  1. L213
    exact hpc_right
  2. L214
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_right
66Separate the logical casesL215–215

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

  1. L215
    split
67Use earlier factsL216–217

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

  1. L216
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  2. L217
    exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right

Library-wide reading audit

Original exact command ledger · 217 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 q
  19. 0019intro hm
  20. 0020intro hn
  21. 0021intro hcop
  22. 0022intro hleft
  23. 0023intro hright
  24. 0024intro hold
  25. 0025intro hq
  26. 0026have hv : ~(v=0)
  27. 0027intro hvzero
  28. 0028specialize jordan_rectangle_width_nonzero (u)
  29. 0029specialize jordan_rectangle_width_nonzero (v)
  30. 0030specialize jordan_rectangle_width_nonzero (q)
  31. 0031apply jordan_rectangle_width_nonzero
  32. 0032exact hq
  33. 0033exact hvzero
  34. 0034have hcoords : exists i j. ((q=v*i+j) /\ (exists jt_gap_rectcolumn. jt_gap_rectcolumn+S (j)=(v)))
  35. 0035specialize division_remainder_exists (v)
  36. 0036specialize division_remainder_exists (q)
  37. 0037apply division_remainder_exists
  38. 0038exact hv
  39. 0039cases hcoords
  40. 0040cases hcoords_witness
  41. 0041cases hcoords_witness_witness
  42. 0042have hrow : exists jt_gap_rectrow. jt_gap_rectrow+S (x)=(u)
  43. 0043specialize jordan_rectangle_quotient_bound (u)
  44. 0044specialize jordan_rectangle_quotient_bound (v)
  45. 0045specialize jordan_rectangle_quotient_bound (q)
  46. 0046specialize jordan_rectangle_quotient_bound (x)
  47. 0047specialize jordan_rectangle_quotient_bound (x1)
  48. 0048apply jordan_rectangle_quotient_bound
  49. 0049exact hq
  50. 0050exact hcoords_witness_witness_left
  51. 0051exact hcoords_witness_witness_right
  52. 0052have hlsound : forall i. (exists jt_gap_hlsoundindex. jt_gap_hlsoundindex+S (i)=(u)) -> exists b c. ((((((exists fs_h_jt_hlsoundentrycode. fs_h_jt_hlsoundentrycode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_hlsoundentrycode. A = fs_q_jt_hlsoundentrycode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_hlsoundentryscale. fs_h_jt_hlsoundentryscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_hlsoundentryscale. C = fs_q_jt_hlsoundentryscale * S ((S (i)) * D) + (c))))) /\ (((forall jt_index_hlsoundbound. (exists jt_gap_hlsoundboundindex. jt_gap_hlsoundboundindex+S (jt_index_hlsoundbound)=(k)) -> exists jt_value_hlsoundbound. ((((exists fs_h_jt_hlsoundboundat. fs_h_jt_hlsoundboundat + S (jt_value_hlsoundbound) = S ((S (jt_index_hlsoundbound)) * c)) /\ exists fs_q_jt_hlsoundboundat. b = fs_q_jt_hlsoundboundat * S ((S (jt_index_hlsoundbound)) * c) + (jt_value_hlsoundbound))) /\ (exists jt_gap_hlsoundboundvalue. jt_gap_hlsoundboundvalue+S (jt_value_hlsoundbound)=(m)))) /\ (forall jt_divisor_hlsoundprimitive. (exists jt_factor_hlsoundprimitivemodulus. (m)=(jt_divisor_hlsoundprimitive)*jt_factor_hlsoundprimitivemodulus) -> (forall jt_index_hlsoundprimitivecoordinates jt_value_hlsoundprimitivecoordinates. (exists jt_gap_hlsoundprimitivecoordinatesindex. jt_gap_hlsoundprimitivecoordinatesindex+S (jt_index_hlsoundprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hlsoundprimitivecoordinatesat. fs_h_jt_hlsoundprimitivecoordinatesat + S (jt_value_hlsoundprimitivecoordinates) = S ((S (jt_index_hlsoundprimitivecoordinates)) * c)) /\ exists fs_q_jt_hlsoundprimitivecoordinatesat. b = fs_q_jt_hlsoundprimitivecoordinatesat * S ((S (jt_index_hlsoundprimitivecoordinates)) * c) + (jt_value_hlsoundprimitivecoordinates))) -> (exists jt_factor_hlsoundprimitivecoordinatesdivides. (jt_value_hlsoundprimitivecoordinates)=(jt_divisor_hlsoundprimitive)*jt_factor_hlsoundprimitivecoordinatesdivides)) -> jt_divisor_hlsoundprimitive=1))))
  53. 0053have hcopy : ((forall jt_i_hlenumcopy. (exists jt_gap_hlenumcopysoundindex. jt_gap_hlenumcopysoundindex+S (jt_i_hlenumcopy)=(u)) -> exists jt_b_hlenumcopy jt_c_hlenumcopy. ((((((exists fs_h_jt_hlenumcopysoundcode. fs_h_jt_hlenumcopysoundcode + S (jt_b_hlenumcopy) = S ((S (jt_i_hlenumcopy)) * B)) /\ exists fs_q_jt_hlenumcopysoundcode. A = fs_q_jt_hlenumcopysoundcode * S ((S (jt_i_hlenumcopy)) * B) + (jt_b_hlenumcopy))) /\ (((exists fs_h_jt_hlenumcopysoundscale. fs_h_jt_hlenumcopysoundscale + S (jt_c_hlenumcopy) = S ((S (jt_i_hlenumcopy)) * D)) /\ exists fs_q_jt_hlenumcopysoundscale. C = fs_q_jt_hlenumcopysoundscale * S ((S (jt_i_hlenumcopy)) * D) + (jt_c_hlenumcopy))))) /\ (((forall jt_index_hlenumcopybound. (exists jt_gap_hlenumcopyboundindex. jt_gap_hlenumcopyboundindex+S (jt_index_hlenumcopybound)=(k)) -> exists jt_value_hlenumcopybound. ((((exists fs_h_jt_hlenumcopyboundat. fs_h_jt_hlenumcopyboundat + S (jt_value_hlenumcopybound) = S ((S (jt_index_hlenumcopybound)) * jt_c_hlenumcopy)) /\ exists fs_q_jt_hlenumcopyboundat. jt_b_hlenumcopy = fs_q_jt_hlenumcopyboundat * S ((S (jt_index_hlenumcopybound)) * jt_c_hlenumcopy) + (jt_value_hlenumcopybound))) /\ (exists jt_gap_hlenumcopyboundvalue. jt_gap_hlenumcopyboundvalue+S (jt_value_hlenumcopybound)=(m)))) /\ (forall jt_divisor_hlenumcopyprimitive. (exists jt_factor_hlenumcopyprimitivemodulus. (m)=(jt_divisor_hlenumcopyprimitive)*jt_factor_hlenumcopyprimitivemodulus) -> (forall jt_index_hlenumcopyprimitivecoordinates jt_value_hlenumcopyprimitivecoordinates. (exists jt_gap_hlenumcopyprimitivecoordinatesindex. jt_gap_hlenumcopyprimitivecoordinatesindex+S (jt_index_hlenumcopyprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hlenumcopyprimitivecoordinatesat. fs_h_jt_hlenumcopyprimitivecoordinatesat + S (jt_value_hlenumcopyprimitivecoordinates) = S ((S (jt_index_hlenumcopyprimitivecoordinates)) * jt_c_hlenumcopy)) /\ exists fs_q_jt_hlenumcopyprimitivecoordinatesat. jt_b_hlenumcopy = fs_q_jt_hlenumcopyprimitivecoordinatesat * S ((S (jt_index_hlenumcopyprimitivecoordinates)) * jt_c_hlenumcopy) + (jt_value_hlenumcopyprimitivecoordinates))) -> (exists jt_factor_hlenumcopyprimitivecoordinatesdivides. (jt_value_hlenumcopyprimitivecoordinates)=(jt_divisor_hlenumcopyprimitive)*jt_factor_hlenumcopyprimitivecoordinatesdivides)) -> jt_divisor_hlenumcopyprimitive=1))))) /\ (((forall jt_b_hlenumcopy jt_c_hlenumcopy. (forall jt_index_hlenumcopyinputbound. (exists jt_gap_hlenumcopyinputboundindex. jt_gap_hlenumcopyinputboundindex+S (jt_index_hlenumcopyinputbound)=(k)) -> exists jt_value_hlenumcopyinputbound. ((((exists fs_h_jt_hlenumcopyinputboundat. fs_h_jt_hlenumcopyinputboundat + S (jt_value_hlenumcopyinputbound) = S ((S (jt_index_hlenumcopyinputbound)) * jt_c_hlenumcopy)) /\ exists fs_q_jt_hlenumcopyinputboundat. jt_b_hlenumcopy = fs_q_jt_hlenumcopyinputboundat * S ((S (jt_index_hlenumcopyinputbound)) * jt_c_hlenumcopy) + (jt_value_hlenumcopyinputbound))) /\ (exists jt_gap_hlenumcopyinputboundvalue. jt_gap_hlenumcopyinputboundvalue+S (jt_value_hlenumcopyinputbound)=(m)))) -> (forall jt_divisor_hlenumcopyinputprimitive. (exists jt_factor_hlenumcopyinputprimitivemodulus. (m)=(jt_divisor_hlenumcopyinputprimitive)*jt_factor_hlenumcopyinputprimitivemodulus) -> (forall jt_index_hlenumcopyinputprimitivecoordinates jt_value_hlenumcopyinputprimitivecoordinates. (exists jt_gap_hlenumcopyinputprimitivecoordinatesindex. jt_gap_hlenumcopyinputprimitivecoordinatesindex+S (jt_index_hlenumcopyinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hlenumcopyinputprimitivecoordinatesat. fs_h_jt_hlenumcopyinputprimitivecoordinatesat + S (jt_value_hlenumcopyinputprimitivecoordinates) = S ((S (jt_index_hlenumcopyinputprimitivecoordinates)) * jt_c_hlenumcopy)) /\ exists fs_q_jt_hlenumcopyinputprimitivecoordinatesat. jt_b_hlenumcopy = fs_q_jt_hlenumcopyinputprimitivecoordinatesat * S ((S (jt_index_hlenumcopyinputprimitivecoordinates)) * jt_c_hlenumcopy) + (jt_value_hlenumcopyinputprimitivecoordinates))) -> (exists jt_factor_hlenumcopyinputprimitivecoordinatesdivides. (jt_value_hlenumcopyinputprimitivecoordinates)=(jt_divisor_hlenumcopyinputprimitive)*jt_factor_hlenumcopyinputprimitivecoordinatesdivides)) -> jt_divisor_hlenumcopyinputprimitive=1) -> exists jt_i_hlenumcopy jt_d_hlenumcopy jt_e_hlenumcopy. ((exists jt_gap_hlenumcopycompleteindex. jt_gap_hlenumcopycompleteindex+S (jt_i_hlenumcopy)=(u)) /\ (((((((exists fs_h_jt_hlenumcopycompletecode. fs_h_jt_hlenumcopycompletecode + S (jt_d_hlenumcopy) = S ((S (jt_i_hlenumcopy)) * B)) /\ exists fs_q_jt_hlenumcopycompletecode. A = fs_q_jt_hlenumcopycompletecode * S ((S (jt_i_hlenumcopy)) * B) + (jt_d_hlenumcopy))) /\ (((exists fs_h_jt_hlenumcopycompletescale. fs_h_jt_hlenumcopycompletescale + S (jt_e_hlenumcopy) = S ((S (jt_i_hlenumcopy)) * D)) /\ exists fs_q_jt_hlenumcopycompletescale. C = fs_q_jt_hlenumcopycompletescale * S ((S (jt_i_hlenumcopy)) * D) + (jt_e_hlenumcopy))))) /\ (forall jt_index_hlenumcopyrepresented jt_left_hlenumcopyrepresented jt_right_hlenumcopyrepresented. (exists jt_gap_hlenumcopyrepresentedindex. jt_gap_hlenumcopyrepresentedindex+S (jt_index_hlenumcopyrepresented)=(k)) -> (((exists fs_h_jt_hlenumcopyrepresentedleft. fs_h_jt_hlenumcopyrepresentedleft + S (jt_left_hlenumcopyrepresented) = S ((S (jt_index_hlenumcopyrepresented)) * jt_c_hlenumcopy)) /\ exists fs_q_jt_hlenumcopyrepresentedleft. jt_b_hlenumcopy = fs_q_jt_hlenumcopyrepresentedleft * S ((S (jt_index_hlenumcopyrepresented)) * jt_c_hlenumcopy) + (jt_left_hlenumcopyrepresented))) -> (((exists fs_h_jt_hlenumcopyrepresentedright. fs_h_jt_hlenumcopyrepresentedright + S (jt_right_hlenumcopyrepresented) = S ((S (jt_index_hlenumcopyrepresented)) * jt_e_hlenumcopy)) /\ exists fs_q_jt_hlenumcopyrepresentedright. jt_d_hlenumcopy = fs_q_jt_hlenumcopyrepresentedright * S ((S (jt_index_hlenumcopyrepresented)) * jt_e_hlenumcopy) + (jt_right_hlenumcopyrepresented))) -> jt_left_hlenumcopyrepresented=jt_right_hlenumcopyrepresented))))) /\ (forall jt_i_hlenumcopy jt_h_hlenumcopy jt_b_hlenumcopy jt_c_hlenumcopy jt_d_hlenumcopy jt_e_hlenumcopy. (exists jt_gap_hlenumcopyfirstindex. jt_gap_hlenumcopyfirstindex+S (jt_i_hlenumcopy)=(u)) -> (exists jt_gap_hlenumcopysecondindex. jt_gap_hlenumcopysecondindex+S (jt_h_hlenumcopy)=(u)) -> (((((exists fs_h_jt_hlenumcopyfirstcode. fs_h_jt_hlenumcopyfirstcode + S (jt_b_hlenumcopy) = S ((S (jt_i_hlenumcopy)) * B)) /\ exists fs_q_jt_hlenumcopyfirstcode. A = fs_q_jt_hlenumcopyfirstcode * S ((S (jt_i_hlenumcopy)) * B) + (jt_b_hlenumcopy))) /\ (((exists fs_h_jt_hlenumcopyfirstscale. fs_h_jt_hlenumcopyfirstscale + S (jt_c_hlenumcopy) = S ((S (jt_i_hlenumcopy)) * D)) /\ exists fs_q_jt_hlenumcopyfirstscale. C = fs_q_jt_hlenumcopyfirstscale * S ((S (jt_i_hlenumcopy)) * D) + (jt_c_hlenumcopy))))) -> (((((exists fs_h_jt_hlenumcopysecondcode. fs_h_jt_hlenumcopysecondcode + S (jt_d_hlenumcopy) = S ((S (jt_h_hlenumcopy)) * B)) /\ exists fs_q_jt_hlenumcopysecondcode. A = fs_q_jt_hlenumcopysecondcode * S ((S (jt_h_hlenumcopy)) * B) + (jt_d_hlenumcopy))) /\ (((exists fs_h_jt_hlenumcopysecondscale. fs_h_jt_hlenumcopysecondscale + S (jt_e_hlenumcopy) = S ((S (jt_h_hlenumcopy)) * D)) /\ exists fs_q_jt_hlenumcopysecondscale. C = fs_q_jt_hlenumcopysecondscale * S ((S (jt_h_hlenumcopy)) * D) + (jt_e_hlenumcopy))))) -> (forall jt_index_hlenumcopysame jt_left_hlenumcopysame jt_right_hlenumcopysame. (exists jt_gap_hlenumcopysameindex. jt_gap_hlenumcopysameindex+S (jt_index_hlenumcopysame)=(k)) -> (((exists fs_h_jt_hlenumcopysameleft. fs_h_jt_hlenumcopysameleft + S (jt_left_hlenumcopysame) = S ((S (jt_index_hlenumcopysame)) * jt_c_hlenumcopy)) /\ exists fs_q_jt_hlenumcopysameleft. jt_b_hlenumcopy = fs_q_jt_hlenumcopysameleft * S ((S (jt_index_hlenumcopysame)) * jt_c_hlenumcopy) + (jt_left_hlenumcopysame))) -> (((exists fs_h_jt_hlenumcopysameright. fs_h_jt_hlenumcopysameright + S (jt_right_hlenumcopysame) = S ((S (jt_index_hlenumcopysame)) * jt_e_hlenumcopy)) /\ exists fs_q_jt_hlenumcopysameright. jt_d_hlenumcopy = fs_q_jt_hlenumcopysameright * S ((S (jt_index_hlenumcopysame)) * jt_e_hlenumcopy) + (jt_right_hlenumcopysame))) -> jt_left_hlenumcopysame=jt_right_hlenumcopysame) -> jt_i_hlenumcopy=jt_h_hlenumcopy))))
  54. 0054exact hleft
  55. 0055cases hcopy
  56. 0056exact hcopy_left
  57. 0057have hl : exists b c. ((((((exists fs_h_jt_hlentrycode. fs_h_jt_hlentrycode + S (b) = S ((S (x)) * B)) /\ exists fs_q_jt_hlentrycode. A = fs_q_jt_hlentrycode * S ((S (x)) * B) + (b))) /\ (((exists fs_h_jt_hlentryscale. fs_h_jt_hlentryscale + S (c) = S ((S (x)) * D)) /\ exists fs_q_jt_hlentryscale. C = fs_q_jt_hlentryscale * S ((S (x)) * D) + (c))))) /\ (((forall jt_index_hlbound. (exists jt_gap_hlboundindex. jt_gap_hlboundindex+S (jt_index_hlbound)=(k)) -> exists jt_value_hlbound. ((((exists fs_h_jt_hlboundat. fs_h_jt_hlboundat + S (jt_value_hlbound) = S ((S (jt_index_hlbound)) * c)) /\ exists fs_q_jt_hlboundat. b = fs_q_jt_hlboundat * S ((S (jt_index_hlbound)) * c) + (jt_value_hlbound))) /\ (exists jt_gap_hlboundvalue. jt_gap_hlboundvalue+S (jt_value_hlbound)=(m)))) /\ (forall jt_divisor_hlprimitive. (exists jt_factor_hlprimitivemodulus. (m)=(jt_divisor_hlprimitive)*jt_factor_hlprimitivemodulus) -> (forall jt_index_hlprimitivecoordinates jt_value_hlprimitivecoordinates. (exists jt_gap_hlprimitivecoordinatesindex. jt_gap_hlprimitivecoordinatesindex+S (jt_index_hlprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hlprimitivecoordinatesat. fs_h_jt_hlprimitivecoordinatesat + S (jt_value_hlprimitivecoordinates) = S ((S (jt_index_hlprimitivecoordinates)) * c)) /\ exists fs_q_jt_hlprimitivecoordinatesat. b = fs_q_jt_hlprimitivecoordinatesat * S ((S (jt_index_hlprimitivecoordinates)) * c) + (jt_value_hlprimitivecoordinates))) -> (exists jt_factor_hlprimitivecoordinatesdivides. (jt_value_hlprimitivecoordinates)=(jt_divisor_hlprimitive)*jt_factor_hlprimitivecoordinatesdivides)) -> jt_divisor_hlprimitive=1))))
  58. 0058specialize hlsound (x)
  59. 0059apply hlsound
  60. 0060exact hrow
  61. 0061cases hl
  62. 0062cases hl_witness
  63. 0063cases hl_witness_witness
  64. 0064cases hl_witness_witness_right
  65. 0065have hrsound : forall i. (exists jt_gap_hrsoundindex. jt_gap_hrsoundindex+S (i)=(v)) -> exists b c. ((((((exists fs_h_jt_hrsoundentrycode. fs_h_jt_hrsoundentrycode + S (b) = S ((S (i)) * F)) /\ exists fs_q_jt_hrsoundentrycode. E = fs_q_jt_hrsoundentrycode * S ((S (i)) * F) + (b))) /\ (((exists fs_h_jt_hrsoundentryscale. fs_h_jt_hrsoundentryscale + S (c) = S ((S (i)) * H)) /\ exists fs_q_jt_hrsoundentryscale. G = fs_q_jt_hrsoundentryscale * S ((S (i)) * H) + (c))))) /\ (((forall jt_index_hrsoundbound. (exists jt_gap_hrsoundboundindex. jt_gap_hrsoundboundindex+S (jt_index_hrsoundbound)=(k)) -> exists jt_value_hrsoundbound. ((((exists fs_h_jt_hrsoundboundat. fs_h_jt_hrsoundboundat + S (jt_value_hrsoundbound) = S ((S (jt_index_hrsoundbound)) * c)) /\ exists fs_q_jt_hrsoundboundat. b = fs_q_jt_hrsoundboundat * S ((S (jt_index_hrsoundbound)) * c) + (jt_value_hrsoundbound))) /\ (exists jt_gap_hrsoundboundvalue. jt_gap_hrsoundboundvalue+S (jt_value_hrsoundbound)=(n)))) /\ (forall jt_divisor_hrsoundprimitive. (exists jt_factor_hrsoundprimitivemodulus. (n)=(jt_divisor_hrsoundprimitive)*jt_factor_hrsoundprimitivemodulus) -> (forall jt_index_hrsoundprimitivecoordinates jt_value_hrsoundprimitivecoordinates. (exists jt_gap_hrsoundprimitivecoordinatesindex. jt_gap_hrsoundprimitivecoordinatesindex+S (jt_index_hrsoundprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hrsoundprimitivecoordinatesat. fs_h_jt_hrsoundprimitivecoordinatesat + S (jt_value_hrsoundprimitivecoordinates) = S ((S (jt_index_hrsoundprimitivecoordinates)) * c)) /\ exists fs_q_jt_hrsoundprimitivecoordinatesat. b = fs_q_jt_hrsoundprimitivecoordinatesat * S ((S (jt_index_hrsoundprimitivecoordinates)) * c) + (jt_value_hrsoundprimitivecoordinates))) -> (exists jt_factor_hrsoundprimitivecoordinatesdivides. (jt_value_hrsoundprimitivecoordinates)=(jt_divisor_hrsoundprimitive)*jt_factor_hrsoundprimitivecoordinatesdivides)) -> jt_divisor_hrsoundprimitive=1))))
  66. 0066have hcopy : ((forall jt_i_hrenumcopy. (exists jt_gap_hrenumcopysoundindex. jt_gap_hrenumcopysoundindex+S (jt_i_hrenumcopy)=(v)) -> exists jt_b_hrenumcopy jt_c_hrenumcopy. ((((((exists fs_h_jt_hrenumcopysoundcode. fs_h_jt_hrenumcopysoundcode + S (jt_b_hrenumcopy) = S ((S (jt_i_hrenumcopy)) * F)) /\ exists fs_q_jt_hrenumcopysoundcode. E = fs_q_jt_hrenumcopysoundcode * S ((S (jt_i_hrenumcopy)) * F) + (jt_b_hrenumcopy))) /\ (((exists fs_h_jt_hrenumcopysoundscale. fs_h_jt_hrenumcopysoundscale + S (jt_c_hrenumcopy) = S ((S (jt_i_hrenumcopy)) * H)) /\ exists fs_q_jt_hrenumcopysoundscale. G = fs_q_jt_hrenumcopysoundscale * S ((S (jt_i_hrenumcopy)) * H) + (jt_c_hrenumcopy))))) /\ (((forall jt_index_hrenumcopybound. (exists jt_gap_hrenumcopyboundindex. jt_gap_hrenumcopyboundindex+S (jt_index_hrenumcopybound)=(k)) -> exists jt_value_hrenumcopybound. ((((exists fs_h_jt_hrenumcopyboundat. fs_h_jt_hrenumcopyboundat + S (jt_value_hrenumcopybound) = S ((S (jt_index_hrenumcopybound)) * jt_c_hrenumcopy)) /\ exists fs_q_jt_hrenumcopyboundat. jt_b_hrenumcopy = fs_q_jt_hrenumcopyboundat * S ((S (jt_index_hrenumcopybound)) * jt_c_hrenumcopy) + (jt_value_hrenumcopybound))) /\ (exists jt_gap_hrenumcopyboundvalue. jt_gap_hrenumcopyboundvalue+S (jt_value_hrenumcopybound)=(n)))) /\ (forall jt_divisor_hrenumcopyprimitive. (exists jt_factor_hrenumcopyprimitivemodulus. (n)=(jt_divisor_hrenumcopyprimitive)*jt_factor_hrenumcopyprimitivemodulus) -> (forall jt_index_hrenumcopyprimitivecoordinates jt_value_hrenumcopyprimitivecoordinates. (exists jt_gap_hrenumcopyprimitivecoordinatesindex. jt_gap_hrenumcopyprimitivecoordinatesindex+S (jt_index_hrenumcopyprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hrenumcopyprimitivecoordinatesat. fs_h_jt_hrenumcopyprimitivecoordinatesat + S (jt_value_hrenumcopyprimitivecoordinates) = S ((S (jt_index_hrenumcopyprimitivecoordinates)) * jt_c_hrenumcopy)) /\ exists fs_q_jt_hrenumcopyprimitivecoordinatesat. jt_b_hrenumcopy = fs_q_jt_hrenumcopyprimitivecoordinatesat * S ((S (jt_index_hrenumcopyprimitivecoordinates)) * jt_c_hrenumcopy) + (jt_value_hrenumcopyprimitivecoordinates))) -> (exists jt_factor_hrenumcopyprimitivecoordinatesdivides. (jt_value_hrenumcopyprimitivecoordinates)=(jt_divisor_hrenumcopyprimitive)*jt_factor_hrenumcopyprimitivecoordinatesdivides)) -> jt_divisor_hrenumcopyprimitive=1))))) /\ (((forall jt_b_hrenumcopy jt_c_hrenumcopy. (forall jt_index_hrenumcopyinputbound. (exists jt_gap_hrenumcopyinputboundindex. jt_gap_hrenumcopyinputboundindex+S (jt_index_hrenumcopyinputbound)=(k)) -> exists jt_value_hrenumcopyinputbound. ((((exists fs_h_jt_hrenumcopyinputboundat. fs_h_jt_hrenumcopyinputboundat + S (jt_value_hrenumcopyinputbound) = S ((S (jt_index_hrenumcopyinputbound)) * jt_c_hrenumcopy)) /\ exists fs_q_jt_hrenumcopyinputboundat. jt_b_hrenumcopy = fs_q_jt_hrenumcopyinputboundat * S ((S (jt_index_hrenumcopyinputbound)) * jt_c_hrenumcopy) + (jt_value_hrenumcopyinputbound))) /\ (exists jt_gap_hrenumcopyinputboundvalue. jt_gap_hrenumcopyinputboundvalue+S (jt_value_hrenumcopyinputbound)=(n)))) -> (forall jt_divisor_hrenumcopyinputprimitive. (exists jt_factor_hrenumcopyinputprimitivemodulus. (n)=(jt_divisor_hrenumcopyinputprimitive)*jt_factor_hrenumcopyinputprimitivemodulus) -> (forall jt_index_hrenumcopyinputprimitivecoordinates jt_value_hrenumcopyinputprimitivecoordinates. (exists jt_gap_hrenumcopyinputprimitivecoordinatesindex. jt_gap_hrenumcopyinputprimitivecoordinatesindex+S (jt_index_hrenumcopyinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hrenumcopyinputprimitivecoordinatesat. fs_h_jt_hrenumcopyinputprimitivecoordinatesat + S (jt_value_hrenumcopyinputprimitivecoordinates) = S ((S (jt_index_hrenumcopyinputprimitivecoordinates)) * jt_c_hrenumcopy)) /\ exists fs_q_jt_hrenumcopyinputprimitivecoordinatesat. jt_b_hrenumcopy = fs_q_jt_hrenumcopyinputprimitivecoordinatesat * S ((S (jt_index_hrenumcopyinputprimitivecoordinates)) * jt_c_hrenumcopy) + (jt_value_hrenumcopyinputprimitivecoordinates))) -> (exists jt_factor_hrenumcopyinputprimitivecoordinatesdivides. (jt_value_hrenumcopyinputprimitivecoordinates)=(jt_divisor_hrenumcopyinputprimitive)*jt_factor_hrenumcopyinputprimitivecoordinatesdivides)) -> jt_divisor_hrenumcopyinputprimitive=1) -> exists jt_i_hrenumcopy jt_d_hrenumcopy jt_e_hrenumcopy. ((exists jt_gap_hrenumcopycompleteindex. jt_gap_hrenumcopycompleteindex+S (jt_i_hrenumcopy)=(v)) /\ (((((((exists fs_h_jt_hrenumcopycompletecode. fs_h_jt_hrenumcopycompletecode + S (jt_d_hrenumcopy) = S ((S (jt_i_hrenumcopy)) * F)) /\ exists fs_q_jt_hrenumcopycompletecode. E = fs_q_jt_hrenumcopycompletecode * S ((S (jt_i_hrenumcopy)) * F) + (jt_d_hrenumcopy))) /\ (((exists fs_h_jt_hrenumcopycompletescale. fs_h_jt_hrenumcopycompletescale + S (jt_e_hrenumcopy) = S ((S (jt_i_hrenumcopy)) * H)) /\ exists fs_q_jt_hrenumcopycompletescale. G = fs_q_jt_hrenumcopycompletescale * S ((S (jt_i_hrenumcopy)) * H) + (jt_e_hrenumcopy))))) /\ (forall jt_index_hrenumcopyrepresented jt_left_hrenumcopyrepresented jt_right_hrenumcopyrepresented. (exists jt_gap_hrenumcopyrepresentedindex. jt_gap_hrenumcopyrepresentedindex+S (jt_index_hrenumcopyrepresented)=(k)) -> (((exists fs_h_jt_hrenumcopyrepresentedleft. fs_h_jt_hrenumcopyrepresentedleft + S (jt_left_hrenumcopyrepresented) = S ((S (jt_index_hrenumcopyrepresented)) * jt_c_hrenumcopy)) /\ exists fs_q_jt_hrenumcopyrepresentedleft. jt_b_hrenumcopy = fs_q_jt_hrenumcopyrepresentedleft * S ((S (jt_index_hrenumcopyrepresented)) * jt_c_hrenumcopy) + (jt_left_hrenumcopyrepresented))) -> (((exists fs_h_jt_hrenumcopyrepresentedright. fs_h_jt_hrenumcopyrepresentedright + S (jt_right_hrenumcopyrepresented) = S ((S (jt_index_hrenumcopyrepresented)) * jt_e_hrenumcopy)) /\ exists fs_q_jt_hrenumcopyrepresentedright. jt_d_hrenumcopy = fs_q_jt_hrenumcopyrepresentedright * S ((S (jt_index_hrenumcopyrepresented)) * jt_e_hrenumcopy) + (jt_right_hrenumcopyrepresented))) -> jt_left_hrenumcopyrepresented=jt_right_hrenumcopyrepresented))))) /\ (forall jt_i_hrenumcopy jt_h_hrenumcopy jt_b_hrenumcopy jt_c_hrenumcopy jt_d_hrenumcopy jt_e_hrenumcopy. (exists jt_gap_hrenumcopyfirstindex. jt_gap_hrenumcopyfirstindex+S (jt_i_hrenumcopy)=(v)) -> (exists jt_gap_hrenumcopysecondindex. jt_gap_hrenumcopysecondindex+S (jt_h_hrenumcopy)=(v)) -> (((((exists fs_h_jt_hrenumcopyfirstcode. fs_h_jt_hrenumcopyfirstcode + S (jt_b_hrenumcopy) = S ((S (jt_i_hrenumcopy)) * F)) /\ exists fs_q_jt_hrenumcopyfirstcode. E = fs_q_jt_hrenumcopyfirstcode * S ((S (jt_i_hrenumcopy)) * F) + (jt_b_hrenumcopy))) /\ (((exists fs_h_jt_hrenumcopyfirstscale. fs_h_jt_hrenumcopyfirstscale + S (jt_c_hrenumcopy) = S ((S (jt_i_hrenumcopy)) * H)) /\ exists fs_q_jt_hrenumcopyfirstscale. G = fs_q_jt_hrenumcopyfirstscale * S ((S (jt_i_hrenumcopy)) * H) + (jt_c_hrenumcopy))))) -> (((((exists fs_h_jt_hrenumcopysecondcode. fs_h_jt_hrenumcopysecondcode + S (jt_d_hrenumcopy) = S ((S (jt_h_hrenumcopy)) * F)) /\ exists fs_q_jt_hrenumcopysecondcode. E = fs_q_jt_hrenumcopysecondcode * S ((S (jt_h_hrenumcopy)) * F) + (jt_d_hrenumcopy))) /\ (((exists fs_h_jt_hrenumcopysecondscale. fs_h_jt_hrenumcopysecondscale + S (jt_e_hrenumcopy) = S ((S (jt_h_hrenumcopy)) * H)) /\ exists fs_q_jt_hrenumcopysecondscale. G = fs_q_jt_hrenumcopysecondscale * S ((S (jt_h_hrenumcopy)) * H) + (jt_e_hrenumcopy))))) -> (forall jt_index_hrenumcopysame jt_left_hrenumcopysame jt_right_hrenumcopysame. (exists jt_gap_hrenumcopysameindex. jt_gap_hrenumcopysameindex+S (jt_index_hrenumcopysame)=(k)) -> (((exists fs_h_jt_hrenumcopysameleft. fs_h_jt_hrenumcopysameleft + S (jt_left_hrenumcopysame) = S ((S (jt_index_hrenumcopysame)) * jt_c_hrenumcopy)) /\ exists fs_q_jt_hrenumcopysameleft. jt_b_hrenumcopy = fs_q_jt_hrenumcopysameleft * S ((S (jt_index_hrenumcopysame)) * jt_c_hrenumcopy) + (jt_left_hrenumcopysame))) -> (((exists fs_h_jt_hrenumcopysameright. fs_h_jt_hrenumcopysameright + S (jt_right_hrenumcopysame) = S ((S (jt_index_hrenumcopysame)) * jt_e_hrenumcopy)) /\ exists fs_q_jt_hrenumcopysameright. jt_d_hrenumcopy = fs_q_jt_hrenumcopysameright * S ((S (jt_index_hrenumcopysame)) * jt_e_hrenumcopy) + (jt_right_hrenumcopysame))) -> jt_left_hrenumcopysame=jt_right_hrenumcopysame) -> jt_i_hrenumcopy=jt_h_hrenumcopy))))
  67. 0067exact hright
  68. 0068cases hcopy
  69. 0069exact hcopy_left
  70. 0070have hr : exists b c. ((((((exists fs_h_jt_hrentrycode. fs_h_jt_hrentrycode + S (b) = S ((S (x1)) * F)) /\ exists fs_q_jt_hrentrycode. E = fs_q_jt_hrentrycode * S ((S (x1)) * F) + (b))) /\ (((exists fs_h_jt_hrentryscale. fs_h_jt_hrentryscale + S (c) = S ((S (x1)) * H)) /\ exists fs_q_jt_hrentryscale. G = fs_q_jt_hrentryscale * S ((S (x1)) * H) + (c))))) /\ (((forall jt_index_hrbound. (exists jt_gap_hrboundindex. jt_gap_hrboundindex+S (jt_index_hrbound)=(k)) -> exists jt_value_hrbound. ((((exists fs_h_jt_hrboundat. fs_h_jt_hrboundat + S (jt_value_hrbound) = S ((S (jt_index_hrbound)) * c)) /\ exists fs_q_jt_hrboundat. b = fs_q_jt_hrboundat * S ((S (jt_index_hrbound)) * c) + (jt_value_hrbound))) /\ (exists jt_gap_hrboundvalue. jt_gap_hrboundvalue+S (jt_value_hrbound)=(n)))) /\ (forall jt_divisor_hrprimitive. (exists jt_factor_hrprimitivemodulus. (n)=(jt_divisor_hrprimitive)*jt_factor_hrprimitivemodulus) -> (forall jt_index_hrprimitivecoordinates jt_value_hrprimitivecoordinates. (exists jt_gap_hrprimitivecoordinatesindex. jt_gap_hrprimitivecoordinatesindex+S (jt_index_hrprimitivecoordinates)=(k)) -> (((exists fs_h_jt_hrprimitivecoordinatesat. fs_h_jt_hrprimitivecoordinatesat + S (jt_value_hrprimitivecoordinates) = S ((S (jt_index_hrprimitivecoordinates)) * c)) /\ exists fs_q_jt_hrprimitivecoordinatesat. b = fs_q_jt_hrprimitivecoordinatesat * S ((S (jt_index_hrprimitivecoordinates)) * c) + (jt_value_hrprimitivecoordinates))) -> (exists jt_factor_hrprimitivecoordinatesdivides. (jt_value_hrprimitivecoordinates)=(jt_divisor_hrprimitive)*jt_factor_hrprimitivecoordinatesdivides)) -> jt_divisor_hrprimitive=1))))
  71. 0071specialize hrsound (x1)
  72. 0072apply hrsound
  73. 0073exact hcoords_witness_witness_right
  74. 0074cases hr
  75. 0075cases hr_witness
  76. 0076cases hr_witness_witness
  77. 0077cases hr_witness_witness_right
  78. 0078have hc : exists f g. ((((forall jt_index_rectchosencrtbound. (exists jt_gap_rectchosencrtboundindex. jt_gap_rectchosencrtboundindex+S (jt_index_rectchosencrtbound)=(k)) -> exists jt_value_rectchosencrtbound. ((((exists fs_h_jt_rectchosencrtboundat. fs_h_jt_rectchosencrtboundat + S (jt_value_rectchosencrtbound) = S ((S (jt_index_rectchosencrtbound)) * g)) /\ exists fs_q_jt_rectchosencrtboundat. f = fs_q_jt_rectchosencrtboundat * S ((S (jt_index_rectchosencrtbound)) * g) + (jt_value_rectchosencrtbound))) /\ (exists jt_gap_rectchosencrtboundvalue. jt_gap_rectchosencrtboundvalue+S (jt_value_rectchosencrtbound)=(m*n)))) /\ (((forall jt_index_rectchosencrtleft jt_left_rectchosencrtleft jt_right_rectchosencrtleft. (exists jt_gap_rectchosencrtleftindex. jt_gap_rectchosencrtleftindex+S (jt_index_rectchosencrtleft)=(k)) -> (((exists fs_h_jt_rectchosencrtleftleft. fs_h_jt_rectchosencrtleftleft + S (jt_left_rectchosencrtleft) = S ((S (jt_index_rectchosencrtleft)) * g)) /\ exists fs_q_jt_rectchosencrtleftleft. f = fs_q_jt_rectchosencrtleftleft * S ((S (jt_index_rectchosencrtleft)) * g) + (jt_left_rectchosencrtleft))) -> (((exists fs_h_jt_rectchosencrtleftright. fs_h_jt_rectchosencrtleftright + S (jt_right_rectchosencrtleft) = S ((S (jt_index_rectchosencrtleft)) * x3)) /\ exists fs_q_jt_rectchosencrtleftright. x2 = fs_q_jt_rectchosencrtleftright * S ((S (jt_index_rectchosencrtleft)) * x3) + (jt_right_rectchosencrtleft))) -> (exists jt_left_rectchosencrtleftmod jt_right_rectchosencrtleftmod. (jt_left_rectchosencrtleft)+(m)*jt_left_rectchosencrtleftmod=(jt_right_rectchosencrtleft)+(m)*jt_right_rectchosencrtleftmod)) /\ (forall jt_index_rectchosencrtright jt_left_rectchosencrtright jt_right_rectchosencrtright. (exists jt_gap_rectchosencrtrightindex. jt_gap_rectchosencrtrightindex+S (jt_index_rectchosencrtright)=(k)) -> (((exists fs_h_jt_rectchosencrtrightleft. fs_h_jt_rectchosencrtrightleft + S (jt_left_rectchosencrtright) = S ((S (jt_index_rectchosencrtright)) * g)) /\ exists fs_q_jt_rectchosencrtrightleft. f = fs_q_jt_rectchosencrtrightleft * S ((S (jt_index_rectchosencrtright)) * g) + (jt_left_rectchosencrtright))) -> (((exists fs_h_jt_rectchosencrtrightright. fs_h_jt_rectchosencrtrightright + S (jt_right_rectchosencrtright) = S ((S (jt_index_rectchosencrtright)) * x5)) /\ exists fs_q_jt_rectchosencrtrightright. x4 = fs_q_jt_rectchosencrtrightright * S ((S (jt_index_rectchosencrtright)) * x5) + (jt_right_rectchosencrtright))) -> (exists jt_left_rectchosencrtrightmod jt_right_rectchosencrtrightmod. (jt_left_rectchosencrtright)+(n)*jt_left_rectchosencrtrightmod=(jt_right_rectchosencrtright)+(n)*jt_right_rectchosencrtrightmod)))))) /\ (forall jt_divisor_rectchosenprimitive. (exists jt_factor_rectchosenprimitivemodulus. (m*n)=(jt_divisor_rectchosenprimitive)*jt_factor_rectchosenprimitivemodulus) -> (forall jt_index_rectchosenprimitivecoordinates jt_value_rectchosenprimitivecoordinates. (exists jt_gap_rectchosenprimitivecoordinatesindex. jt_gap_rectchosenprimitivecoordinatesindex+S (jt_index_rectchosenprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectchosenprimitivecoordinatesat. fs_h_jt_rectchosenprimitivecoordinatesat + S (jt_value_rectchosenprimitivecoordinates) = S ((S (jt_index_rectchosenprimitivecoordinates)) * g)) /\ exists fs_q_jt_rectchosenprimitivecoordinatesat. f = fs_q_jt_rectchosenprimitivecoordinatesat * S ((S (jt_index_rectchosenprimitivecoordinates)) * g) + (jt_value_rectchosenprimitivecoordinates))) -> (exists jt_factor_rectchosenprimitivecoordinatesdivides. (jt_value_rectchosenprimitivecoordinates)=(jt_divisor_rectchosenprimitive)*jt_factor_rectchosenprimitivecoordinatesdivides)) -> jt_divisor_rectchosenprimitive=1))
  79. 0079specialize jordan_primitive_crt_tuple_exists (m)
  80. 0080specialize jordan_primitive_crt_tuple_exists (n)
  81. 0081specialize jordan_primitive_crt_tuple_exists (x2)
  82. 0082specialize jordan_primitive_crt_tuple_exists (x3)
  83. 0083specialize jordan_primitive_crt_tuple_exists (x4)
  84. 0084specialize jordan_primitive_crt_tuple_exists (x5)
  85. 0085specialize jordan_primitive_crt_tuple_exists (k)
  86. 0086apply jordan_primitive_crt_tuple_exists
  87. 0087exact hm
  88. 0088exact hn
  89. 0089exact hcop
  90. 0090exact hl_witness_witness_right_right
  91. 0091exact hr_witness_witness_right_right
  92. 0092cases hc
  93. 0093cases hc_witness
  94. 0094cases hc_witness_witness
  95. 0095have hext : exists U V W X. ((forall jt_index_rectpreservecodes jt_left_rectpreservecodes jt_right_rectpreservecodes. (exists jt_gap_rectpreservecodesindex. jt_gap_rectpreservecodesindex+S (jt_index_rectpreservecodes)=(q)) -> (((exists fs_h_jt_rectpreservecodesleft. fs_h_jt_rectpreservecodesleft + S (jt_left_rectpreservecodes) = S ((S (jt_index_rectpreservecodes)) * Q)) /\ exists fs_q_jt_rectpreservecodesleft. P = fs_q_jt_rectpreservecodesleft * S ((S (jt_index_rectpreservecodes)) * Q) + (jt_left_rectpreservecodes))) -> (((exists fs_h_jt_rectpreservecodesright. fs_h_jt_rectpreservecodesright + S (jt_right_rectpreservecodes) = S ((S (jt_index_rectpreservecodes)) * V)) /\ exists fs_q_jt_rectpreservecodesright. U = fs_q_jt_rectpreservecodesright * S ((S (jt_index_rectpreservecodes)) * V) + (jt_right_rectpreservecodes))) -> jt_left_rectpreservecodes=jt_right_rectpreservecodes) /\ (((forall jt_index_rectpreservescales jt_left_rectpreservescales jt_right_rectpreservescales. (exists jt_gap_rectpreservescalesindex. jt_gap_rectpreservescalesindex+S (jt_index_rectpreservescales)=(q)) -> (((exists fs_h_jt_rectpreservescalesleft. fs_h_jt_rectpreservescalesleft + S (jt_left_rectpreservescales) = S ((S (jt_index_rectpreservescales)) * T)) /\ exists fs_q_jt_rectpreservescalesleft. R = fs_q_jt_rectpreservescalesleft * S ((S (jt_index_rectpreservescales)) * T) + (jt_left_rectpreservescales))) -> (((exists fs_h_jt_rectpreservescalesright. fs_h_jt_rectpreservescalesright + S (jt_right_rectpreservescales) = S ((S (jt_index_rectpreservescales)) * X)) /\ exists fs_q_jt_rectpreservescalesright. W = fs_q_jt_rectpreservescalesright * S ((S (jt_index_rectpreservescales)) * X) + (jt_right_rectpreservescales))) -> jt_left_rectpreservescales=jt_right_rectpreservescales) /\ (((((exists fs_h_jt_rectlastcode. fs_h_jt_rectlastcode + S (x6) = S ((S (q)) * V)) /\ exists fs_q_jt_rectlastcode. U = fs_q_jt_rectlastcode * S ((S (q)) * V) + (x6))) /\ (((exists fs_h_jt_rectlastscale. fs_h_jt_rectlastscale + S (x7) = S ((S (q)) * X)) /\ exists fs_q_jt_rectlastscale. W = fs_q_jt_rectlastscale * S ((S (q)) * X) + (x7))))))))
  96. 0096specialize jordan_tuple_outer_append_exists (P)
  97. 0097specialize jordan_tuple_outer_append_exists (Q)
  98. 0098specialize jordan_tuple_outer_append_exists (R)
  99. 0099specialize jordan_tuple_outer_append_exists (T)
  100. 0100specialize jordan_tuple_outer_append_exists (q)
  101. 0101specialize jordan_tuple_outer_append_exists (x6)
  102. 0102specialize jordan_tuple_outer_append_exists (x7)
  103. 0103apply jordan_tuple_outer_append_exists
  104. 0104cases hext
  105. 0105cases hext_witness
  106. 0106cases hext_witness_witness
  107. 0107cases hext_witness_witness_witness
  108. 0108cases hext_witness_witness_witness_witness
  109. 0109cases hext_witness_witness_witness_witness_right
  110. 0110cases hext_witness_witness_witness_witness_right_right
  111. 0111exists x8
  112. 0112exists x9
  113. 0113exists x10
  114. 0114exists x11
  115. 0115intro p
  116. 0116intro hp
  117. 0117have hpc : p=q \/ (exists jt_gap_rectnewcase. jt_gap_rectnewcase+S (p)=(q))
  118. 0118specialize finite_lt_succ_eq_or_lt (q)
  119. 0119specialize finite_lt_succ_eq_or_lt (p)
  120. 0120apply finite_lt_succ_eq_or_lt
  121. 0121exact hp
  122. 0122cases hpc
  123. 0123exists x
  124. 0124exists x1
  125. 0125exists x2
  126. 0126exists x3
  127. 0127exists x4
  128. 0128exists x5
  129. 0129exists x6
  130. 0130exists x7
  131. 0131split
  132. 0132exact hrow
  133. 0133split
  134. 0134exact hcoords_witness_witness_right
  135. 0135split
  136. 0136rewrite hpc_left
  137. 0137exact hcoords_witness_witness_left
  138. 0138split
  139. 0139exact hl_witness_witness_left
  140. 0140split
  141. 0141exact hr_witness_witness_left
  142. 0142split
  143. 0143split
  144. 0144rewrite hpc_left
  145. 0145rewrite hpc_left
  146. 0146exact hext_witness_witness_witness_witness_right_right_left
  147. 0147rewrite hpc_left
  148. 0148rewrite hpc_left
  149. 0149exact hext_witness_witness_witness_witness_right_right_right
  150. 0150split
  151. 0151exact hc_witness_witness_left
  152. 0152exact hc_witness_witness_right
  153. 0153have hprev : exists i j b c d e f g. ((exists jt_gap_rectoldvaluerow. jt_gap_rectoldvaluerow+S (i)=(u)) /\ (((exists jt_gap_rectoldvaluecolumn. jt_gap_rectoldvaluecolumn+S (j)=(v)) /\ (((p=(v)*(i)+(j)) /\ (((((((exists fs_h_jt_rectoldvalueleftcode. fs_h_jt_rectoldvalueleftcode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_rectoldvalueleftcode. A = fs_q_jt_rectoldvalueleftcode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_rectoldvalueleftscale. fs_h_jt_rectoldvalueleftscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_rectoldvalueleftscale. C = fs_q_jt_rectoldvalueleftscale * S ((S (i)) * D) + (c))))) /\ (((((((exists fs_h_jt_rectoldvaluerightcode. fs_h_jt_rectoldvaluerightcode + S (d) = S ((S (j)) * F)) /\ exists fs_q_jt_rectoldvaluerightcode. E = fs_q_jt_rectoldvaluerightcode * S ((S (j)) * F) + (d))) /\ (((exists fs_h_jt_rectoldvaluerightscale. fs_h_jt_rectoldvaluerightscale + S (e) = S ((S (j)) * H)) /\ exists fs_q_jt_rectoldvaluerightscale. G = fs_q_jt_rectoldvaluerightscale * S ((S (j)) * H) + (e))))) /\ (((((((exists fs_h_jt_rectoldvalueoutputcode. fs_h_jt_rectoldvalueoutputcode + S (f) = S ((S (p)) * Q)) /\ exists fs_q_jt_rectoldvalueoutputcode. P = fs_q_jt_rectoldvalueoutputcode * S ((S (p)) * Q) + (f))) /\ (((exists fs_h_jt_rectoldvalueoutputscale. fs_h_jt_rectoldvalueoutputscale + S (g) = S ((S (p)) * T)) /\ exists fs_q_jt_rectoldvalueoutputscale. R = fs_q_jt_rectoldvalueoutputscale * S ((S (p)) * T) + (g))))) /\ (((((forall jt_index_rectoldvaluecrtbound. (exists jt_gap_rectoldvaluecrtboundindex. jt_gap_rectoldvaluecrtboundindex+S (jt_index_rectoldvaluecrtbound)=(k)) -> exists jt_value_rectoldvaluecrtbound. ((((exists fs_h_jt_rectoldvaluecrtboundat. fs_h_jt_rectoldvaluecrtboundat + S (jt_value_rectoldvaluecrtbound) = S ((S (jt_index_rectoldvaluecrtbound)) * g)) /\ exists fs_q_jt_rectoldvaluecrtboundat. f = fs_q_jt_rectoldvaluecrtboundat * S ((S (jt_index_rectoldvaluecrtbound)) * g) + (jt_value_rectoldvaluecrtbound))) /\ (exists jt_gap_rectoldvaluecrtboundvalue. jt_gap_rectoldvaluecrtboundvalue+S (jt_value_rectoldvaluecrtbound)=(m*n)))) /\ (((forall jt_index_rectoldvaluecrtleft jt_left_rectoldvaluecrtleft jt_right_rectoldvaluecrtleft. (exists jt_gap_rectoldvaluecrtleftindex. jt_gap_rectoldvaluecrtleftindex+S (jt_index_rectoldvaluecrtleft)=(k)) -> (((exists fs_h_jt_rectoldvaluecrtleftleft. fs_h_jt_rectoldvaluecrtleftleft + S (jt_left_rectoldvaluecrtleft) = S ((S (jt_index_rectoldvaluecrtleft)) * g)) /\ exists fs_q_jt_rectoldvaluecrtleftleft. f = fs_q_jt_rectoldvaluecrtleftleft * S ((S (jt_index_rectoldvaluecrtleft)) * g) + (jt_left_rectoldvaluecrtleft))) -> (((exists fs_h_jt_rectoldvaluecrtleftright. fs_h_jt_rectoldvaluecrtleftright + S (jt_right_rectoldvaluecrtleft) = S ((S (jt_index_rectoldvaluecrtleft)) * c)) /\ exists fs_q_jt_rectoldvaluecrtleftright. b = fs_q_jt_rectoldvaluecrtleftright * S ((S (jt_index_rectoldvaluecrtleft)) * c) + (jt_right_rectoldvaluecrtleft))) -> (exists jt_left_rectoldvaluecrtleftmod jt_right_rectoldvaluecrtleftmod. (jt_left_rectoldvaluecrtleft)+(m)*jt_left_rectoldvaluecrtleftmod=(jt_right_rectoldvaluecrtleft)+(m)*jt_right_rectoldvaluecrtleftmod)) /\ (forall jt_index_rectoldvaluecrtright jt_left_rectoldvaluecrtright jt_right_rectoldvaluecrtright. (exists jt_gap_rectoldvaluecrtrightindex. jt_gap_rectoldvaluecrtrightindex+S (jt_index_rectoldvaluecrtright)=(k)) -> (((exists fs_h_jt_rectoldvaluecrtrightleft. fs_h_jt_rectoldvaluecrtrightleft + S (jt_left_rectoldvaluecrtright) = S ((S (jt_index_rectoldvaluecrtright)) * g)) /\ exists fs_q_jt_rectoldvaluecrtrightleft. f = fs_q_jt_rectoldvaluecrtrightleft * S ((S (jt_index_rectoldvaluecrtright)) * g) + (jt_left_rectoldvaluecrtright))) -> (((exists fs_h_jt_rectoldvaluecrtrightright. fs_h_jt_rectoldvaluecrtrightright + S (jt_right_rectoldvaluecrtright) = S ((S (jt_index_rectoldvaluecrtright)) * e)) /\ exists fs_q_jt_rectoldvaluecrtrightright. d = fs_q_jt_rectoldvaluecrtrightright * S ((S (jt_index_rectoldvaluecrtright)) * e) + (jt_right_rectoldvaluecrtright))) -> (exists jt_left_rectoldvaluecrtrightmod jt_right_rectoldvaluecrtrightmod. (jt_left_rectoldvaluecrtright)+(n)*jt_left_rectoldvaluecrtrightmod=(jt_right_rectoldvaluecrtright)+(n)*jt_right_rectoldvaluecrtrightmod)))))) /\ (forall jt_divisor_rectoldvalueprimitive. (exists jt_factor_rectoldvalueprimitivemodulus. (m*n)=(jt_divisor_rectoldvalueprimitive)*jt_factor_rectoldvalueprimitivemodulus) -> (forall jt_index_rectoldvalueprimitivecoordinates jt_value_rectoldvalueprimitivecoordinates. (exists jt_gap_rectoldvalueprimitivecoordinatesindex. jt_gap_rectoldvalueprimitivecoordinatesindex+S (jt_index_rectoldvalueprimitivecoordinates)=(k)) -> (((exists fs_h_jt_rectoldvalueprimitivecoordinatesat. fs_h_jt_rectoldvalueprimitivecoordinatesat + S (jt_value_rectoldvalueprimitivecoordinates) = S ((S (jt_index_rectoldvalueprimitivecoordinates)) * g)) /\ exists fs_q_jt_rectoldvalueprimitivecoordinatesat. f = fs_q_jt_rectoldvalueprimitivecoordinatesat * S ((S (jt_index_rectoldvalueprimitivecoordinates)) * g) + (jt_value_rectoldvalueprimitivecoordinates))) -> (exists jt_factor_rectoldvalueprimitivecoordinatesdivides. (jt_value_rectoldvalueprimitivecoordinates)=(jt_divisor_rectoldvalueprimitive)*jt_factor_rectoldvalueprimitivecoordinatesdivides)) -> jt_divisor_rectoldvalueprimitive=1))))))))))))))
  154. 0154specialize hold (p)
  155. 0155apply hold
  156. 0156exact hpc_right
  157. 0157cases hprev
  158. 0158cases hprev_witness
  159. 0159cases hprev_witness_witness
  160. 0160cases hprev_witness_witness_witness
  161. 0161cases hprev_witness_witness_witness_witness
  162. 0162cases hprev_witness_witness_witness_witness_witness
  163. 0163cases hprev_witness_witness_witness_witness_witness_witness
  164. 0164cases hprev_witness_witness_witness_witness_witness_witness_witness
  165. 0165cases hprev_witness_witness_witness_witness_witness_witness_witness_witness
  166. 0166cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right
  167. 0167cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right
  168. 0168cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right
  169. 0169cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right
  170. 0170cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right
  171. 0171cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right
  172. 0172cases hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left
  173. 0173exists x12
  174. 0174exists x13
  175. 0175exists x14
  176. 0176exists x15
  177. 0177exists x16
  178. 0178exists x17
  179. 0179exists x18
  180. 0180exists x19
  181. 0181split
  182. 0182exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_left
  183. 0183split
  184. 0184exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_left
  185. 0185split
  186. 0186exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_left
  187. 0187split
  188. 0188exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_left
  189. 0189split
  190. 0190exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_left
  191. 0191split
  192. 0192split
  193. 0193specialize jordan_tuple_equal_entry (P)
  194. 0194specialize jordan_tuple_equal_entry (Q)
  195. 0195specialize jordan_tuple_equal_entry (x8)
  196. 0196specialize jordan_tuple_equal_entry (x9)
  197. 0197specialize jordan_tuple_equal_entry (q)
  198. 0198specialize jordan_tuple_equal_entry (p)
  199. 0199specialize jordan_tuple_equal_entry (x18)
  200. 0200apply jordan_tuple_equal_entry
  201. 0201exact hext_witness_witness_witness_witness_left
  202. 0202exact hpc_right
  203. 0203exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_left
  204. 0204specialize jordan_tuple_equal_entry (R)
  205. 0205specialize jordan_tuple_equal_entry (T)
  206. 0206specialize jordan_tuple_equal_entry (x10)
  207. 0207specialize jordan_tuple_equal_entry (x11)
  208. 0208specialize jordan_tuple_equal_entry (q)
  209. 0209specialize jordan_tuple_equal_entry (p)
  210. 0210specialize jordan_tuple_equal_entry (x19)
  211. 0211apply jordan_tuple_equal_entry
  212. 0212exact hext_witness_witness_witness_witness_right_left
  213. 0213exact hpc_right
  214. 0214exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_left_right
  215. 0215split
  216. 0216exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_left
  217. 0217exact hprev_witness_witness_witness_witness_witness_witness_witness_witness_right_right_right_right_right_right_right