JT0024

jordan_tuple_scan_complete

A completed duplicate-free scan of a genuine representative box is the independent enumeration graph.

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

95 new Alpha admissions come from 96 source lemmas: tuple equality reflexivity reuses an already-admitted theorem and is not counted twice. All counts use actual finite beta-coded enumerations. G008 multiplicativity is proved; the general prime-power count and distinct-prime product formula are further goals. General prime-power fields (G091) remain open. Stable is unchanged.

Exact theorem in conservative defined notation

∀ k. ∀ n. ∀ c. ∀ T. ∀ B. ∀ C. ∀ D. ∀ E. ∀ j. JordanTupleRepresentatives(k,n,c,T) → JordanTupleScan(k,n,c,T,B,C,D,E,j) → JordanTupleEnumeration(k,n,B,C,D,E,j)

Every linked abbreviation expands hygienically to the identical original native formula.

Definition DAG

Actual proof prerequisites

Original expanded first-order statement
forall k n c T B C D E j. (forall jt_code_completebox jt_scale_completebox. (forall jt_index_completeboxbound. (exists jt_gap_completeboxboundindex. jt_gap_completeboxboundindex+S (jt_index_completeboxbound)=(k)) -> exists jt_value_completeboxbound. ((((exists fs_h_jt_completeboxboundat. fs_h_jt_completeboxboundat + S (jt_value_completeboxbound) = S ((S (jt_index_completeboxbound)) * jt_scale_completebox)) /\ exists fs_q_jt_completeboxboundat. jt_code_completebox = fs_q_jt_completeboxboundat * S ((S (jt_index_completeboxbound)) * jt_scale_completebox) + (jt_value_completeboxbound))) /\ (exists jt_gap_completeboxboundvalue. jt_gap_completeboxboundvalue+S (jt_value_completeboxbound)=(n)))) -> exists jt_representative_completebox. ((exists jt_gap_completeboxindex. jt_gap_completeboxindex+S (jt_representative_completebox)=(T)) /\ (forall jt_index_completeboxequal jt_left_completeboxequal jt_right_completeboxequal. (exists jt_gap_completeboxequalindex. jt_gap_completeboxequalindex+S (jt_index_completeboxequal)=(k)) -> (((exists fs_h_jt_completeboxequalleft. fs_h_jt_completeboxequalleft + S (jt_left_completeboxequal) = S ((S (jt_index_completeboxequal)) * jt_scale_completebox)) /\ exists fs_q_jt_completeboxequalleft. jt_code_completebox = fs_q_jt_completeboxequalleft * S ((S (jt_index_completeboxequal)) * jt_scale_completebox) + (jt_left_completeboxequal))) -> (((exists fs_h_jt_completeboxequalright. fs_h_jt_completeboxequalright + S (jt_right_completeboxequal) = S ((S (jt_index_completeboxequal)) * c)) /\ exists fs_q_jt_completeboxequalright. jt_representative_completebox = fs_q_jt_completeboxequalright * S ((S (jt_index_completeboxequal)) * c) + (jt_right_completeboxequal))) -> jt_left_completeboxequal=jt_right_completeboxequal))) -> (((forall jt_i_completescan. (exists jt_gap_completescansoundindex. jt_gap_completescansoundindex+S (jt_i_completescan)=(j)) -> exists jt_b_completescan jt_e_completescan. ((((((exists fs_h_jt_completescansoundcode. fs_h_jt_completescansoundcode + S (jt_b_completescan) = S ((S (jt_i_completescan)) * C)) /\ exists fs_q_jt_completescansoundcode. B = fs_q_jt_completescansoundcode * S ((S (jt_i_completescan)) * C) + (jt_b_completescan))) /\ (((exists fs_h_jt_completescansoundscale. fs_h_jt_completescansoundscale + S (jt_e_completescan) = S ((S (jt_i_completescan)) * E)) /\ exists fs_q_jt_completescansoundscale. D = fs_q_jt_completescansoundscale * S ((S (jt_i_completescan)) * E) + (jt_e_completescan))))) /\ (((forall jt_index_completescanbound. (exists jt_gap_completescanboundindex. jt_gap_completescanboundindex+S (jt_index_completescanbound)=(k)) -> exists jt_value_completescanbound. ((((exists fs_h_jt_completescanboundat. fs_h_jt_completescanboundat + S (jt_value_completescanbound) = S ((S (jt_index_completescanbound)) * jt_e_completescan)) /\ exists fs_q_jt_completescanboundat. jt_b_completescan = fs_q_jt_completescanboundat * S ((S (jt_index_completescanbound)) * jt_e_completescan) + (jt_value_completescanbound))) /\ (exists jt_gap_completescanboundvalue. jt_gap_completescanboundvalue+S (jt_value_completescanbound)=(n)))) /\ (forall jt_divisor_completescanprimitive. (exists jt_factor_completescanprimitivemodulus. (n)=(jt_divisor_completescanprimitive)*jt_factor_completescanprimitivemodulus) -> (forall jt_index_completescanprimitivecoordinates jt_value_completescanprimitivecoordinates. (exists jt_gap_completescanprimitivecoordinatesindex. jt_gap_completescanprimitivecoordinatesindex+S (jt_index_completescanprimitivecoordinates)=(k)) -> (((exists fs_h_jt_completescanprimitivecoordinatesat. fs_h_jt_completescanprimitivecoordinatesat + S (jt_value_completescanprimitivecoordinates) = S ((S (jt_index_completescanprimitivecoordinates)) * jt_e_completescan)) /\ exists fs_q_jt_completescanprimitivecoordinatesat. jt_b_completescan = fs_q_jt_completescanprimitivecoordinatesat * S ((S (jt_index_completescanprimitivecoordinates)) * jt_e_completescan) + (jt_value_completescanprimitivecoordinates))) -> (exists jt_factor_completescanprimitivecoordinatesdivides. (jt_value_completescanprimitivecoordinates)=(jt_divisor_completescanprimitive)*jt_factor_completescanprimitivecoordinatesdivides)) -> jt_divisor_completescanprimitive=1))))) /\ (((forall jt_i_completescan jt_h_completescan jt_b_completescan jt_e_completescan jt_d_completescan jt_f_completescan. (exists jt_gap_completescanfirstindex. jt_gap_completescanfirstindex+S (jt_i_completescan)=(j)) -> (exists jt_gap_completescansecondindex. jt_gap_completescansecondindex+S (jt_h_completescan)=(j)) -> (((((exists fs_h_jt_completescanfirstcode. fs_h_jt_completescanfirstcode + S (jt_b_completescan) = S ((S (jt_i_completescan)) * C)) /\ exists fs_q_jt_completescanfirstcode. B = fs_q_jt_completescanfirstcode * S ((S (jt_i_completescan)) * C) + (jt_b_completescan))) /\ (((exists fs_h_jt_completescanfirstscale. fs_h_jt_completescanfirstscale + S (jt_e_completescan) = S ((S (jt_i_completescan)) * E)) /\ exists fs_q_jt_completescanfirstscale. D = fs_q_jt_completescanfirstscale * S ((S (jt_i_completescan)) * E) + (jt_e_completescan))))) -> (((((exists fs_h_jt_completescansecondcode. fs_h_jt_completescansecondcode + S (jt_d_completescan) = S ((S (jt_h_completescan)) * C)) /\ exists fs_q_jt_completescansecondcode. B = fs_q_jt_completescansecondcode * S ((S (jt_h_completescan)) * C) + (jt_d_completescan))) /\ (((exists fs_h_jt_completescansecondscale. fs_h_jt_completescansecondscale + S (jt_f_completescan) = S ((S (jt_h_completescan)) * E)) /\ exists fs_q_jt_completescansecondscale. D = fs_q_jt_completescansecondscale * S ((S (jt_h_completescan)) * E) + (jt_f_completescan))))) -> (forall jt_index_completescansame jt_left_completescansame jt_right_completescansame. (exists jt_gap_completescansameindex. jt_gap_completescansameindex+S (jt_index_completescansame)=(k)) -> (((exists fs_h_jt_completescansameleft. fs_h_jt_completescansameleft + S (jt_left_completescansame) = S ((S (jt_index_completescansame)) * jt_e_completescan)) /\ exists fs_q_jt_completescansameleft. jt_b_completescan = fs_q_jt_completescansameleft * S ((S (jt_index_completescansame)) * jt_e_completescan) + (jt_left_completescansame))) -> (((exists fs_h_jt_completescansameright. fs_h_jt_completescansameright + S (jt_right_completescansame) = S ((S (jt_index_completescansame)) * jt_f_completescan)) /\ exists fs_q_jt_completescansameright. jt_d_completescan = fs_q_jt_completescansameright * S ((S (jt_index_completescansame)) * jt_f_completescan) + (jt_right_completescansame))) -> jt_left_completescansame=jt_right_completescansame) -> jt_i_completescan=jt_h_completescan) /\ (forall jt_z_completescan. (exists jt_gap_completescancodeindex. jt_gap_completescancodeindex+S (jt_z_completescan)=(T)) -> (forall jt_index_completescaninputbound. (exists jt_gap_completescaninputboundindex. jt_gap_completescaninputboundindex+S (jt_index_completescaninputbound)=(k)) -> exists jt_value_completescaninputbound. ((((exists fs_h_jt_completescaninputboundat. fs_h_jt_completescaninputboundat + S (jt_value_completescaninputbound) = S ((S (jt_index_completescaninputbound)) * c)) /\ exists fs_q_jt_completescaninputboundat. jt_z_completescan = fs_q_jt_completescaninputboundat * S ((S (jt_index_completescaninputbound)) * c) + (jt_value_completescaninputbound))) /\ (exists jt_gap_completescaninputboundvalue. jt_gap_completescaninputboundvalue+S (jt_value_completescaninputbound)=(n)))) -> (forall jt_divisor_completescaninputprimitive. (exists jt_factor_completescaninputprimitivemodulus. (n)=(jt_divisor_completescaninputprimitive)*jt_factor_completescaninputprimitivemodulus) -> (forall jt_index_completescaninputprimitivecoordinates jt_value_completescaninputprimitivecoordinates. (exists jt_gap_completescaninputprimitivecoordinatesindex. jt_gap_completescaninputprimitivecoordinatesindex+S (jt_index_completescaninputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_completescaninputprimitivecoordinatesat. fs_h_jt_completescaninputprimitivecoordinatesat + S (jt_value_completescaninputprimitivecoordinates) = S ((S (jt_index_completescaninputprimitivecoordinates)) * c)) /\ exists fs_q_jt_completescaninputprimitivecoordinatesat. jt_z_completescan = fs_q_jt_completescaninputprimitivecoordinatesat * S ((S (jt_index_completescaninputprimitivecoordinates)) * c) + (jt_value_completescaninputprimitivecoordinates))) -> (exists jt_factor_completescaninputprimitivecoordinatesdivides. (jt_value_completescaninputprimitivecoordinates)=(jt_divisor_completescaninputprimitive)*jt_factor_completescaninputprimitivecoordinatesdivides)) -> jt_divisor_completescaninputprimitive=1) -> (exists jt_index_completescanlisted jt_code_completescanlisted jt_scale_completescanlisted. ((exists jt_gap_completescanlistedindex. jt_gap_completescanlistedindex+S (jt_index_completescanlisted)=(j)) /\ (((((((exists fs_h_jt_completescanlistedcode. fs_h_jt_completescanlistedcode + S (jt_code_completescanlisted) = S ((S (jt_index_completescanlisted)) * C)) /\ exists fs_q_jt_completescanlistedcode. B = fs_q_jt_completescanlistedcode * S ((S (jt_index_completescanlisted)) * C) + (jt_code_completescanlisted))) /\ (((exists fs_h_jt_completescanlistedscale. fs_h_jt_completescanlistedscale + S (jt_scale_completescanlisted) = S ((S (jt_index_completescanlisted)) * E)) /\ exists fs_q_jt_completescanlistedscale. D = fs_q_jt_completescanlistedscale * S ((S (jt_index_completescanlisted)) * E) + (jt_scale_completescanlisted))))) /\ (forall jt_index_completescanlistedequal jt_left_completescanlistedequal jt_right_completescanlistedequal. (exists jt_gap_completescanlistedequalindex. jt_gap_completescanlistedequalindex+S (jt_index_completescanlistedequal)=(k)) -> (((exists fs_h_jt_completescanlistedequalleft. fs_h_jt_completescanlistedequalleft + S (jt_left_completescanlistedequal) = S ((S (jt_index_completescanlistedequal)) * c)) /\ exists fs_q_jt_completescanlistedequalleft. jt_z_completescan = fs_q_jt_completescanlistedequalleft * S ((S (jt_index_completescanlistedequal)) * c) + (jt_left_completescanlistedequal))) -> (((exists fs_h_jt_completescanlistedequalright. fs_h_jt_completescanlistedequalright + S (jt_right_completescanlistedequal) = S ((S (jt_index_completescanlistedequal)) * jt_scale_completescanlisted)) /\ exists fs_q_jt_completescanlistedequalright. jt_code_completescanlisted = fs_q_jt_completescanlistedequalright * S ((S (jt_index_completescanlistedequal)) * jt_scale_completescanlisted) + (jt_right_completescanlistedequal))) -> jt_left_completescanlistedequal=jt_right_completescanlistedequal)))))))))) -> (((forall jt_i_completeenum. (exists jt_gap_completeenumsoundindex. jt_gap_completeenumsoundindex+S (jt_i_completeenum)=(j)) -> exists jt_b_completeenum jt_c_completeenum. ((((((exists fs_h_jt_completeenumsoundcode. fs_h_jt_completeenumsoundcode + S (jt_b_completeenum) = S ((S (jt_i_completeenum)) * C)) /\ exists fs_q_jt_completeenumsoundcode. B = fs_q_jt_completeenumsoundcode * S ((S (jt_i_completeenum)) * C) + (jt_b_completeenum))) /\ (((exists fs_h_jt_completeenumsoundscale. fs_h_jt_completeenumsoundscale + S (jt_c_completeenum) = S ((S (jt_i_completeenum)) * E)) /\ exists fs_q_jt_completeenumsoundscale. D = fs_q_jt_completeenumsoundscale * S ((S (jt_i_completeenum)) * E) + (jt_c_completeenum))))) /\ (((forall jt_index_completeenumbound. (exists jt_gap_completeenumboundindex. jt_gap_completeenumboundindex+S (jt_index_completeenumbound)=(k)) -> exists jt_value_completeenumbound. ((((exists fs_h_jt_completeenumboundat. fs_h_jt_completeenumboundat + S (jt_value_completeenumbound) = S ((S (jt_index_completeenumbound)) * jt_c_completeenum)) /\ exists fs_q_jt_completeenumboundat. jt_b_completeenum = fs_q_jt_completeenumboundat * S ((S (jt_index_completeenumbound)) * jt_c_completeenum) + (jt_value_completeenumbound))) /\ (exists jt_gap_completeenumboundvalue. jt_gap_completeenumboundvalue+S (jt_value_completeenumbound)=(n)))) /\ (forall jt_divisor_completeenumprimitive. (exists jt_factor_completeenumprimitivemodulus. (n)=(jt_divisor_completeenumprimitive)*jt_factor_completeenumprimitivemodulus) -> (forall jt_index_completeenumprimitivecoordinates jt_value_completeenumprimitivecoordinates. (exists jt_gap_completeenumprimitivecoordinatesindex. jt_gap_completeenumprimitivecoordinatesindex+S (jt_index_completeenumprimitivecoordinates)=(k)) -> (((exists fs_h_jt_completeenumprimitivecoordinatesat. fs_h_jt_completeenumprimitivecoordinatesat + S (jt_value_completeenumprimitivecoordinates) = S ((S (jt_index_completeenumprimitivecoordinates)) * jt_c_completeenum)) /\ exists fs_q_jt_completeenumprimitivecoordinatesat. jt_b_completeenum = fs_q_jt_completeenumprimitivecoordinatesat * S ((S (jt_index_completeenumprimitivecoordinates)) * jt_c_completeenum) + (jt_value_completeenumprimitivecoordinates))) -> (exists jt_factor_completeenumprimitivecoordinatesdivides. (jt_value_completeenumprimitivecoordinates)=(jt_divisor_completeenumprimitive)*jt_factor_completeenumprimitivecoordinatesdivides)) -> jt_divisor_completeenumprimitive=1))))) /\ (((forall jt_b_completeenum jt_c_completeenum. (forall jt_index_completeenuminputbound. (exists jt_gap_completeenuminputboundindex. jt_gap_completeenuminputboundindex+S (jt_index_completeenuminputbound)=(k)) -> exists jt_value_completeenuminputbound. ((((exists fs_h_jt_completeenuminputboundat. fs_h_jt_completeenuminputboundat + S (jt_value_completeenuminputbound) = S ((S (jt_index_completeenuminputbound)) * jt_c_completeenum)) /\ exists fs_q_jt_completeenuminputboundat. jt_b_completeenum = fs_q_jt_completeenuminputboundat * S ((S (jt_index_completeenuminputbound)) * jt_c_completeenum) + (jt_value_completeenuminputbound))) /\ (exists jt_gap_completeenuminputboundvalue. jt_gap_completeenuminputboundvalue+S (jt_value_completeenuminputbound)=(n)))) -> (forall jt_divisor_completeenuminputprimitive. (exists jt_factor_completeenuminputprimitivemodulus. (n)=(jt_divisor_completeenuminputprimitive)*jt_factor_completeenuminputprimitivemodulus) -> (forall jt_index_completeenuminputprimitivecoordinates jt_value_completeenuminputprimitivecoordinates. (exists jt_gap_completeenuminputprimitivecoordinatesindex. jt_gap_completeenuminputprimitivecoordinatesindex+S (jt_index_completeenuminputprimitivecoordinates)=(k)) -> (((exists fs_h_jt_completeenuminputprimitivecoordinatesat. fs_h_jt_completeenuminputprimitivecoordinatesat + S (jt_value_completeenuminputprimitivecoordinates) = S ((S (jt_index_completeenuminputprimitivecoordinates)) * jt_c_completeenum)) /\ exists fs_q_jt_completeenuminputprimitivecoordinatesat. jt_b_completeenum = fs_q_jt_completeenuminputprimitivecoordinatesat * S ((S (jt_index_completeenuminputprimitivecoordinates)) * jt_c_completeenum) + (jt_value_completeenuminputprimitivecoordinates))) -> (exists jt_factor_completeenuminputprimitivecoordinatesdivides. (jt_value_completeenuminputprimitivecoordinates)=(jt_divisor_completeenuminputprimitive)*jt_factor_completeenuminputprimitivecoordinatesdivides)) -> jt_divisor_completeenuminputprimitive=1) -> exists jt_i_completeenum jt_d_completeenum jt_e_completeenum. ((exists jt_gap_completeenumcompleteindex. jt_gap_completeenumcompleteindex+S (jt_i_completeenum)=(j)) /\ (((((((exists fs_h_jt_completeenumcompletecode. fs_h_jt_completeenumcompletecode + S (jt_d_completeenum) = S ((S (jt_i_completeenum)) * C)) /\ exists fs_q_jt_completeenumcompletecode. B = fs_q_jt_completeenumcompletecode * S ((S (jt_i_completeenum)) * C) + (jt_d_completeenum))) /\ (((exists fs_h_jt_completeenumcompletescale. fs_h_jt_completeenumcompletescale + S (jt_e_completeenum) = S ((S (jt_i_completeenum)) * E)) /\ exists fs_q_jt_completeenumcompletescale. D = fs_q_jt_completeenumcompletescale * S ((S (jt_i_completeenum)) * E) + (jt_e_completeenum))))) /\ (forall jt_index_completeenumrepresented jt_left_completeenumrepresented jt_right_completeenumrepresented. (exists jt_gap_completeenumrepresentedindex. jt_gap_completeenumrepresentedindex+S (jt_index_completeenumrepresented)=(k)) -> (((exists fs_h_jt_completeenumrepresentedleft. fs_h_jt_completeenumrepresentedleft + S (jt_left_completeenumrepresented) = S ((S (jt_index_completeenumrepresented)) * jt_c_completeenum)) /\ exists fs_q_jt_completeenumrepresentedleft. jt_b_completeenum = fs_q_jt_completeenumrepresentedleft * S ((S (jt_index_completeenumrepresented)) * jt_c_completeenum) + (jt_left_completeenumrepresented))) -> (((exists fs_h_jt_completeenumrepresentedright. fs_h_jt_completeenumrepresentedright + S (jt_right_completeenumrepresented) = S ((S (jt_index_completeenumrepresented)) * jt_e_completeenum)) /\ exists fs_q_jt_completeenumrepresentedright. jt_d_completeenum = fs_q_jt_completeenumrepresentedright * S ((S (jt_index_completeenumrepresented)) * jt_e_completeenum) + (jt_right_completeenumrepresented))) -> jt_left_completeenumrepresented=jt_right_completeenumrepresented))))) /\ (forall jt_i_completeenum jt_h_completeenum jt_b_completeenum jt_c_completeenum jt_d_completeenum jt_e_completeenum. (exists jt_gap_completeenumfirstindex. jt_gap_completeenumfirstindex+S (jt_i_completeenum)=(j)) -> (exists jt_gap_completeenumsecondindex. jt_gap_completeenumsecondindex+S (jt_h_completeenum)=(j)) -> (((((exists fs_h_jt_completeenumfirstcode. fs_h_jt_completeenumfirstcode + S (jt_b_completeenum) = S ((S (jt_i_completeenum)) * C)) /\ exists fs_q_jt_completeenumfirstcode. B = fs_q_jt_completeenumfirstcode * S ((S (jt_i_completeenum)) * C) + (jt_b_completeenum))) /\ (((exists fs_h_jt_completeenumfirstscale. fs_h_jt_completeenumfirstscale + S (jt_c_completeenum) = S ((S (jt_i_completeenum)) * E)) /\ exists fs_q_jt_completeenumfirstscale. D = fs_q_jt_completeenumfirstscale * S ((S (jt_i_completeenum)) * E) + (jt_c_completeenum))))) -> (((((exists fs_h_jt_completeenumsecondcode. fs_h_jt_completeenumsecondcode + S (jt_d_completeenum) = S ((S (jt_h_completeenum)) * C)) /\ exists fs_q_jt_completeenumsecondcode. B = fs_q_jt_completeenumsecondcode * S ((S (jt_h_completeenum)) * C) + (jt_d_completeenum))) /\ (((exists fs_h_jt_completeenumsecondscale. fs_h_jt_completeenumsecondscale + S (jt_e_completeenum) = S ((S (jt_h_completeenum)) * E)) /\ exists fs_q_jt_completeenumsecondscale. D = fs_q_jt_completeenumsecondscale * S ((S (jt_h_completeenum)) * E) + (jt_e_completeenum))))) -> (forall jt_index_completeenumsame jt_left_completeenumsame jt_right_completeenumsame. (exists jt_gap_completeenumsameindex. jt_gap_completeenumsameindex+S (jt_index_completeenumsame)=(k)) -> (((exists fs_h_jt_completeenumsameleft. fs_h_jt_completeenumsameleft + S (jt_left_completeenumsame) = S ((S (jt_index_completeenumsame)) * jt_c_completeenum)) /\ exists fs_q_jt_completeenumsameleft. jt_b_completeenum = fs_q_jt_completeenumsameleft * S ((S (jt_index_completeenumsame)) * jt_c_completeenum) + (jt_left_completeenumsame))) -> (((exists fs_h_jt_completeenumsameright. fs_h_jt_completeenumsameright + S (jt_right_completeenumsame) = S ((S (jt_index_completeenumsame)) * jt_e_completeenum)) /\ exists fs_q_jt_completeenumsameright. jt_d_completeenum = fs_q_jt_completeenumsameright * S ((S (jt_index_completeenumsame)) * jt_e_completeenum) + (jt_right_completeenumsame))) -> jt_left_completeenumsame=jt_right_completeenumsame) -> jt_i_completeenum=jt_h_completeenum)))))

