JT0040

jordan_rectangle_crt_append

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

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

∀ m. ∀ n. ∀ k. ∀ A. ∀ B. ∀ C. ∀ D. ∀ u. ∀ E. ∀ F. ∀ G. ∀ H. ∀ v. ∀ P. ∀ Q. ∀ R. ∀ T. ∀ q. ¬m = 0 → ¬n = 0 → Coprime(m,n) → JordanTupleEnumeration(k,m,A,B,C,D,u) → JordanTupleEnumeration(k,n,E,F,G,H,v) → JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,P,Q,R,T,q) → Lt(q,u · v) → ∃ x. ∃ y. ∃ z. ∃ i. JordanRectangleCRT(m,n,k,A,B,C,D,u,E,F,G,H,v,x,y,z,i,S q)

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

Definition DAG

Actual proof prerequisites

Original expanded first-order 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))))))))))))))

Complete tactic proof in conservative notation

All 217 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

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.

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 (5)
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 : ∃ i. ∃ j. DivRem(q,v,i,j)Definitions: DivRem(q,v,i,j)Original native command in the exact edition
  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
  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: Lt(i,u)BetaAt(A,B,i,x)BetaAt(C,D,i,y)BetaPrefixInto(x,y,k,m)JordanPrimitiveTuple(m,x,y,k)Original native command in the exact edition
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(k,m,A,B,C,D,u)Original native command in the exact edition
  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: BetaAt(A,B,x,b)BetaAt(C,D,x,c)BetaPrefixInto(b,c,k,m)JordanPrimitiveTuple(m,b,c,k)Original native command in the exact edition
  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: Lt(i,v)BetaAt(E,F,i,x)BetaAt(G,H,i,y)BetaPrefixInto(x,y,k,n)JordanPrimitiveTuple(n,x,y,k)Original native command in the exact edition
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(k,n,E,F,G,H,v)Original native command in the exact edition
  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: BetaAt(E,F,x1,b)BetaAt(G,H,x1,c)BetaPrefixInto(b,c,k,n)JordanPrimitiveTuple(n,b,c,k)Original native command in the exact edition
  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: JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,f,g,k)JordanPrimitiveTuple(m · n,f,g,k)Original native command in the exact edition
  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: IntegerVectorZero(P,Q,U,V,q)IntegerVectorZero(R,T,W,X,q)BetaAt(U,V,q,x6)BetaAt(W,X,q,x7)Original native command in the exact edition
  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 ∨ Lt(p,q)Definitions: Lt(p,q)Original native command in the exact edition
  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: Lt(i,u)Lt(j,v)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)Original native command in the exact edition
  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 defined 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 : ∃ i. ∃ j. DivRem(q,v,i,j)
  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 : Lt(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 : ∀ 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))
  53. 0053have hcopy : JordanTupleEnumeration(k,m,A,B,C,D,u)
  54. 0054exact hleft
  55. 0055cases hcopy
  56. 0056exact hcopy_left
  57. 0057have hl : ∃ b. ∃ c. BetaAt(A,B,x,b) ∧ BetaAt(C,D,x,c) ∧ (BetaPrefixInto(b,c,k,m) ∧ JordanPrimitiveTuple(m,b,c,k))
  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 : ∀ 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))
  66. 0066have hcopy : JordanTupleEnumeration(k,n,E,F,G,H,v)
  67. 0067exact hright
  68. 0068cases hcopy
  69. 0069exact hcopy_left
  70. 0070have hr : ∃ b. ∃ c. BetaAt(E,F,x1,b) ∧ BetaAt(G,H,x1,c) ∧ (BetaPrefixInto(b,c,k,n) ∧ JordanPrimitiveTuple(n,b,c,k))
  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 : ∃ f. ∃ g. JordanCanonicalTupleCRT(m,n,x2,x3,x4,x5,f,g,k) ∧ JordanPrimitiveTuple(m · n,f,g,k)
  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 : ∃ 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)))
  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 ∨ Lt(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 : ∃ 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)))))))
  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