JT0052

jordan_enumeration_index_map_bounded_injective

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

Equal decoded map indices force coordinate-equal source tuples and hence equal source positions, not equal raw tuple codes.

Exact expanded first-order arithmetic statement

forall k n A B C D u E F G H v Z W. (((forall jt_i_injective_source. (exists jt_gap_injective_sourcesoundindex. jt_gap_injective_sourcesoundindex+S (jt_i_injective_source)=(u)) -> exists jt_b_injective_source jt_c_injective_source. ((((((exists fs_h_jt_injective_sourcesoundcode. fs_h_jt_injective_sourcesoundcode + S (jt_b_injective_source) = S ((S (jt_i_injective_source)) * B)) /\ exists fs_q_jt_injective_sourcesoundcode. A = fs_q_jt_injective_sourcesoundcode * S ((S (jt_i_injective_source)) * B) + (jt_b_injective_source))) /\ (((exists fs_h_jt_injective_sourcesoundscale. fs_h_jt_injective_sourcesoundscale + S (jt_c_injective_source) = S ((S (jt_i_injective_source)) * D)) /\ exists fs_q_jt_injective_sourcesoundscale. C = fs_q_jt_injective_sourcesoundscale * S ((S (jt_i_injective_source)) * D) + (jt_c_injective_source))))) /\ (((forall jt_index_injective_sourcebound. (exists jt_gap_injective_sourceboundindex. jt_gap_injective_sourceboundindex+S (jt_index_injective_sourcebound)=(k)) -> exists jt_value_injective_sourcebound. ((((exists fs_h_jt_injective_sourceboundat. fs_h_jt_injective_sourceboundat + S (jt_value_injective_sourcebound) = S ((S (jt_index_injective_sourcebound)) * jt_c_injective_source)) /\ exists fs_q_jt_injective_sourceboundat. jt_b_injective_source = fs_q_jt_injective_sourceboundat * S ((S (jt_index_injective_sourcebound)) * jt_c_injective_source) + (jt_value_injective_sourcebound))) /\ (exists jt_gap_injective_sourceboundvalue. jt_gap_injective_sourceboundvalue+S (jt_value_injective_sourcebound)=(n)))) /\ (forall jt_divisor_injective_sourceprimitive. (exists jt_factor_injective_sourceprimitivemodulus. (n)=(jt_divisor_injective_sourceprimitive)*jt_factor_injective_sourceprimitivemodulus) -> (forall jt_index_injective_sourceprimitivecoordinates jt_value_injective_sourceprimitivecoordinates. (exists jt_gap_injective_sourceprimitivecoordinatesindex. jt_gap_injective_sourceprimitivecoordinatesindex+S (jt_index_injective_sourceprimitivecoordinates)=(k)) -> (((exists fs_h_jt_injective_sourceprimitivecoordinatesat. fs_h_jt_injective_sourceprimitivecoordinatesat + S (jt_value_injective_sourceprimitivecoordinates) = S ((S (jt_index_injective_sourceprimitivecoordinates)) * jt_c_injective_source)) /\ exists fs_q_jt_injective_sourceprimitivecoordinatesat. jt_b_injective_source = fs_q_jt_injective_sourceprimitivecoordinatesat * S ((S (jt_index_injective_sourceprimitivecoordinates)) * jt_c_injective_source) + (jt_value_injective_sourceprimitivecoordinates))) -> (exists jt_factor_injective_sourceprimitivecoordinatesdivides. (jt_value_injective_sourceprimitivecoordinates)=(jt_divisor_injective_sourceprimitive)*jt_factor_injective_sourceprimitivecoordinatesdivides)) -> jt_divisor_injective_sourceprimitive=1))))) /\ (((forall jt_b_injective_source jt_c_injective_source. (forall jt_index_injective_sourceinputbound. (exists jt_gap_injective_sourceinputboundindex. jt_gap_injective_sourceinputboundindex+S (jt_index_injective_sourceinputbound)=(k)) -> exists jt_value_injective_sourceinputbound. ((((exists fs_h_jt_injective_sourceinputboundat. fs_h_jt_injective_sourceinputboundat + S (jt_value_injective_sourceinputbound) = S ((S (jt_index_injective_sourceinputbound)) * jt_c_injective_source)) /\ exists fs_q_jt_injective_sourceinputboundat. jt_b_injective_source = fs_q_jt_injective_sourceinputboundat * S ((S (jt_index_injective_sourceinputbound)) * jt_c_injective_source) + (jt_value_injective_sourceinputbound))) /\ (exists jt_gap_injective_sourceinputboundvalue. jt_gap_injective_sourceinputboundvalue+S (jt_value_injective_sourceinputbound)=(n)))) -> (forall jt_divisor_injective_sourceinputprimitive. (exists jt_factor_injective_sourceinputprimitivemodulus. (n)=(jt_divisor_injective_sourceinputprimitive)*jt_factor_injective_sourceinputprimitivemodulus) -> (forall jt_index_injective_sourceinputprimitivecoordinates jt_value_injective_sourceinputprimitivecoordinates. (exists jt_gap_injective_sourceinputprimitivecoordinatesindex. jt_gap_injective_sourceinputprimitivecoordinatesindex+S (jt_index_injective_sourceinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_injective_sourceinputprimitivecoordinatesat. fs_h_jt_injective_sourceinputprimitivecoordinatesat + S (jt_value_injective_sourceinputprimitivecoordinates) = S ((S (jt_index_injective_sourceinputprimitivecoordinates)) * jt_c_injective_source)) /\ exists fs_q_jt_injective_sourceinputprimitivecoordinatesat. jt_b_injective_source = fs_q_jt_injective_sourceinputprimitivecoordinatesat * S ((S (jt_index_injective_sourceinputprimitivecoordinates)) * jt_c_injective_source) + (jt_value_injective_sourceinputprimitivecoordinates))) -> (exists jt_factor_injective_sourceinputprimitivecoordinatesdivides. (jt_value_injective_sourceinputprimitivecoordinates)=(jt_divisor_injective_sourceinputprimitive)*jt_factor_injective_sourceinputprimitivecoordinatesdivides)) -> jt_divisor_injective_sourceinputprimitive=1) -> exists jt_i_injective_source jt_d_injective_source jt_e_injective_source. ((exists jt_gap_injective_sourcecompleteindex. jt_gap_injective_sourcecompleteindex+S (jt_i_injective_source)=(u)) /\ (((((((exists fs_h_jt_injective_sourcecompletecode. fs_h_jt_injective_sourcecompletecode + S (jt_d_injective_source) = S ((S (jt_i_injective_source)) * B)) /\ exists fs_q_jt_injective_sourcecompletecode. A = fs_q_jt_injective_sourcecompletecode * S ((S (jt_i_injective_source)) * B) + (jt_d_injective_source))) /\ (((exists fs_h_jt_injective_sourcecompletescale. fs_h_jt_injective_sourcecompletescale + S (jt_e_injective_source) = S ((S (jt_i_injective_source)) * D)) /\ exists fs_q_jt_injective_sourcecompletescale. C = fs_q_jt_injective_sourcecompletescale * S ((S (jt_i_injective_source)) * D) + (jt_e_injective_source))))) /\ (forall jt_index_injective_sourcerepresented jt_left_injective_sourcerepresented jt_right_injective_sourcerepresented. (exists jt_gap_injective_sourcerepresentedindex. jt_gap_injective_sourcerepresentedindex+S (jt_index_injective_sourcerepresented)=(k)) -> (((exists fs_h_jt_injective_sourcerepresentedleft. fs_h_jt_injective_sourcerepresentedleft + S (jt_left_injective_sourcerepresented) = S ((S (jt_index_injective_sourcerepresented)) * jt_c_injective_source)) /\ exists fs_q_jt_injective_sourcerepresentedleft. jt_b_injective_source = fs_q_jt_injective_sourcerepresentedleft * S ((S (jt_index_injective_sourcerepresented)) * jt_c_injective_source) + (jt_left_injective_sourcerepresented))) -> (((exists fs_h_jt_injective_sourcerepresentedright. fs_h_jt_injective_sourcerepresentedright + S (jt_right_injective_sourcerepresented) = S ((S (jt_index_injective_sourcerepresented)) * jt_e_injective_source)) /\ exists fs_q_jt_injective_sourcerepresentedright. jt_d_injective_source = fs_q_jt_injective_sourcerepresentedright * S ((S (jt_index_injective_sourcerepresented)) * jt_e_injective_source) + (jt_right_injective_sourcerepresented))) -> jt_left_injective_sourcerepresented=jt_right_injective_sourcerepresented))))) /\ (forall jt_i_injective_source jt_h_injective_source jt_b_injective_source jt_c_injective_source jt_d_injective_source jt_e_injective_source. (exists jt_gap_injective_sourcefirstindex. jt_gap_injective_sourcefirstindex+S (jt_i_injective_source)=(u)) -> (exists jt_gap_injective_sourcesecondindex. jt_gap_injective_sourcesecondindex+S (jt_h_injective_source)=(u)) -> (((((exists fs_h_jt_injective_sourcefirstcode. fs_h_jt_injective_sourcefirstcode + S (jt_b_injective_source) = S ((S (jt_i_injective_source)) * B)) /\ exists fs_q_jt_injective_sourcefirstcode. A = fs_q_jt_injective_sourcefirstcode * S ((S (jt_i_injective_source)) * B) + (jt_b_injective_source))) /\ (((exists fs_h_jt_injective_sourcefirstscale. fs_h_jt_injective_sourcefirstscale + S (jt_c_injective_source) = S ((S (jt_i_injective_source)) * D)) /\ exists fs_q_jt_injective_sourcefirstscale. C = fs_q_jt_injective_sourcefirstscale * S ((S (jt_i_injective_source)) * D) + (jt_c_injective_source))))) -> (((((exists fs_h_jt_injective_sourcesecondcode. fs_h_jt_injective_sourcesecondcode + S (jt_d_injective_source) = S ((S (jt_h_injective_source)) * B)) /\ exists fs_q_jt_injective_sourcesecondcode. A = fs_q_jt_injective_sourcesecondcode * S ((S (jt_h_injective_source)) * B) + (jt_d_injective_source))) /\ (((exists fs_h_jt_injective_sourcesecondscale. fs_h_jt_injective_sourcesecondscale + S (jt_e_injective_source) = S ((S (jt_h_injective_source)) * D)) /\ exists fs_q_jt_injective_sourcesecondscale. C = fs_q_jt_injective_sourcesecondscale * S ((S (jt_h_injective_source)) * D) + (jt_e_injective_source))))) -> (forall jt_index_injective_sourcesame jt_left_injective_sourcesame jt_right_injective_sourcesame. (exists jt_gap_injective_sourcesameindex. jt_gap_injective_sourcesameindex+S (jt_index_injective_sourcesame)=(k)) -> (((exists fs_h_jt_injective_sourcesameleft. fs_h_jt_injective_sourcesameleft + S (jt_left_injective_sourcesame) = S ((S (jt_index_injective_sourcesame)) * jt_c_injective_source)) /\ exists fs_q_jt_injective_sourcesameleft. jt_b_injective_source = fs_q_jt_injective_sourcesameleft * S ((S (jt_index_injective_sourcesame)) * jt_c_injective_source) + (jt_left_injective_sourcesame))) -> (((exists fs_h_jt_injective_sourcesameright. fs_h_jt_injective_sourcesameright + S (jt_right_injective_sourcesame) = S ((S (jt_index_injective_sourcesame)) * jt_e_injective_source)) /\ exists fs_q_jt_injective_sourcesameright. jt_d_injective_source = fs_q_jt_injective_sourcesameright * S ((S (jt_index_injective_sourcesame)) * jt_e_injective_source) + (jt_right_injective_sourcesame))) -> jt_left_injective_sourcesame=jt_right_injective_sourcesame) -> jt_i_injective_source=jt_h_injective_source))))) -> (((forall jt_i_injective_target. (exists jt_gap_injective_targetsoundindex. jt_gap_injective_targetsoundindex+S (jt_i_injective_target)=(v)) -> exists jt_b_injective_target jt_c_injective_target. ((((((exists fs_h_jt_injective_targetsoundcode. fs_h_jt_injective_targetsoundcode + S (jt_b_injective_target) = S ((S (jt_i_injective_target)) * F)) /\ exists fs_q_jt_injective_targetsoundcode. E = fs_q_jt_injective_targetsoundcode * S ((S (jt_i_injective_target)) * F) + (jt_b_injective_target))) /\ (((exists fs_h_jt_injective_targetsoundscale. fs_h_jt_injective_targetsoundscale + S (jt_c_injective_target) = S ((S (jt_i_injective_target)) * H)) /\ exists fs_q_jt_injective_targetsoundscale. G = fs_q_jt_injective_targetsoundscale * S ((S (jt_i_injective_target)) * H) + (jt_c_injective_target))))) /\ (((forall jt_index_injective_targetbound. (exists jt_gap_injective_targetboundindex. jt_gap_injective_targetboundindex+S (jt_index_injective_targetbound)=(k)) -> exists jt_value_injective_targetbound. ((((exists fs_h_jt_injective_targetboundat. fs_h_jt_injective_targetboundat + S (jt_value_injective_targetbound) = S ((S (jt_index_injective_targetbound)) * jt_c_injective_target)) /\ exists fs_q_jt_injective_targetboundat. jt_b_injective_target = fs_q_jt_injective_targetboundat * S ((S (jt_index_injective_targetbound)) * jt_c_injective_target) + (jt_value_injective_targetbound))) /\ (exists jt_gap_injective_targetboundvalue. jt_gap_injective_targetboundvalue+S (jt_value_injective_targetbound)=(n)))) /\ (forall jt_divisor_injective_targetprimitive. (exists jt_factor_injective_targetprimitivemodulus. (n)=(jt_divisor_injective_targetprimitive)*jt_factor_injective_targetprimitivemodulus) -> (forall jt_index_injective_targetprimitivecoordinates jt_value_injective_targetprimitivecoordinates. (exists jt_gap_injective_targetprimitivecoordinatesindex. jt_gap_injective_targetprimitivecoordinatesindex+S (jt_index_injective_targetprimitivecoordinates)=(k)) -> (((exists fs_h_jt_injective_targetprimitivecoordinatesat. fs_h_jt_injective_targetprimitivecoordinatesat + S (jt_value_injective_targetprimitivecoordinates) = S ((S (jt_index_injective_targetprimitivecoordinates)) * jt_c_injective_target)) /\ exists fs_q_jt_injective_targetprimitivecoordinatesat. jt_b_injective_target = fs_q_jt_injective_targetprimitivecoordinatesat * S ((S (jt_index_injective_targetprimitivecoordinates)) * jt_c_injective_target) + (jt_value_injective_targetprimitivecoordinates))) -> (exists jt_factor_injective_targetprimitivecoordinatesdivides. (jt_value_injective_targetprimitivecoordinates)=(jt_divisor_injective_targetprimitive)*jt_factor_injective_targetprimitivecoordinatesdivides)) -> jt_divisor_injective_targetprimitive=1))))) /\ (((forall jt_b_injective_target jt_c_injective_target. (forall jt_index_injective_targetinputbound. (exists jt_gap_injective_targetinputboundindex. jt_gap_injective_targetinputboundindex+S (jt_index_injective_targetinputbound)=(k)) -> exists jt_value_injective_targetinputbound. ((((exists fs_h_jt_injective_targetinputboundat. fs_h_jt_injective_targetinputboundat + S (jt_value_injective_targetinputbound) = S ((S (jt_index_injective_targetinputbound)) * jt_c_injective_target)) /\ exists fs_q_jt_injective_targetinputboundat. jt_b_injective_target = fs_q_jt_injective_targetinputboundat * S ((S (jt_index_injective_targetinputbound)) * jt_c_injective_target) + (jt_value_injective_targetinputbound))) /\ (exists jt_gap_injective_targetinputboundvalue. jt_gap_injective_targetinputboundvalue+S (jt_value_injective_targetinputbound)=(n)))) -> (forall jt_divisor_injective_targetinputprimitive. (exists jt_factor_injective_targetinputprimitivemodulus. (n)=(jt_divisor_injective_targetinputprimitive)*jt_factor_injective_targetinputprimitivemodulus) -> (forall jt_index_injective_targetinputprimitivecoordinates jt_value_injective_targetinputprimitivecoordinates. (exists jt_gap_injective_targetinputprimitivecoordinatesindex. jt_gap_injective_targetinputprimitivecoordinatesindex+S (jt_index_injective_targetinputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_injective_targetinputprimitivecoordinatesat. fs_h_jt_injective_targetinputprimitivecoordinatesat + S (jt_value_injective_targetinputprimitivecoordinates) = S ((S (jt_index_injective_targetinputprimitivecoordinates)) * jt_c_injective_target)) /\ exists fs_q_jt_injective_targetinputprimitivecoordinatesat. jt_b_injective_target = fs_q_jt_injective_targetinputprimitivecoordinatesat * S ((S (jt_index_injective_targetinputprimitivecoordinates)) * jt_c_injective_target) + (jt_value_injective_targetinputprimitivecoordinates))) -> (exists jt_factor_injective_targetinputprimitivecoordinatesdivides. (jt_value_injective_targetinputprimitivecoordinates)=(jt_divisor_injective_targetinputprimitive)*jt_factor_injective_targetinputprimitivecoordinatesdivides)) -> jt_divisor_injective_targetinputprimitive=1) -> exists jt_i_injective_target jt_d_injective_target jt_e_injective_target. ((exists jt_gap_injective_targetcompleteindex. jt_gap_injective_targetcompleteindex+S (jt_i_injective_target)=(v)) /\ (((((((exists fs_h_jt_injective_targetcompletecode. fs_h_jt_injective_targetcompletecode + S (jt_d_injective_target) = S ((S (jt_i_injective_target)) * F)) /\ exists fs_q_jt_injective_targetcompletecode. E = fs_q_jt_injective_targetcompletecode * S ((S (jt_i_injective_target)) * F) + (jt_d_injective_target))) /\ (((exists fs_h_jt_injective_targetcompletescale. fs_h_jt_injective_targetcompletescale + S (jt_e_injective_target) = S ((S (jt_i_injective_target)) * H)) /\ exists fs_q_jt_injective_targetcompletescale. G = fs_q_jt_injective_targetcompletescale * S ((S (jt_i_injective_target)) * H) + (jt_e_injective_target))))) /\ (forall jt_index_injective_targetrepresented jt_left_injective_targetrepresented jt_right_injective_targetrepresented. (exists jt_gap_injective_targetrepresentedindex. jt_gap_injective_targetrepresentedindex+S (jt_index_injective_targetrepresented)=(k)) -> (((exists fs_h_jt_injective_targetrepresentedleft. fs_h_jt_injective_targetrepresentedleft + S (jt_left_injective_targetrepresented) = S ((S (jt_index_injective_targetrepresented)) * jt_c_injective_target)) /\ exists fs_q_jt_injective_targetrepresentedleft. jt_b_injective_target = fs_q_jt_injective_targetrepresentedleft * S ((S (jt_index_injective_targetrepresented)) * jt_c_injective_target) + (jt_left_injective_targetrepresented))) -> (((exists fs_h_jt_injective_targetrepresentedright. fs_h_jt_injective_targetrepresentedright + S (jt_right_injective_targetrepresented) = S ((S (jt_index_injective_targetrepresented)) * jt_e_injective_target)) /\ exists fs_q_jt_injective_targetrepresentedright. jt_d_injective_target = fs_q_jt_injective_targetrepresentedright * S ((S (jt_index_injective_targetrepresented)) * jt_e_injective_target) + (jt_right_injective_targetrepresented))) -> jt_left_injective_targetrepresented=jt_right_injective_targetrepresented))))) /\ (forall jt_i_injective_target jt_h_injective_target jt_b_injective_target jt_c_injective_target jt_d_injective_target jt_e_injective_target. (exists jt_gap_injective_targetfirstindex. jt_gap_injective_targetfirstindex+S (jt_i_injective_target)=(v)) -> (exists jt_gap_injective_targetsecondindex. jt_gap_injective_targetsecondindex+S (jt_h_injective_target)=(v)) -> (((((exists fs_h_jt_injective_targetfirstcode. fs_h_jt_injective_targetfirstcode + S (jt_b_injective_target) = S ((S (jt_i_injective_target)) * F)) /\ exists fs_q_jt_injective_targetfirstcode. E = fs_q_jt_injective_targetfirstcode * S ((S (jt_i_injective_target)) * F) + (jt_b_injective_target))) /\ (((exists fs_h_jt_injective_targetfirstscale. fs_h_jt_injective_targetfirstscale + S (jt_c_injective_target) = S ((S (jt_i_injective_target)) * H)) /\ exists fs_q_jt_injective_targetfirstscale. G = fs_q_jt_injective_targetfirstscale * S ((S (jt_i_injective_target)) * H) + (jt_c_injective_target))))) -> (((((exists fs_h_jt_injective_targetsecondcode. fs_h_jt_injective_targetsecondcode + S (jt_d_injective_target) = S ((S (jt_h_injective_target)) * F)) /\ exists fs_q_jt_injective_targetsecondcode. E = fs_q_jt_injective_targetsecondcode * S ((S (jt_h_injective_target)) * F) + (jt_d_injective_target))) /\ (((exists fs_h_jt_injective_targetsecondscale. fs_h_jt_injective_targetsecondscale + S (jt_e_injective_target) = S ((S (jt_h_injective_target)) * H)) /\ exists fs_q_jt_injective_targetsecondscale. G = fs_q_jt_injective_targetsecondscale * S ((S (jt_h_injective_target)) * H) + (jt_e_injective_target))))) -> (forall jt_index_injective_targetsame jt_left_injective_targetsame jt_right_injective_targetsame. (exists jt_gap_injective_targetsameindex. jt_gap_injective_targetsameindex+S (jt_index_injective_targetsame)=(k)) -> (((exists fs_h_jt_injective_targetsameleft. fs_h_jt_injective_targetsameleft + S (jt_left_injective_targetsame) = S ((S (jt_index_injective_targetsame)) * jt_c_injective_target)) /\ exists fs_q_jt_injective_targetsameleft. jt_b_injective_target = fs_q_jt_injective_targetsameleft * S ((S (jt_index_injective_targetsame)) * jt_c_injective_target) + (jt_left_injective_targetsame))) -> (((exists fs_h_jt_injective_targetsameright. fs_h_jt_injective_targetsameright + S (jt_right_injective_targetsame) = S ((S (jt_index_injective_targetsame)) * jt_e_injective_target)) /\ exists fs_q_jt_injective_targetsameright. jt_d_injective_target = fs_q_jt_injective_targetsameright * S ((S (jt_index_injective_targetsame)) * jt_e_injective_target) + (jt_right_injective_targetsame))) -> jt_left_injective_targetsame=jt_right_injective_targetsame) -> jt_i_injective_target=jt_h_injective_target))))) -> (forall jt_index_injective_map. (exists jt_gap_injective_mapindex. jt_gap_injective_mapindex+S (jt_index_injective_map)=(u)) -> exists jt_image_injective_map. ((((exists fs_h_jt_injective_mapat. fs_h_jt_injective_mapat + S (jt_image_injective_map) = S ((S (jt_index_injective_map)) * W)) /\ exists fs_q_jt_injective_mapat. Z = fs_q_jt_injective_mapat * S ((S (jt_index_injective_map)) * W) + (jt_image_injective_map))) /\ (((exists jt_gap_injective_mapbound. jt_gap_injective_mapbound+S (jt_image_injective_map)=(v)) /\ (forall jt_b_injective_mapmatch jt_c_injective_mapmatch jt_d_injective_mapmatch jt_e_injective_mapmatch. (((((exists fs_h_jt_injective_mapmatchleftcode. fs_h_jt_injective_mapmatchleftcode + S (jt_b_injective_mapmatch) = S ((S (jt_index_injective_map)) * B)) /\ exists fs_q_jt_injective_mapmatchleftcode. A = fs_q_jt_injective_mapmatchleftcode * S ((S (jt_index_injective_map)) * B) + (jt_b_injective_mapmatch))) /\ (((exists fs_h_jt_injective_mapmatchleftscale. fs_h_jt_injective_mapmatchleftscale + S (jt_c_injective_mapmatch) = S ((S (jt_index_injective_map)) * D)) /\ exists fs_q_jt_injective_mapmatchleftscale. C = fs_q_jt_injective_mapmatchleftscale * S ((S (jt_index_injective_map)) * D) + (jt_c_injective_mapmatch))))) -> (((((exists fs_h_jt_injective_mapmatchrightcode. fs_h_jt_injective_mapmatchrightcode + S (jt_d_injective_mapmatch) = S ((S (jt_image_injective_map)) * F)) /\ exists fs_q_jt_injective_mapmatchrightcode. E = fs_q_jt_injective_mapmatchrightcode * S ((S (jt_image_injective_map)) * F) + (jt_d_injective_mapmatch))) /\ (((exists fs_h_jt_injective_mapmatchrightscale. fs_h_jt_injective_mapmatchrightscale + S (jt_e_injective_mapmatch) = S ((S (jt_image_injective_map)) * H)) /\ exists fs_q_jt_injective_mapmatchrightscale. G = fs_q_jt_injective_mapmatchrightscale * S ((S (jt_image_injective_map)) * H) + (jt_e_injective_mapmatch))))) -> (forall jt_index_injective_mapmatchequal jt_left_injective_mapmatchequal jt_right_injective_mapmatchequal. (exists jt_gap_injective_mapmatchequalindex. jt_gap_injective_mapmatchequalindex+S (jt_index_injective_mapmatchequal)=(k)) -> (((exists fs_h_jt_injective_mapmatchequalleft. fs_h_jt_injective_mapmatchequalleft + S (jt_left_injective_mapmatchequal) = S ((S (jt_index_injective_mapmatchequal)) * jt_c_injective_mapmatch)) /\ exists fs_q_jt_injective_mapmatchequalleft. jt_b_injective_mapmatch = fs_q_jt_injective_mapmatchequalleft * S ((S (jt_index_injective_mapmatchequal)) * jt_c_injective_mapmatch) + (jt_left_injective_mapmatchequal))) -> (((exists fs_h_jt_injective_mapmatchequalright. fs_h_jt_injective_mapmatchequalright + S (jt_right_injective_mapmatchequal) = S ((S (jt_index_injective_mapmatchequal)) * jt_e_injective_mapmatch)) /\ exists fs_q_jt_injective_mapmatchequalright. jt_d_injective_mapmatch = fs_q_jt_injective_mapmatchequalright * S ((S (jt_index_injective_mapmatchequal)) * jt_e_injective_mapmatch) + (jt_right_injective_mapmatchequal))) -> jt_left_injective_mapmatchequal=jt_right_injective_mapmatchequal)))))) -> (((forall jt_index_injective_bound. (exists jt_gap_injective_boundindex. jt_gap_injective_boundindex+S (jt_index_injective_bound)=(u)) -> exists jt_value_injective_bound. ((((exists fs_h_jt_injective_boundat. fs_h_jt_injective_boundat + S (jt_value_injective_bound) = S ((S (jt_index_injective_bound)) * W)) /\ exists fs_q_jt_injective_boundat. Z = fs_q_jt_injective_boundat * S ((S (jt_index_injective_bound)) * W) + (jt_value_injective_bound))) /\ (exists jt_gap_injective_boundvalue. jt_gap_injective_boundvalue+S (jt_value_injective_bound)=(v)))) /\ (forall fp_i_jordan_injective fp_j_jordan_injective fp_value_jordan_injective. (exists fp_gap_jordan_injective_i. fp_gap_jordan_injective_i + S fp_i_jordan_injective = u) -> (exists fp_gap_jordan_injective_j. fp_gap_jordan_injective_j + S fp_j_jordan_injective = u) -> (((exists ff_h_jordan_injective_left. ff_h_jordan_injective_left + S (fp_value_jordan_injective) = S ((S (fp_i_jordan_injective)) * W)) /\ exists ff_q_jordan_injective_left. Z = ff_q_jordan_injective_left * S ((S (fp_i_jordan_injective)) * W) + (fp_value_jordan_injective))) -> (((exists ff_h_jordan_injective_right. ff_h_jordan_injective_right + S (fp_value_jordan_injective) = S ((S (fp_j_jordan_injective)) * W)) /\ exists ff_q_jordan_injective_right. Z = ff_q_jordan_injective_right * S ((S (fp_j_jordan_injective)) * W) + (fp_value_jordan_injective))) -> fp_i_jordan_injective = fp_j_jordan_injective)))