Complete tactic proof in conservative notation

All 61 original proof lines are preserved. Only local proposition formulas are abbreviated; every abbreviation has an exact binder-safe expansion check. The linked exact edition contains the unchanged replay script.

Read the argument

Proof checkpoints

61 script commands · 12 reading checkpoints · 1 local claims

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

Definition notation is shown below. Open the paired exact edition for the original native formulas. Source pairing is not a new equivalence certificate.

Named ingredients (3)
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 c
  4. L4
    intro T
  5. L5
    intro B
  6. L6
    intro C
  7. L7
    intro D
  8. L8
    intro E
  9. L9
    intro j
  10. L10
    intro hbox
02Fix variables and assumptionsL11–11

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

  1. L11
    intro hscan
03Separate the logical casesL12–14

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

  1. L12
    cases hscan
  2. L13
    cases hscan_right
  3. L14
    split
04Use earlier factsL15–15

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

  1. L15
    exact hscan_left
05Separate the logical casesL16–16

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

  1. L16
    split
06Fix variables and assumptionsL17–20

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

  1. L17
    intro b
  2. L18
    intro e
  3. L19
    intro hb
  4. L20
    intro hp
07Establish hzL21–25

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

  1. L21
    have hz : ∃ z. Lt(z,T) ∧ IntegerVectorZero(b,e,z,c,k)Definitions: Lt(z,T)IntegerVectorZero(b,e,z,c,k)Original native command in the exact edition
  2. L22
    specialize hbox (b)
  3. L23
    specialize hbox (e)
  4. L24
    apply hbox
  5. L25
    exact hb