Constructive proof overview

Generated structural guide

Equal decoded map indices force coordinate-equal source tuples and hence equal source positions, not equal raw tuple codes.

The unchanged tactic script uses 4 declared prerequisites and contains 161 exact native proof lines.

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

Proof neighborhood

Direct dependencies

Direct dependents

Formal native tactic body

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

Read the argument

Proof checkpoints

161 script commands · 28 reading checkpoints · 10 local claims

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

Named ingredients (4)

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

01Fix variables and assumptionsL1–10

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

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

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

  1. L11
    intro H
  2. L12
    intro v
  3. L13
    intro Z
  4. L14
    intro W
  5. L15
    intro hl
  6. L16
    intro hr
  7. L17
    intro hm
03Separate the logical casesL18–18

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

  1. L18
    split
04Fix variables and assumptionsL19–20

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

  1. L19
    intro i
  2. L20
    intro hi
05Establish hvL21–24

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

  1. L21
    have hv : ∃ j. BetaAt(Z,W,i,j) ∧ (Lt(j,v) ∧ (∀ x. ∀ y. ∀ z. ∀ n. BetaAt(A,B,i,x) ∧ BetaAt(C,D,i,y) → BetaAt(E,F,j,z) ∧ BetaAt(G,H,j,n) → IntegerVectorZero(x,y,z,n,k)))Definitions: IntegerVectorZeroLtBetaAt
  2. L22
    specialize hm (i)
  3. L23
    apply hm
  4. L24
    exact hi