08Separate the logical casesL26–27

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

  1. L26
    cases hz
  2. L27
    cases hz_witness
09Use earlier factsL28–37

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

  1. L28
    specialize jordan_tuple_listed_equal_transport (b)
  2. L29
    specialize jordan_tuple_listed_equal_transport (e)
  3. L30
    specialize jordan_tuple_listed_equal_transport (x)
  4. L31
    specialize jordan_tuple_listed_equal_transport (c)
  5. L32
    specialize jordan_tuple_listed_equal_transport (k)
  6. L33
    specialize jordan_tuple_listed_equal_transport (B)
  7. L34
    specialize jordan_tuple_listed_equal_transport (C)
  8. L35
    specialize jordan_tuple_listed_equal_transport (D)
  9. L36
    specialize jordan_tuple_listed_equal_transport (E)
  10. L37
    specialize jordan_tuple_listed_equal_transport (j)
10Use earlier factsL38–47

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

  1. L38
    apply jordan_tuple_listed_equal_transport
  2. L39
    exact hz_witness_right
  3. L40
    specialize hscan_right_right (x)
  4. L41
    apply hscan_right_right
  5. L42
    exact hz_witness_left
  6. L43
    specialize jordan_tuple_bounded_transport (b)
  7. L44
    specialize jordan_tuple_bounded_transport (e)
  8. L45
    specialize jordan_tuple_bounded_transport (x)
  9. L46
    specialize jordan_tuple_bounded_transport (c)
  10. L47
    specialize jordan_tuple_bounded_transport (k)