06Separate the logical casesL25–27

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

  1. L25
    cases hv
  2. L26
    cases hv_witness
  3. L27
    cases hv_witness_right
07Construct an explicit witnessL28–28

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

  1. L28
    exists x
08Separate the logical casesL29–29

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

  1. L29
    split
09Use earlier factsL30–31

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

  1. L30
    exact hv_witness_left
  2. L31
    exact hv_witness_right_left
10Fix variables and assumptionsL32–38

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

  1. L32
    intro i
  2. L33
    intro j
  3. L34
    intro r
  4. L35
    intro hi
  5. L36
    intro hj
  6. L37
    intro hat
  7. L38
    intro hbt
11Establish hmiL39–48

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

  1. L39
    have hmi : Lt(r,v) ∧ (∀ x. ∀ y. ∀ z. ∀ n. BetaAt(A,B,i,x) ∧ BetaAt(C,D,i,y) → BetaAt(E,F,r,z) ∧ BetaAt(G,H,r,n) → IntegerVectorZero(x,y,z,n,k))Definitions: IntegerVectorZeroLtBetaAt
  2. L40
    specialize jordan_enumeration_index_map_entry (k)
  3. L41
    specialize jordan_enumeration_index_map_entry (A)
  4. L42
    specialize jordan_enumeration_index_map_entry (B)
  5. L43
    specialize jordan_enumeration_index_map_entry (C)
  6. L44
    specialize jordan_enumeration_index_map_entry (D)
  7. L45
    specialize jordan_enumeration_index_map_entry (E)
  8. L46
    specialize jordan_enumeration_index_map_entry (F)
  9. L47
    specialize jordan_enumeration_index_map_entry (G)
  10. L48
    specialize jordan_enumeration_index_map_entry (H)
12Use earlier factsL49–58

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

  1. L49
    specialize jordan_enumeration_index_map_entry (Z)
  2. L50
    specialize jordan_enumeration_index_map_entry (W)
  3. L51
    specialize jordan_enumeration_index_map_entry (u)
  4. L52
    specialize jordan_enumeration_index_map_entry (v)
  5. L53
    specialize jordan_enumeration_index_map_entry (i)
  6. L54
    specialize jordan_enumeration_index_map_entry (r)
  7. L55
    apply jordan_enumeration_index_map_entry
  8. L56
    exact hm
  9. L57
    exact hi
  10. L58
    exact hat
13Establish hmjL59–68

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

  1. L59
    have hmj : Lt(r,v) ∧ (∀ x. ∀ y. ∀ z. ∀ n. BetaAt(A,B,j,x) ∧ BetaAt(C,D,j,y) → BetaAt(E,F,r,z) ∧ BetaAt(G,H,r,n) → IntegerVectorZero(x,y,z,n,k))Definitions: IntegerVectorZeroLtBetaAt
  2. L60
    specialize jordan_enumeration_index_map_entry (k)
  3. L61
    specialize jordan_enumeration_index_map_entry (A)
  4. L62
    specialize jordan_enumeration_index_map_entry (B)
  5. L63
    specialize jordan_enumeration_index_map_entry (C)
  6. L64
    specialize jordan_enumeration_index_map_entry (D)
  7. L65
    specialize jordan_enumeration_index_map_entry (E)
  8. L66
    specialize jordan_enumeration_index_map_entry (F)
  9. L67
    specialize jordan_enumeration_index_map_entry (G)
  10. L68
    specialize jordan_enumeration_index_map_entry (H)
14Use earlier factsL69–78

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

  1. L69
    specialize jordan_enumeration_index_map_entry (Z)
  2. L70
    specialize jordan_enumeration_index_map_entry (W)
  3. L71
    specialize jordan_enumeration_index_map_entry (u)
  4. L72
    specialize jordan_enumeration_index_map_entry (v)
  5. L73
    specialize jordan_enumeration_index_map_entry (j)
  6. L74
    specialize jordan_enumeration_index_map_entry (r)
  7. L75
    apply jordan_enumeration_index_map_entry
  8. L76
    exact hm
  9. L77
    exact hj
  10. L78
    exact hbt
15Separate the logical casesL79–82

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

  1. L79
    cases hmi
  2. L80
    cases hmj
  3. L81
    cases hl
  4. L82
    cases hr