11Use earlier factsL48–57

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

  1. L48
    specialize jordan_tuple_bounded_transport (n)
  2. L49
    apply jordan_tuple_bounded_transport
  3. L50
    exact hz_witness_right
  4. L51
    exact hb
  5. L52
    specialize jordan_primitive_tuple_transport (n)
  6. L53
    specialize jordan_primitive_tuple_transport (b)
  7. L54
    specialize jordan_primitive_tuple_transport (e)
  8. L55
    specialize jordan_primitive_tuple_transport (x)
  9. L56
    specialize jordan_primitive_tuple_transport (c)
  10. L57
    specialize jordan_primitive_tuple_transport (k)
12Use earlier factsL58–61

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

  1. L58
    apply jordan_primitive_tuple_transport
  2. L59
    exact hz_witness_right
  3. L60
    exact hp
  4. L61
    exact hscan_right_left

Library-wide reading audit

Original defined command ledger · 61 lines
  1. 0001intro k
  2. 0002intro n
  3. 0003intro c
  4. 0004intro T
  5. 0005intro B
  6. 0006intro C
  7. 0007intro D
  8. 0008intro E
  9. 0009intro j
  10. 0010intro hbox
  11. 0011intro hscan
  12. 0012cases hscan
  13. 0013cases hscan_right
  14. 0014split
  15. 0015exact hscan_left
  16. 0016split
  17. 0017intro b
  18. 0018intro e
  19. 0019intro hb
  20. 0020intro hp
  21. 0021have hz : ∃ z. Lt(z,T) ∧ IntegerVectorZero(b,e,z,c,k)
  22. 0022specialize hbox (b)
  23. 0023specialize hbox (e)
  24. 0024apply hbox
  25. 0025exact hb
  26. 0026cases hz
  27. 0027cases hz_witness
  28. 0028specialize jordan_tuple_listed_equal_transport (b)
  29. 0029specialize jordan_tuple_listed_equal_transport (e)
  30. 0030specialize jordan_tuple_listed_equal_transport (x)
  31. 0031specialize jordan_tuple_listed_equal_transport (c)
  32. 0032specialize jordan_tuple_listed_equal_transport (k)
  33. 0033specialize jordan_tuple_listed_equal_transport (B)
  34. 0034specialize jordan_tuple_listed_equal_transport (C)
  35. 0035specialize jordan_tuple_listed_equal_transport (D)
  36. 0036specialize jordan_tuple_listed_equal_transport (E)
  37. 0037specialize jordan_tuple_listed_equal_transport (j)
  38. 0038apply jordan_tuple_listed_equal_transport
  39. 0039exact hz_witness_right
  40. 0040specialize hscan_right_right (x)
  41. 0041apply hscan_right_right
  42. 0042exact hz_witness_left
  43. 0043specialize jordan_tuple_bounded_transport (b)
  44. 0044specialize jordan_tuple_bounded_transport (e)
  45. 0045specialize jordan_tuple_bounded_transport (x)
  46. 0046specialize jordan_tuple_bounded_transport (c)
  47. 0047specialize jordan_tuple_bounded_transport (k)
  48. 0048specialize jordan_tuple_bounded_transport (n)
  49. 0049apply jordan_tuple_bounded_transport
  50. 0050exact hz_witness_right
  51. 0051exact hb
  52. 0052specialize jordan_primitive_tuple_transport (n)
  53. 0053specialize jordan_primitive_tuple_transport (b)
  54. 0054specialize jordan_primitive_tuple_transport (e)
  55. 0055specialize jordan_primitive_tuple_transport (x)
  56. 0056specialize jordan_primitive_tuple_transport (c)
  57. 0057specialize jordan_primitive_tuple_transport (k)
  58. 0058apply jordan_primitive_tuple_transport
  59. 0059exact hz_witness_right
  60. 0060exact hp
  61. 0061exact hscan_right_left