16Establish htL83–86

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

  1. L83
    have ht : ∃ b. ∃ c. BetaAt(E,F,r,b) ∧ BetaAt(G,H,r,c) ∧ (BetaPrefixInto(b,c,k,n) ∧ JordanPrimitiveTuple(n,b,c,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleBetaAt
  2. L84
    specialize hr_left (r)
  3. L85
    apply hr_left
  4. L86
    exact hmi_left
17Separate the logical casesL87–90

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

  1. L87
    cases ht
  2. L88
    cases ht_witness
  3. L89
    cases ht_witness_witness
  4. L90
    cases ht_witness_witness_right
18Establish haL91–94

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

  1. L91
    have ha : ∃ b. ∃ c. BetaAt(A,B,i,b) ∧ BetaAt(C,D,i,c) ∧ (BetaPrefixInto(b,c,k,n) ∧ JordanPrimitiveTuple(n,b,c,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleBetaAt
  2. L92
    specialize hl_left (i)
  3. L93
    apply hl_left
  4. L94
    exact hi
19Separate the logical casesL95–98

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

  1. L95
    cases ha
  2. L96
    cases ha_witness
  3. L97
    cases ha_witness_witness
  4. L98
    cases ha_witness_witness_right
20Establish hbL99–102

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

  1. L99
    have hb : ∃ b. ∃ c. BetaAt(A,B,j,b) ∧ BetaAt(C,D,j,c) ∧ (BetaPrefixInto(b,c,k,n) ∧ JordanPrimitiveTuple(n,b,c,k))Definitions: BetaPrefixIntoJordanPrimitiveTupleBetaAt
  2. L100
    specialize hl_left (j)
  3. L101
    apply hl_left
  4. L102
    exact hj
21Separate the logical casesL103–106

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

  1. L103
    cases hb
  2. L104
    cases hb_witness
  3. L105
    cases hb_witness_witness
  4. L106
    cases hb_witness_witness_right
22Establish heaL107–114

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

  1. L107
    have hea : IntegerVectorZero(x2,x3,x,x1,k)Definitions: IntegerVectorZero
  2. L108
    specialize hmi_right (x2)
  3. L109
    specialize hmi_right (x3)
  4. L110
    specialize hmi_right (x)
  5. L111
    specialize hmi_right (x1)
  6. L112
    apply hmi_right
  7. L113
    exact ha_witness_witness_left
  8. L114
    exact ht_witness_witness_left
23Establish hebL115–122

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

  1. L115
    have heb : IntegerVectorZero(x4,x5,x,x1,k)Definitions: IntegerVectorZero
  2. L116
    specialize hmj_right (x4)
  3. L117
    specialize hmj_right (x5)
  4. L118
    specialize hmj_right (x)
  5. L119
    specialize hmj_right (x1)
  6. L120
    apply hmj_right
  7. L121
    exact hb_witness_witness_left
  8. L122
    exact ht_witness_witness_left
24Establish hrevL123–130

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

  1. L123
    have hrev : IntegerVectorZero(x,x1,x4,x5,k)Definitions: IntegerVectorZero
  2. L124
    specialize jordan_tuple_equal_symm (x4)
  3. L125
    specialize jordan_tuple_equal_symm (x5)
  4. L126
    specialize jordan_tuple_equal_symm (x)
  5. L127
    specialize jordan_tuple_equal_symm (x1)
  6. L128
    specialize jordan_tuple_equal_symm (k)
  7. L129
    apply jordan_tuple_equal_symm
  8. L130
    exact heb
25Establish heqL131–140

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

  1. L131
    have heq : IntegerVectorZero(x2,x3,x4,x5,k)Definitions: IntegerVectorZero
  2. L132
    specialize jordan_tuple_equal_trans (x2)
  3. L133
    specialize jordan_tuple_equal_trans (x3)
  4. L134
    specialize jordan_tuple_equal_trans (x)
  5. L135
    specialize jordan_tuple_equal_trans (x1)
  6. L136
    specialize jordan_tuple_equal_trans (x4)
  7. L137
    specialize jordan_tuple_equal_trans (x5)
  8. L138
    specialize jordan_tuple_equal_trans (k)
  9. L139
    apply jordan_tuple_equal_trans
  10. L140
    exact hea
26Use earlier factsL141–150

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

  1. L141
    exact hrev
  2. L142
    specialize jordan_enumeration_distinct (k)
  3. L143
    specialize jordan_enumeration_distinct (n)
  4. L144
    specialize jordan_enumeration_distinct (A)
  5. L145
    specialize jordan_enumeration_distinct (B)
  6. L146
    specialize jordan_enumeration_distinct (C)
  7. L147
    specialize jordan_enumeration_distinct (D)
  8. L148
    specialize jordan_enumeration_distinct (u)
  9. L149
    specialize jordan_enumeration_distinct (i)
  10. L150
    specialize jordan_enumeration_distinct (j)
27Use earlier factsL151–160

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

  1. L151
    specialize jordan_enumeration_distinct (x2)
  2. L152
    specialize jordan_enumeration_distinct (x3)
  3. L153
    specialize jordan_enumeration_distinct (x4)
  4. L154
    specialize jordan_enumeration_distinct (x5)
  5. L155
    apply jordan_enumeration_distinct
  6. L156
    exact hl
  7. L157
    exact hi
  8. L158
    exact hj
  9. L159
    exact ha_witness_witness_left
  10. L160
    exact hb_witness_witness_left
28Use earlier factsL161–161

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

  1. L161
    exact heq

Library-wide reading audit

Original exact command ledger · 161 lines
  1. 0001intro k
  2. 0002intro n
  3. 0003intro A
  4. 0004intro B
  5. 0005intro C
  6. 0006intro D
  7. 0007intro u
  8. 0008intro E
  9. 0009intro F
  10. 0010intro G
  11. 0011intro H
  12. 0012intro v
  13. 0013intro Z
  14. 0014intro W
  15. 0015intro hl
  16. 0016intro hr
  17. 0017intro hm
  18. 0018split
  19. 0019intro i
  20. 0020intro hi
  21. 0021have hv : exists j. ((((exists fs_h_jt_bounded_mapat. fs_h_jt_bounded_mapat + S (j) = S ((S (i)) * W)) /\ exists fs_q_jt_bounded_mapat. Z = fs_q_jt_bounded_mapat * S ((S (i)) * W) + (j))) /\ (((exists jt_gap_bounded_mapbound. jt_gap_bounded_mapbound+S (j)=(v)) /\ (forall jt_b_bounded_mapmatch jt_c_bounded_mapmatch jt_d_bounded_mapmatch jt_e_bounded_mapmatch. (((((exists fs_h_jt_bounded_mapmatchleftcode. fs_h_jt_bounded_mapmatchleftcode + S (jt_b_bounded_mapmatch) = S ((S (i)) * B)) /\ exists fs_q_jt_bounded_mapmatchleftcode. A = fs_q_jt_bounded_mapmatchleftcode * S ((S (i)) * B) + (jt_b_bounded_mapmatch))) /\ (((exists fs_h_jt_bounded_mapmatchleftscale. fs_h_jt_bounded_mapmatchleftscale + S (jt_c_bounded_mapmatch) = S ((S (i)) * D)) /\ exists fs_q_jt_bounded_mapmatchleftscale. C = fs_q_jt_bounded_mapmatchleftscale * S ((S (i)) * D) + (jt_c_bounded_mapmatch))))) -> (((((exists fs_h_jt_bounded_mapmatchrightcode. fs_h_jt_bounded_mapmatchrightcode + S (jt_d_bounded_mapmatch) = S ((S (j)) * F)) /\ exists fs_q_jt_bounded_mapmatchrightcode. E = fs_q_jt_bounded_mapmatchrightcode * S ((S (j)) * F) + (jt_d_bounded_mapmatch))) /\ (((exists fs_h_jt_bounded_mapmatchrightscale. fs_h_jt_bounded_mapmatchrightscale + S (jt_e_bounded_mapmatch) = S ((S (j)) * H)) /\ exists fs_q_jt_bounded_mapmatchrightscale. G = fs_q_jt_bounded_mapmatchrightscale * S ((S (j)) * H) + (jt_e_bounded_mapmatch))))) -> (forall jt_index_bounded_mapmatchequal jt_left_bounded_mapmatchequal jt_right_bounded_mapmatchequal. (exists jt_gap_bounded_mapmatchequalindex. jt_gap_bounded_mapmatchequalindex+S (jt_index_bounded_mapmatchequal)=(k)) -> (((exists fs_h_jt_bounded_mapmatchequalleft. fs_h_jt_bounded_mapmatchequalleft + S (jt_left_bounded_mapmatchequal) = S ((S (jt_index_bounded_mapmatchequal)) * jt_c_bounded_mapmatch)) /\ exists fs_q_jt_bounded_mapmatchequalleft. jt_b_bounded_mapmatch = fs_q_jt_bounded_mapmatchequalleft * S ((S (jt_index_bounded_mapmatchequal)) * jt_c_bounded_mapmatch) + (jt_left_bounded_mapmatchequal))) -> (((exists fs_h_jt_bounded_mapmatchequalright. fs_h_jt_bounded_mapmatchequalright + S (jt_right_bounded_mapmatchequal) = S ((S (jt_index_bounded_mapmatchequal)) * jt_e_bounded_mapmatch)) /\ exists fs_q_jt_bounded_mapmatchequalright. jt_d_bounded_mapmatch = fs_q_jt_bounded_mapmatchequalright * S ((S (jt_index_bounded_mapmatchequal)) * jt_e_bounded_mapmatch) + (jt_right_bounded_mapmatchequal))) -> jt_left_bounded_mapmatchequal=jt_right_bounded_mapmatchequal)))))
  22. 0022specialize hm (i)
  23. 0023apply hm
  24. 0024exact hi
  25. 0025cases hv
  26. 0026cases hv_witness
  27. 0027cases hv_witness_right
  28. 0028exists x
  29. 0029split
  30. 0030exact hv_witness_left
  31. 0031exact hv_witness_right_left
  32. 0032intro i
  33. 0033intro j
  34. 0034intro r
  35. 0035intro hi
  36. 0036intro hj
  37. 0037intro hat
  38. 0038intro hbt
  39. 0039have hmi : ((exists jt_gap_hmibound. jt_gap_hmibound+S (r)=(v)) /\ (forall jt_b_hmimatch jt_c_hmimatch jt_d_hmimatch jt_e_hmimatch. (((((exists fs_h_jt_hmimatchleftcode. fs_h_jt_hmimatchleftcode + S (jt_b_hmimatch) = S ((S (i)) * B)) /\ exists fs_q_jt_hmimatchleftcode. A = fs_q_jt_hmimatchleftcode * S ((S (i)) * B) + (jt_b_hmimatch))) /\ (((exists fs_h_jt_hmimatchleftscale. fs_h_jt_hmimatchleftscale + S (jt_c_hmimatch) = S ((S (i)) * D)) /\ exists fs_q_jt_hmimatchleftscale. C = fs_q_jt_hmimatchleftscale * S ((S (i)) * D) + (jt_c_hmimatch))))) -> (((((exists fs_h_jt_hmimatchrightcode. fs_h_jt_hmimatchrightcode + S (jt_d_hmimatch) = S ((S (r)) * F)) /\ exists fs_q_jt_hmimatchrightcode. E = fs_q_jt_hmimatchrightcode * S ((S (r)) * F) + (jt_d_hmimatch))) /\ (((exists fs_h_jt_hmimatchrightscale. fs_h_jt_hmimatchrightscale + S (jt_e_hmimatch) = S ((S (r)) * H)) /\ exists fs_q_jt_hmimatchrightscale. G = fs_q_jt_hmimatchrightscale * S ((S (r)) * H) + (jt_e_hmimatch))))) -> (forall jt_index_hmimatchequal jt_left_hmimatchequal jt_right_hmimatchequal. (exists jt_gap_hmimatchequalindex. jt_gap_hmimatchequalindex+S (jt_index_hmimatchequal)=(k)) -> (((exists fs_h_jt_hmimatchequalleft. fs_h_jt_hmimatchequalleft + S (jt_left_hmimatchequal) = S ((S (jt_index_hmimatchequal)) * jt_c_hmimatch)) /\ exists fs_q_jt_hmimatchequalleft. jt_b_hmimatch = fs_q_jt_hmimatchequalleft * S ((S (jt_index_hmimatchequal)) * jt_c_hmimatch) + (jt_left_hmimatchequal))) -> (((exists fs_h_jt_hmimatchequalright. fs_h_jt_hmimatchequalright + S (jt_right_hmimatchequal) = S ((S (jt_index_hmimatchequal)) * jt_e_hmimatch)) /\ exists fs_q_jt_hmimatchequalright. jt_d_hmimatch = fs_q_jt_hmimatchequalright * S ((S (jt_index_hmimatchequal)) * jt_e_hmimatch) + (jt_right_hmimatchequal))) -> jt_left_hmimatchequal=jt_right_hmimatchequal)))
  40. 0040specialize jordan_enumeration_index_map_entry (k)
  41. 0041specialize jordan_enumeration_index_map_entry (A)
  42. 0042specialize jordan_enumeration_index_map_entry (B)
  43. 0043specialize jordan_enumeration_index_map_entry (C)
  44. 0044specialize jordan_enumeration_index_map_entry (D)
  45. 0045specialize jordan_enumeration_index_map_entry (E)
  46. 0046specialize jordan_enumeration_index_map_entry (F)
  47. 0047specialize jordan_enumeration_index_map_entry (G)
  48. 0048specialize jordan_enumeration_index_map_entry (H)
  49. 0049specialize jordan_enumeration_index_map_entry (Z)
  50. 0050specialize jordan_enumeration_index_map_entry (W)
  51. 0051specialize jordan_enumeration_index_map_entry (u)
  52. 0052specialize jordan_enumeration_index_map_entry (v)
  53. 0053specialize jordan_enumeration_index_map_entry (i)
  54. 0054specialize jordan_enumeration_index_map_entry (r)
  55. 0055apply jordan_enumeration_index_map_entry
  56. 0056exact hm
  57. 0057exact hi
  58. 0058exact hat
  59. 0059have hmj : ((exists jt_gap_hmjbound. jt_gap_hmjbound+S (r)=(v)) /\ (forall jt_b_hmjmatch jt_c_hmjmatch jt_d_hmjmatch jt_e_hmjmatch. (((((exists fs_h_jt_hmjmatchleftcode. fs_h_jt_hmjmatchleftcode + S (jt_b_hmjmatch) = S ((S (j)) * B)) /\ exists fs_q_jt_hmjmatchleftcode. A = fs_q_jt_hmjmatchleftcode * S ((S (j)) * B) + (jt_b_hmjmatch))) /\ (((exists fs_h_jt_hmjmatchleftscale. fs_h_jt_hmjmatchleftscale + S (jt_c_hmjmatch) = S ((S (j)) * D)) /\ exists fs_q_jt_hmjmatchleftscale. C = fs_q_jt_hmjmatchleftscale * S ((S (j)) * D) + (jt_c_hmjmatch))))) -> (((((exists fs_h_jt_hmjmatchrightcode. fs_h_jt_hmjmatchrightcode + S (jt_d_hmjmatch) = S ((S (r)) * F)) /\ exists fs_q_jt_hmjmatchrightcode. E = fs_q_jt_hmjmatchrightcode * S ((S (r)) * F) + (jt_d_hmjmatch))) /\ (((exists fs_h_jt_hmjmatchrightscale. fs_h_jt_hmjmatchrightscale + S (jt_e_hmjmatch) = S ((S (r)) * H)) /\ exists fs_q_jt_hmjmatchrightscale. G = fs_q_jt_hmjmatchrightscale * S ((S (r)) * H) + (jt_e_hmjmatch))))) -> (forall jt_index_hmjmatchequal jt_left_hmjmatchequal jt_right_hmjmatchequal. (exists jt_gap_hmjmatchequalindex. jt_gap_hmjmatchequalindex+S (jt_index_hmjmatchequal)=(k)) -> (((exists fs_h_jt_hmjmatchequalleft. fs_h_jt_hmjmatchequalleft + S (jt_left_hmjmatchequal) = S ((S (jt_index_hmjmatchequal)) * jt_c_hmjmatch)) /\ exists fs_q_jt_hmjmatchequalleft. jt_b_hmjmatch = fs_q_jt_hmjmatchequalleft * S ((S (jt_index_hmjmatchequal)) * jt_c_hmjmatch) + (jt_left_hmjmatchequal))) -> (((exists fs_h_jt_hmjmatchequalright. fs_h_jt_hmjmatchequalright + S (jt_right_hmjmatchequal) = S ((S (jt_index_hmjmatchequal)) * jt_e_hmjmatch)) /\ exists fs_q_jt_hmjmatchequalright. jt_d_hmjmatch = fs_q_jt_hmjmatchequalright * S ((S (jt_index_hmjmatchequal)) * jt_e_hmjmatch) + (jt_right_hmjmatchequal))) -> jt_left_hmjmatchequal=jt_right_hmjmatchequal)))
  60. 0060specialize jordan_enumeration_index_map_entry (k)
  61. 0061specialize jordan_enumeration_index_map_entry (A)
  62. 0062specialize jordan_enumeration_index_map_entry (B)
  63. 0063specialize jordan_enumeration_index_map_entry (C)
  64. 0064specialize jordan_enumeration_index_map_entry (D)
  65. 0065specialize jordan_enumeration_index_map_entry (E)
  66. 0066specialize jordan_enumeration_index_map_entry (F)
  67. 0067specialize jordan_enumeration_index_map_entry (G)
  68. 0068specialize jordan_enumeration_index_map_entry (H)
  69. 0069specialize jordan_enumeration_index_map_entry (Z)
  70. 0070specialize jordan_enumeration_index_map_entry (W)
  71. 0071specialize jordan_enumeration_index_map_entry (u)
  72. 0072specialize jordan_enumeration_index_map_entry (v)
  73. 0073specialize jordan_enumeration_index_map_entry (j)
  74. 0074specialize jordan_enumeration_index_map_entry (r)
  75. 0075apply jordan_enumeration_index_map_entry
  76. 0076exact hm
  77. 0077exact hj
  78. 0078exact hbt
  79. 0079cases hmi
  80. 0080cases hmj
  81. 0081cases hl
  82. 0082cases hr
  83. 0083have ht : exists b c. ((((((exists fs_h_jt_target_tupleentrycode. fs_h_jt_target_tupleentrycode + S (b) = S ((S (r)) * F)) /\ exists fs_q_jt_target_tupleentrycode. E = fs_q_jt_target_tupleentrycode * S ((S (r)) * F) + (b))) /\ (((exists fs_h_jt_target_tupleentryscale. fs_h_jt_target_tupleentryscale + S (c) = S ((S (r)) * H)) /\ exists fs_q_jt_target_tupleentryscale. G = fs_q_jt_target_tupleentryscale * S ((S (r)) * H) + (c))))) /\ (((forall jt_index_target_tuplebound. (exists jt_gap_target_tupleboundindex. jt_gap_target_tupleboundindex+S (jt_index_target_tuplebound)=(k)) -> exists jt_value_target_tuplebound. ((((exists fs_h_jt_target_tupleboundat. fs_h_jt_target_tupleboundat + S (jt_value_target_tuplebound) = S ((S (jt_index_target_tuplebound)) * c)) /\ exists fs_q_jt_target_tupleboundat. b = fs_q_jt_target_tupleboundat * S ((S (jt_index_target_tuplebound)) * c) + (jt_value_target_tuplebound))) /\ (exists jt_gap_target_tupleboundvalue. jt_gap_target_tupleboundvalue+S (jt_value_target_tuplebound)=(n)))) /\ (forall jt_divisor_target_tupleprimitive. (exists jt_factor_target_tupleprimitivemodulus. (n)=(jt_divisor_target_tupleprimitive)*jt_factor_target_tupleprimitivemodulus) -> (forall jt_index_target_tupleprimitivecoordinates jt_value_target_tupleprimitivecoordinates. (exists jt_gap_target_tupleprimitivecoordinatesindex. jt_gap_target_tupleprimitivecoordinatesindex+S (jt_index_target_tupleprimitivecoordinates)=(k)) -> (((exists fs_h_jt_target_tupleprimitivecoordinatesat. fs_h_jt_target_tupleprimitivecoordinatesat + S (jt_value_target_tupleprimitivecoordinates) = S ((S (jt_index_target_tupleprimitivecoordinates)) * c)) /\ exists fs_q_jt_target_tupleprimitivecoordinatesat. b = fs_q_jt_target_tupleprimitivecoordinatesat * S ((S (jt_index_target_tupleprimitivecoordinates)) * c) + (jt_value_target_tupleprimitivecoordinates))) -> (exists jt_factor_target_tupleprimitivecoordinatesdivides. (jt_value_target_tupleprimitivecoordinates)=(jt_divisor_target_tupleprimitive)*jt_factor_target_tupleprimitivecoordinatesdivides)) -> jt_divisor_target_tupleprimitive=1))))
  84. 0084specialize hr_left (r)
  85. 0085apply hr_left
  86. 0086exact hmi_left
  87. 0087cases ht
  88. 0088cases ht_witness
  89. 0089cases ht_witness_witness
  90. 0090cases ht_witness_witness_right
  91. 0091have ha : exists b c. ((((((exists fs_h_jt_first_tupleentrycode. fs_h_jt_first_tupleentrycode + S (b) = S ((S (i)) * B)) /\ exists fs_q_jt_first_tupleentrycode. A = fs_q_jt_first_tupleentrycode * S ((S (i)) * B) + (b))) /\ (((exists fs_h_jt_first_tupleentryscale. fs_h_jt_first_tupleentryscale + S (c) = S ((S (i)) * D)) /\ exists fs_q_jt_first_tupleentryscale. C = fs_q_jt_first_tupleentryscale * S ((S (i)) * D) + (c))))) /\ (((forall jt_index_first_tuplebound. (exists jt_gap_first_tupleboundindex. jt_gap_first_tupleboundindex+S (jt_index_first_tuplebound)=(k)) -> exists jt_value_first_tuplebound. ((((exists fs_h_jt_first_tupleboundat. fs_h_jt_first_tupleboundat + S (jt_value_first_tuplebound) = S ((S (jt_index_first_tuplebound)) * c)) /\ exists fs_q_jt_first_tupleboundat. b = fs_q_jt_first_tupleboundat * S ((S (jt_index_first_tuplebound)) * c) + (jt_value_first_tuplebound))) /\ (exists jt_gap_first_tupleboundvalue. jt_gap_first_tupleboundvalue+S (jt_value_first_tuplebound)=(n)))) /\ (forall jt_divisor_first_tupleprimitive. (exists jt_factor_first_tupleprimitivemodulus. (n)=(jt_divisor_first_tupleprimitive)*jt_factor_first_tupleprimitivemodulus) -> (forall jt_index_first_tupleprimitivecoordinates jt_value_first_tupleprimitivecoordinates. (exists jt_gap_first_tupleprimitivecoordinatesindex. jt_gap_first_tupleprimitivecoordinatesindex+S (jt_index_first_tupleprimitivecoordinates)=(k)) -> (((exists fs_h_jt_first_tupleprimitivecoordinatesat. fs_h_jt_first_tupleprimitivecoordinatesat + S (jt_value_first_tupleprimitivecoordinates) = S ((S (jt_index_first_tupleprimitivecoordinates)) * c)) /\ exists fs_q_jt_first_tupleprimitivecoordinatesat. b = fs_q_jt_first_tupleprimitivecoordinatesat * S ((S (jt_index_first_tupleprimitivecoordinates)) * c) + (jt_value_first_tupleprimitivecoordinates))) -> (exists jt_factor_first_tupleprimitivecoordinatesdivides. (jt_value_first_tupleprimitivecoordinates)=(jt_divisor_first_tupleprimitive)*jt_factor_first_tupleprimitivecoordinatesdivides)) -> jt_divisor_first_tupleprimitive=1))))
  92. 0092specialize hl_left (i)
  93. 0093apply hl_left
  94. 0094exact hi
  95. 0095cases ha
  96. 0096cases ha_witness
  97. 0097cases ha_witness_witness
  98. 0098cases ha_witness_witness_right
  99. 0099have hb : exists b c. ((((((exists fs_h_jt_second_tupleentrycode. fs_h_jt_second_tupleentrycode + S (b) = S ((S (j)) * B)) /\ exists fs_q_jt_second_tupleentrycode. A = fs_q_jt_second_tupleentrycode * S ((S (j)) * B) + (b))) /\ (((exists fs_h_jt_second_tupleentryscale. fs_h_jt_second_tupleentryscale + S (c) = S ((S (j)) * D)) /\ exists fs_q_jt_second_tupleentryscale. C = fs_q_jt_second_tupleentryscale * S ((S (j)) * D) + (c))))) /\ (((forall jt_index_second_tuplebound. (exists jt_gap_second_tupleboundindex. jt_gap_second_tupleboundindex+S (jt_index_second_tuplebound)=(k)) -> exists jt_value_second_tuplebound. ((((exists fs_h_jt_second_tupleboundat. fs_h_jt_second_tupleboundat + S (jt_value_second_tuplebound) = S ((S (jt_index_second_tuplebound)) * c)) /\ exists fs_q_jt_second_tupleboundat. b = fs_q_jt_second_tupleboundat * S ((S (jt_index_second_tuplebound)) * c) + (jt_value_second_tuplebound))) /\ (exists jt_gap_second_tupleboundvalue. jt_gap_second_tupleboundvalue+S (jt_value_second_tuplebound)=(n)))) /\ (forall jt_divisor_second_tupleprimitive. (exists jt_factor_second_tupleprimitivemodulus. (n)=(jt_divisor_second_tupleprimitive)*jt_factor_second_tupleprimitivemodulus) -> (forall jt_index_second_tupleprimitivecoordinates jt_value_second_tupleprimitivecoordinates. (exists jt_gap_second_tupleprimitivecoordinatesindex. jt_gap_second_tupleprimitivecoordinatesindex+S (jt_index_second_tupleprimitivecoordinates)=(k)) -> (((exists fs_h_jt_second_tupleprimitivecoordinatesat. fs_h_jt_second_tupleprimitivecoordinatesat + S (jt_value_second_tupleprimitivecoordinates) = S ((S (jt_index_second_tupleprimitivecoordinates)) * c)) /\ exists fs_q_jt_second_tupleprimitivecoordinatesat. b = fs_q_jt_second_tupleprimitivecoordinatesat * S ((S (jt_index_second_tupleprimitivecoordinates)) * c) + (jt_value_second_tupleprimitivecoordinates))) -> (exists jt_factor_second_tupleprimitivecoordinatesdivides. (jt_value_second_tupleprimitivecoordinates)=(jt_divisor_second_tupleprimitive)*jt_factor_second_tupleprimitivecoordinatesdivides)) -> jt_divisor_second_tupleprimitive=1))))
  100. 0100specialize hl_left (j)
  101. 0101apply hl_left
  102. 0102exact hj
  103. 0103cases hb
  104. 0104cases hb_witness
  105. 0105cases hb_witness_witness
  106. 0106cases hb_witness_witness_right
  107. 0107have hea : forall jt_index_first_equal_target jt_left_first_equal_target jt_right_first_equal_target. (exists jt_gap_first_equal_targetindex. jt_gap_first_equal_targetindex+S (jt_index_first_equal_target)=(k)) -> (((exists fs_h_jt_first_equal_targetleft. fs_h_jt_first_equal_targetleft + S (jt_left_first_equal_target) = S ((S (jt_index_first_equal_target)) * x3)) /\ exists fs_q_jt_first_equal_targetleft. x2 = fs_q_jt_first_equal_targetleft * S ((S (jt_index_first_equal_target)) * x3) + (jt_left_first_equal_target))) -> (((exists fs_h_jt_first_equal_targetright. fs_h_jt_first_equal_targetright + S (jt_right_first_equal_target) = S ((S (jt_index_first_equal_target)) * x1)) /\ exists fs_q_jt_first_equal_targetright. x = fs_q_jt_first_equal_targetright * S ((S (jt_index_first_equal_target)) * x1) + (jt_right_first_equal_target))) -> jt_left_first_equal_target=jt_right_first_equal_target
  108. 0108specialize hmi_right (x2)
  109. 0109specialize hmi_right (x3)
  110. 0110specialize hmi_right (x)
  111. 0111specialize hmi_right (x1)
  112. 0112apply hmi_right
  113. 0113exact ha_witness_witness_left
  114. 0114exact ht_witness_witness_left
  115. 0115have heb : forall jt_index_second_equal_target jt_left_second_equal_target jt_right_second_equal_target. (exists jt_gap_second_equal_targetindex. jt_gap_second_equal_targetindex+S (jt_index_second_equal_target)=(k)) -> (((exists fs_h_jt_second_equal_targetleft. fs_h_jt_second_equal_targetleft + S (jt_left_second_equal_target) = S ((S (jt_index_second_equal_target)) * x5)) /\ exists fs_q_jt_second_equal_targetleft. x4 = fs_q_jt_second_equal_targetleft * S ((S (jt_index_second_equal_target)) * x5) + (jt_left_second_equal_target))) -> (((exists fs_h_jt_second_equal_targetright. fs_h_jt_second_equal_targetright + S (jt_right_second_equal_target) = S ((S (jt_index_second_equal_target)) * x1)) /\ exists fs_q_jt_second_equal_targetright. x = fs_q_jt_second_equal_targetright * S ((S (jt_index_second_equal_target)) * x1) + (jt_right_second_equal_target))) -> jt_left_second_equal_target=jt_right_second_equal_target
  116. 0116specialize hmj_right (x4)
  117. 0117specialize hmj_right (x5)
  118. 0118specialize hmj_right (x)
  119. 0119specialize hmj_right (x1)
  120. 0120apply hmj_right
  121. 0121exact hb_witness_witness_left
  122. 0122exact ht_witness_witness_left
  123. 0123have hrev : forall jt_index_target_equal_second jt_left_target_equal_second jt_right_target_equal_second. (exists jt_gap_target_equal_secondindex. jt_gap_target_equal_secondindex+S (jt_index_target_equal_second)=(k)) -> (((exists fs_h_jt_target_equal_secondleft. fs_h_jt_target_equal_secondleft + S (jt_left_target_equal_second) = S ((S (jt_index_target_equal_second)) * x1)) /\ exists fs_q_jt_target_equal_secondleft. x = fs_q_jt_target_equal_secondleft * S ((S (jt_index_target_equal_second)) * x1) + (jt_left_target_equal_second))) -> (((exists fs_h_jt_target_equal_secondright. fs_h_jt_target_equal_secondright + S (jt_right_target_equal_second) = S ((S (jt_index_target_equal_second)) * x5)) /\ exists fs_q_jt_target_equal_secondright. x4 = fs_q_jt_target_equal_secondright * S ((S (jt_index_target_equal_second)) * x5) + (jt_right_target_equal_second))) -> jt_left_target_equal_second=jt_right_target_equal_second
  124. 0124specialize jordan_tuple_equal_symm (x4)
  125. 0125specialize jordan_tuple_equal_symm (x5)
  126. 0126specialize jordan_tuple_equal_symm (x)
  127. 0127specialize jordan_tuple_equal_symm (x1)
  128. 0128specialize jordan_tuple_equal_symm (k)
  129. 0129apply jordan_tuple_equal_symm
  130. 0130exact heb
  131. 0131have heq : forall jt_index_source_equal_source jt_left_source_equal_source jt_right_source_equal_source. (exists jt_gap_source_equal_sourceindex. jt_gap_source_equal_sourceindex+S (jt_index_source_equal_source)=(k)) -> (((exists fs_h_jt_source_equal_sourceleft. fs_h_jt_source_equal_sourceleft + S (jt_left_source_equal_source) = S ((S (jt_index_source_equal_source)) * x3)) /\ exists fs_q_jt_source_equal_sourceleft. x2 = fs_q_jt_source_equal_sourceleft * S ((S (jt_index_source_equal_source)) * x3) + (jt_left_source_equal_source))) -> (((exists fs_h_jt_source_equal_sourceright. fs_h_jt_source_equal_sourceright + S (jt_right_source_equal_source) = S ((S (jt_index_source_equal_source)) * x5)) /\ exists fs_q_jt_source_equal_sourceright. x4 = fs_q_jt_source_equal_sourceright * S ((S (jt_index_source_equal_source)) * x5) + (jt_right_source_equal_source))) -> jt_left_source_equal_source=jt_right_source_equal_source
  132. 0132specialize jordan_tuple_equal_trans (x2)
  133. 0133specialize jordan_tuple_equal_trans (x3)
  134. 0134specialize jordan_tuple_equal_trans (x)
  135. 0135specialize jordan_tuple_equal_trans (x1)
  136. 0136specialize jordan_tuple_equal_trans (x4)
  137. 0137specialize jordan_tuple_equal_trans (x5)
  138. 0138specialize jordan_tuple_equal_trans (k)
  139. 0139apply jordan_tuple_equal_trans
  140. 0140exact hea
  141. 0141exact hrev
  142. 0142specialize jordan_enumeration_distinct (k)
  143. 0143specialize jordan_enumeration_distinct (n)
  144. 0144specialize jordan_enumeration_distinct (A)
  145. 0145specialize jordan_enumeration_distinct (B)
  146. 0146specialize jordan_enumeration_distinct (C)
  147. 0147specialize jordan_enumeration_distinct (D)
  148. 0148specialize jordan_enumeration_distinct (u)
  149. 0149specialize jordan_enumeration_distinct (i)
  150. 0150specialize jordan_enumeration_distinct (j)
  151. 0151specialize jordan_enumeration_distinct (x2)
  152. 0152specialize jordan_enumeration_distinct (x3)
  153. 0153specialize jordan_enumeration_distinct (x4)
  154. 0154specialize jordan_enumeration_distinct (x5)
  155. 0155apply jordan_enumeration_distinct
  156. 0156exact hl
  157. 0157exact hi
  158. 0158exact hj
  159. 0159exact ha_witness_witness_left
  160. 0160exact hb_witness_witness_left
  161. 0161exact heq