Current library: Alpha v34, 4,223 checked-use theorems; Stable remains 432. Historical first admissions, original proof editions, and non-admitted aliases are preserved.
Exact expanded first-order arithmetic statement
forall p ab ac L bb bc d. (~((p) = 1) /\ forall pfa_factor_left_division_quotient_data_prime pfa_factor_right_division_quotient_data_prime. (p) = pfa_factor_left_division_quotient_data_prime * pfa_factor_right_division_quotient_data_prime -> pfa_factor_left_division_quotient_data_prime = 1 \/ pfa_factor_right_division_quotient_data_prime = 1) -> (forall fom_index_pfp_division_quotient_data_input. (exists fom_gap_pfp_division_quotient_data_input_index_bound. fom_gap_pfp_division_quotient_data_input_index_bound + S (fom_index_pfp_division_quotient_data_input) = L) -> exists fom_value_pfp_division_quotient_data_input. ((((exists fom_beta_height_pfp_division_quotient_data_input_entry. fom_beta_height_pfp_division_quotient_data_input_entry + S (fom_value_pfp_division_quotient_data_input) = S ((S (fom_index_pfp_division_quotient_data_input)) * ac)) /\ exists fom_beta_quotient_pfp_division_quotient_data_input_entry. ab = fom_beta_quotient_pfp_division_quotient_data_input_entry * S ((S (fom_index_pfp_division_quotient_data_input)) * ac) + (fom_value_pfp_division_quotient_data_input))) /\ (exists fom_gap_pfp_division_quotient_data_input_value_bound. fom_gap_pfp_division_quotient_data_input_value_bound + S (fom_value_pfp_division_quotient_data_input) = p))) -> ((((S d)=S (d)) /\ (((forall fom_index_pfp_division_quotient_data_divisorcoefficients. (exists fom_gap_pfp_division_quotient_data_divisorcoefficients_index_bound. fom_gap_pfp_division_quotient_data_divisorcoefficients_index_bound + S (fom_index_pfp_division_quotient_data_divisorcoefficients) = S d) -> exists fom_value_pfp_division_quotient_data_divisorcoefficients. ((((exists fom_beta_height_pfp_division_quotient_data_divisorcoefficients_entry. fom_beta_height_pfp_division_quotient_data_divisorcoefficients_entry + S (fom_value_pfp_division_quotient_data_divisorcoefficients) = S ((S (fom_index_pfp_division_quotient_data_divisorcoefficients)) * bc)) /\ exists fom_beta_quotient_pfp_division_quotient_data_divisorcoefficients_entry. bb = fom_beta_quotient_pfp_division_quotient_data_divisorcoefficients_entry * S ((S (fom_index_pfp_division_quotient_data_divisorcoefficients)) * bc) + (fom_value_pfp_division_quotient_data_divisorcoefficients))) /\ (exists fom_gap_pfp_division_quotient_data_divisorcoefficients_value_bound. fom_gap_pfp_division_quotient_data_divisorcoefficients_value_bound + S (fom_value_pfp_division_quotient_data_divisorcoefficients) = p))) /\ ((exists pfd_leading_division_quotient_data_divisor. ((((exists ff_h_pfp_division_quotient_data_divisorentry. ff_h_pfp_division_quotient_data_divisorentry + S (pfd_leading_division_quotient_data_divisor) = S ((S (0)) * bc)) /\ exists ff_q_pfp_division_quotient_data_divisorentry. bb = ff_q_pfp_division_quotient_data_divisorentry * S ((S (0)) * bc) + (pfd_leading_division_quotient_data_divisor))) /\ ((~(pfd_leading_division_quotient_data_divisor=0)))))))))) -> exists b k q qb qc. (((((exists ff_h_pfp_division_quotient_data_resulthead. ff_h_pfp_division_quotient_data_resulthead + S (b) = S ((S (0)) * bc)) /\ exists ff_q_pfp_division_quotient_data_resulthead. bb = ff_q_pfp_division_quotient_data_resulthead * S ((S (0)) * bc) + (b))) /\ (((((~((b) = 0)) /\ ((((exists pfa_gap_division_quotient_data_resultinversemultiplicationleft. pfa_gap_division_quotient_data_resultinversemultiplicationleft + S (b) = (p)) /\ (((exists pfa_gap_division_quotient_data_resultinversemultiplicationright. pfa_gap_division_quotient_data_resultinversemultiplicationright + S (k) = (p)) /\ ((((exists pfa_gap_division_quotient_data_resultinversemultiplicationresultbound. pfa_gap_division_quotient_data_resultinversemultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_division_quotient_data_resultinversemultiplicationresultcongruence pfa_offset_right_division_quotient_data_resultinversemultiplicationresultcongruence. ((b) * (k)) + (p) * pfa_offset_left_division_quotient_data_resultinversemultiplicationresultcongruence = (1) + (p) * pfa_offset_right_division_quotient_data_resultinversemultiplicationresultcongruence)))))))))))) /\ (((((((q)=0) /\ ((exists pfc_gap_division_quotient_data_resultlengthshort. pfc_gap_division_quotient_data_resultlengthshort+(L)=(d))))) \/ (((~((q)=0)) /\ (((q)+(d)=(L)))))) /\ ((forall pfd_index_division_quotient_data_resultexecution. (exists pfa_gap_division_quotient_data_resultexecutionbound. pfa_gap_division_quotient_data_resultexecutionbound + S (pfd_index_division_quotient_data_resultexecution) = (q)) -> exists pfd_value_division_quotient_data_resultexecution. ((((exists ff_h_pfp_division_quotient_data_resultexecutionentry. ff_h_pfp_division_quotient_data_resultexecutionentry + S (pfd_value_division_quotient_data_resultexecution) = S ((S (pfd_index_division_quotient_data_resultexecution)) * qc)) /\ exists ff_q_pfp_division_quotient_data_resultexecutionentry. qb = ff_q_pfp_division_quotient_data_resultexecutionentry * S ((S (pfd_index_division_quotient_data_resultexecution)) * qc) + (pfd_value_division_quotient_data_resultexecution))) /\ ((exists pfd_input_division_quotient_data_resultexecutionstep pfd_previous_division_quotient_data_resultexecutionstep pfd_difference_division_quotient_data_resultexecutionstep. ((((exists ff_h_pfp_division_quotient_data_resultexecutionstepinput. ff_h_pfp_division_quotient_data_resultexecutionstepinput + S (pfd_input_division_quotient_data_resultexecutionstep) = S ((S (pfd_index_division_quotient_data_resultexecution)) * ac)) /\ exists ff_q_pfp_division_quotient_data_resultexecutionstepinput. ab = ff_q_pfp_division_quotient_data_resultexecutionstepinput * S ((S (pfd_index_division_quotient_data_resultexecution)) * ac) + (pfd_input_division_quotient_data_resultexecutionstep))) /\ (((exists pfc_terms_code_division_quotient_data_resultexecutionstepprevious pfc_terms_scale_division_quotient_data_resultexecutionstepprevious pfc_natural_sum_division_quotient_data_resultexecutionstepprevious. ((forall pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal. (exists pfa_gap_division_quotient_data_resultexecutionsteppreviousdiagonalbound. pfa_gap_division_quotient_data_resultexecutionsteppreviousdiagonalbound + S (pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal) = (S (pfd_index_division_quotient_data_resultexecution))) -> exists pfc_value_division_quotient_data_resultexecutionsteppreviousdiagonal. ((((exists ff_h_pfp_division_quotient_data_resultexecutionsteppreviousdiagonalentry. ff_h_pfp_division_quotient_data_resultexecutionsteppreviousdiagonalentry + S (pfc_value_division_quotient_data_resultexecutionsteppreviousdiagonal) = S ((S (pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal)) * pfc_terms_scale_division_quotient_data_resultexecutionstepprevious)) /\ exists ff_q_pfp_division_quotient_data_resultexecutionsteppreviousdiagonalentry. pfc_terms_code_division_quotient_data_resultexecutionstepprevious = ff_q_pfp_division_quotient_data_resultexecutionsteppreviousdiagonalentry * S ((S (pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal)) * pfc_terms_scale_division_quotient_data_resultexecutionstepprevious) + (pfc_value_division_quotient_data_resultexecutionsteppreviousdiagonal))) /\ ((exists pfc_complement_division_quotient_data_resultexecutionsteppreviousdiagonalterm pfc_left_division_quotient_data_resultexecutionsteppreviousdiagonalterm pfc_right_division_quotient_data_resultexecutionsteppreviousdiagonalterm. (((pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal)+pfc_complement_division_quotient_data_resultexecutionsteppreviousdiagonalterm=(pfd_index_division_quotient_data_resultexecution)) /\ ((((((exists pfa_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftinside. pfa_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftinside + S (pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal) = (pfd_index_division_quotient_data_resultexecution)) /\ ((((exists ff_h_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftentry. ff_h_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftentry + S (pfc_left_division_quotient_data_resultexecutionsteppreviousdiagonalterm) = S ((S (pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal)) * qc)) /\ exists ff_q_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftentry. qb = ff_q_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftentry * S ((S (pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal)) * qc) + (pfc_left_division_quotient_data_resultexecutionsteppreviousdiagonalterm)))))) \/ (((exists pfc_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftoutside. pfc_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermleftoutside+(pfd_index_division_quotient_data_resultexecution)=(pfc_index_division_quotient_data_resultexecutionsteppreviousdiagonal)) /\ (((pfc_left_division_quotient_data_resultexecutionsteppreviousdiagonalterm)=0))))) /\ ((((((exists pfa_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightinside. pfa_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightinside + S (pfc_complement_division_quotient_data_resultexecutionsteppreviousdiagonalterm) = (S (d))) /\ ((((exists ff_h_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightentry. ff_h_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightentry + S (pfc_right_division_quotient_data_resultexecutionsteppreviousdiagonalterm) = S ((S (pfc_complement_division_quotient_data_resultexecutionsteppreviousdiagonalterm)) * bc)) /\ exists ff_q_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightentry. bb = ff_q_pfp_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightentry * S ((S (pfc_complement_division_quotient_data_resultexecutionsteppreviousdiagonalterm)) * bc) + (pfc_right_division_quotient_data_resultexecutionsteppreviousdiagonalterm)))))) \/ (((exists pfc_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightoutside. pfc_gap_division_quotient_data_resultexecutionsteppreviousdiagonaltermrightoutside+(S (d))=(pfc_complement_division_quotient_data_resultexecutionsteppreviousdiagonalterm)) /\ (((pfc_right_division_quotient_data_resultexecutionsteppreviousdiagonalterm)=0))))) /\ (((pfc_value_division_quotient_data_resultexecutionsteppreviousdiagonal)=pfc_left_division_quotient_data_resultexecutionsteppreviousdiagonalterm*pfc_right_division_quotient_data_resultexecutionsteppreviousdiagonalterm))))))))))) /\ (((exists fs_u_pfc_division_quotient_data_resultexecutionstepprevioussum fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum. ((((exists fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_start. fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_start + S (0) = S ((S (0)) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum)) /\ exists fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_start. fs_u_pfc_division_quotient_data_resultexecutionstepprevioussum = fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_start * S ((S (0)) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum) + (0))) /\ ((((exists fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_terminal. fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_terminal + S (pfc_natural_sum_division_quotient_data_resultexecutionstepprevious) = S ((S (S (pfd_index_division_quotient_data_resultexecution))) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum)) /\ exists fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_terminal. fs_u_pfc_division_quotient_data_resultexecutionstepprevioussum = fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_terminal * S ((S (S (pfd_index_division_quotient_data_resultexecution))) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum) + (pfc_natural_sum_division_quotient_data_resultexecutionstepprevious))) /\ forall fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps. (exists fs_lt_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_bound. fs_lt_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_bound + S fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps = S (pfd_index_division_quotient_data_resultexecution)) -> exists fs_a_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps fs_r_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps fs_s_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps. ((((exists fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_summand. fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_summand + S (fs_a_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps) = S ((S (fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)) * pfc_terms_scale_division_quotient_data_resultexecutionstepprevious)) /\ exists fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_summand. pfc_terms_code_division_quotient_data_resultexecutionstepprevious = fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_summand * S ((S (fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)) * pfc_terms_scale_division_quotient_data_resultexecutionstepprevious) + (fs_a_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps))) /\ ((((exists fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_partial. fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_partial + S (fs_r_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps) = S ((S (fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum)) /\ exists fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_partial. fs_u_pfc_division_quotient_data_resultexecutionstepprevioussum = fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_partial * S ((S (fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum) + (fs_r_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps))) /\ ((((exists fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_successor. fs_h_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_successor + S (fs_s_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps) = S ((S (S fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum)) /\ exists fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_successor. fs_u_pfc_division_quotient_data_resultexecutionstepprevioussum = fs_q_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps_successor * S ((S (S fs_i_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)) * fs_v_pfc_division_quotient_data_resultexecutionstepprevioussum) + (fs_s_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps))) /\ fs_s_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps = fs_r_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps + fs_a_pfc_division_quotient_data_resultexecutionstepprevioussum_body_steps)))))) /\ ((((exists pfa_gap_division_quotient_data_resultexecutionsteppreviousresiduebound. pfa_gap_division_quotient_data_resultexecutionsteppreviousresiduebound + S (pfd_previous_division_quotient_data_resultexecutionstep) = (p)) /\ ((exists pfa_offset_left_division_quotient_data_resultexecutionsteppreviousresiduecongruence pfa_offset_right_division_quotient_data_resultexecutionsteppreviousresiduecongruence. (pfc_natural_sum_division_quotient_data_resultexecutionstepprevious) + (p) * pfa_offset_left_division_quotient_data_resultexecutionsteppreviousresiduecongruence = (pfd_previous_division_quotient_data_resultexecutionstep) + (p) * pfa_offset_right_division_quotient_data_resultexecutionsteppreviousresiduecongruence))))))))) /\ (((((exists pfa_gap_division_quotient_data_resultexecutionstepsubtractleft. pfa_gap_division_quotient_data_resultexecutionstepsubtractleft + S (pfd_previous_division_quotient_data_resultexecutionstep) = (p)) /\ (((exists pfa_gap_division_quotient_data_resultexecutionstepsubtractright. pfa_gap_division_quotient_data_resultexecutionstepsubtractright + S (pfd_difference_division_quotient_data_resultexecutionstep) = (p)) /\ ((((exists pfa_gap_division_quotient_data_resultexecutionstepsubtractresultbound. pfa_gap_division_quotient_data_resultexecutionstepsubtractresultbound + S (pfd_input_division_quotient_data_resultexecutionstep) = (p)) /\ ((exists pfa_offset_left_division_quotient_data_resultexecutionstepsubtractresultcongruence pfa_offset_right_division_quotient_data_resultexecutionstepsubtractresultcongruence. ((pfd_previous_division_quotient_data_resultexecutionstep) + (pfd_difference_division_quotient_data_resultexecutionstep)) + (p) * pfa_offset_left_division_quotient_data_resultexecutionstepsubtractresultcongruence = (pfd_input_division_quotient_data_resultexecutionstep) + (p) * pfa_offset_right_division_quotient_data_resultexecutionstepsubtractresultcongruence))))))))) /\ ((((exists pfa_gap_division_quotient_data_resultexecutionstepmultiplyleft. pfa_gap_division_quotient_data_resultexecutionstepmultiplyleft + S (k) = (p)) /\ (((exists pfa_gap_division_quotient_data_resultexecutionstepmultiplyright. pfa_gap_division_quotient_data_resultexecutionstepmultiplyright + S (pfd_difference_division_quotient_data_resultexecutionstep) = (p)) /\ ((((exists pfa_gap_division_quotient_data_resultexecutionstepmultiplyresultbound. pfa_gap_division_quotient_data_resultexecutionstepmultiplyresultbound + S (pfd_value_division_quotient_data_resultexecution) = (p)) /\ ((exists pfa_offset_left_division_quotient_data_resultexecutionstepmultiplyresultcongruence pfa_offset_right_division_quotient_data_resultexecutionstepmultiplyresultcongruence. ((k) * (pfd_difference_division_quotient_data_resultexecutionstep)) + (p) * pfa_offset_left_division_quotient_data_resultexecutionstepmultiplyresultcongruence = (pfd_value_division_quotient_data_resultexecution) + (p) * pfa_offset_right_division_quotient_data_resultexecutionstepmultiplyresultcongruence))))))))))))))))))))))))))Constructive proof overview
Generated structural guide
Construct the actual divisor head, inverse, quotient length and quotient table as one small independently checked construction stage.
The unchanged tactic script uses 6 declared prerequisites and contains 85 exact native proof lines.
Alpha v34 checked-use · first admitted v33 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
prime_field_inverse_exists Alpha theorem; checked-use authorized matrix_rank_bounded_prefix_value Alpha theorem; checked-use authorized PX0032 polynomial_quotient_length_exists PX0033 polynomial_quotient_length_bounds PX002E prime_field_polynomial_quotient_prefix_exists lt_of_lt_of_le Alpha theorem; checked-use authorizedDirect 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
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 (3)
01Fix variables and assumptionsL1–10
02Separate the logical casesL11–14
03Establish hiL15–24
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field inverse exists.
- L15
have hi : ∃ k. FpInv(p,x,k)Definitions: FpInv - L16
specialize prime_field_inverse_exists (p) - L17
specialize prime_field_inverse_exists (x) - L18
apply prime_field_inverse_exists - L19
exact hp - L20
specialize matrix_rank_bounded_prefix_value (bb) - L21
specialize matrix_rank_bounded_prefix_value (bc) - L22
specialize matrix_rank_bounded_prefix_value (S d) - L23
specialize matrix_rank_bounded_prefix_value (p) - L24
specialize matrix_rank_bounded_prefix_value (0)
04Use earlier factsL25–27
05Construct an explicit witnessL28–28
Supply the displayed value, then prove that it has the required property.
- L28
exists d
06Calculate and transport equalitiesL29–29
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L29
simp
07Use earlier factsL30–31
08Separate the logical casesL32–32
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L32
cases hi
09Establish hkL33–33
Establish this local claim before using it. It is not an additional assumption.
- L33
have hk : exists pfa_gap_division_total_scalar_bound. pfa_gap_division_total_scalar_bound + S (x1) = (p)
10Separate the logical casesL34–36
11Use earlier factsL37–37
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L37
exact hi_witness_right_right_left
12Establish hlengthL38–41
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply polynomial quotient length exists.
- L38
have hlength : exists q. (((((q)=0) /\ ((exists pfc_gap_division_total_lengthshort. pfc_gap_division_total_lengthshort+(L)=(d))))) \/ (((~((q)=0)) /\ (((q)+(d)=(L)))))) - L39
specialize polynomial_quotient_length_exists (L) - L40
specialize polynomial_quotient_length_exists (d) - L41
apply polynomial_quotient_length_exists
13Separate the logical casesL42–42
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L42
cases hlength
14Establish hboundsL43–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply polynomial quotient length bounds.
- L43
have hbounds : ((exists pfc_gap_division_total_q_bound. pfc_gap_division_total_q_bound+(x2)=(L)) /\ ((exists pfc_gap_division_total_cover. pfc_gap_division_total_cover+(L)=(x2+d)))) - L44
specialize polynomial_quotient_length_bounds (L) - L45
specialize polynomial_quotient_length_bounds (d) - L46
specialize polynomial_quotient_length_bounds (x2) - L47
apply polynomial_quotient_length_bounds - L48
exact hlength_witness
15Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
cases hbounds
16Establish hquotientL50–59
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply prime field polynomial quotient prefix exists.
- L50
have hquotient : ∃ qb. ∃ qc. FpPolynomialQuotientPrefix(p,x1,ab,ac,bb,bc,S d,qb,qc,x2)Definitions: FpPolynomialQuotientPrefix - L51
specialize prime_field_polynomial_quotient_prefix_exists (p) - L52
specialize prime_field_polynomial_quotient_prefix_exists (x1) - L53
specialize prime_field_polynomial_quotient_prefix_exists (ab) - L54
specialize prime_field_polynomial_quotient_prefix_exists (ac) - L55
specialize prime_field_polynomial_quotient_prefix_exists (bb) - L56
specialize prime_field_polynomial_quotient_prefix_exists (bc) - L57
specialize prime_field_polynomial_quotient_prefix_exists (S d) - L58
specialize prime_field_polynomial_quotient_prefix_exists (x2) - L59
apply prime_field_polynomial_quotient_prefix_exists
17Use earlier factsL60–61
18Fix variables and assumptionsL62–63
19Use earlier factsL64–71
20Separate the logical casesL72–73
21Construct an explicit witnessL74–78
22Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
split
23Use earlier factsL80–80
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
exact hb_right_right_witness_left
24Separate the logical casesL81–81
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L81
split
25Use earlier factsL82–82
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L82
exact hi_witness
26Separate the logical casesL83–83
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L83
split
Original exact command ledger · 85 lines
- 0001
intro p - 0002
intro ab - 0003
intro ac - 0004
intro L - 0005
intro bb - 0006
intro bc - 0007
intro d - 0008
intro hp - 0009
intro ha - 0010
intro hb - 0011
cases hb - 0012
cases hb_right - 0013
cases hb_right_right - 0014
cases hb_right_right_witness - 0015
have hi : exists k. (((~((x) = 0)) /\ ((((exists pfa_gap_division_total_inversemultiplicationleft. pfa_gap_division_total_inversemultiplicationleft + S (x) = (p)) /\ (((exists pfa_gap_division_total_inversemultiplicationright. pfa_gap_division_total_inversemultiplicationright + S (k) = (p)) /\ ((((exists pfa_gap_division_total_inversemultiplicationresultbound. pfa_gap_division_total_inversemultiplicationresultbound + S (1) = (p)) /\ ((exists pfa_offset_left_division_total_inversemultiplicationresultcongruence pfa_offset_right_division_total_inversemultiplicationresultcongruence. ((x) * (k)) + (p) * pfa_offset_left_division_total_inversemultiplicationresultcongruence = (1) + (p) * pfa_offset_right_division_total_inversemultiplicationresultcongruence)))))))))))) - 0016
specialize prime_field_inverse_exists (p) - 0017
specialize prime_field_inverse_exists (x) - 0018
apply prime_field_inverse_exists - 0019
exact hp - 0020
specialize matrix_rank_bounded_prefix_value (bb) - 0021
specialize matrix_rank_bounded_prefix_value (bc) - 0022
specialize matrix_rank_bounded_prefix_value (S d) - 0023
specialize matrix_rank_bounded_prefix_value (p) - 0024
specialize matrix_rank_bounded_prefix_value (0) - 0025
specialize matrix_rank_bounded_prefix_value (x) - 0026
apply matrix_rank_bounded_prefix_value - 0027
exact hb_right_left - 0028
exists d - 0029
simp - 0030
exact hb_right_right_witness_left - 0031
exact hb_right_right_witness_right - 0032
cases hi - 0033
have hk : exists pfa_gap_division_total_scalar_bound. pfa_gap_division_total_scalar_bound + S (x1) = (p) - 0034
cases hi_witness - 0035
cases hi_witness_right - 0036
cases hi_witness_right_right - 0037
exact hi_witness_right_right_left - 0038
have hlength : exists q. (((((q)=0) /\ ((exists pfc_gap_division_total_lengthshort. pfc_gap_division_total_lengthshort+(L)=(d))))) \/ (((~((q)=0)) /\ (((q)+(d)=(L)))))) - 0039
specialize polynomial_quotient_length_exists (L) - 0040
specialize polynomial_quotient_length_exists (d) - 0041
apply polynomial_quotient_length_exists - 0042
cases hlength - 0043
have hbounds : ((exists pfc_gap_division_total_q_bound. pfc_gap_division_total_q_bound+(x2)=(L)) /\ ((exists pfc_gap_division_total_cover. pfc_gap_division_total_cover+(L)=(x2+d)))) - 0044
specialize polynomial_quotient_length_bounds (L) - 0045
specialize polynomial_quotient_length_bounds (d) - 0046
specialize polynomial_quotient_length_bounds (x2) - 0047
apply polynomial_quotient_length_bounds - 0048
exact hlength_witness - 0049
cases hbounds - 0050
have hquotient : exists qb qc. (forall pfd_index_division_total_quotient. (exists pfa_gap_division_total_quotientbound. pfa_gap_division_total_quotientbound + S (pfd_index_division_total_quotient) = (x2)) -> exists pfd_value_division_total_quotient. ((((exists ff_h_pfp_division_total_quotiententry. ff_h_pfp_division_total_quotiententry + S (pfd_value_division_total_quotient) = S ((S (pfd_index_division_total_quotient)) * qc)) /\ exists ff_q_pfp_division_total_quotiententry. qb = ff_q_pfp_division_total_quotiententry * S ((S (pfd_index_division_total_quotient)) * qc) + (pfd_value_division_total_quotient))) /\ ((exists pfd_input_division_total_quotientstep pfd_previous_division_total_quotientstep pfd_difference_division_total_quotientstep. ((((exists ff_h_pfp_division_total_quotientstepinput. ff_h_pfp_division_total_quotientstepinput + S (pfd_input_division_total_quotientstep) = S ((S (pfd_index_division_total_quotient)) * ac)) /\ exists ff_q_pfp_division_total_quotientstepinput. ab = ff_q_pfp_division_total_quotientstepinput * S ((S (pfd_index_division_total_quotient)) * ac) + (pfd_input_division_total_quotientstep))) /\ (((exists pfc_terms_code_division_total_quotientstepprevious pfc_terms_scale_division_total_quotientstepprevious pfc_natural_sum_division_total_quotientstepprevious. ((forall pfc_index_division_total_quotientsteppreviousdiagonal. (exists pfa_gap_division_total_quotientsteppreviousdiagonalbound. pfa_gap_division_total_quotientsteppreviousdiagonalbound + S (pfc_index_division_total_quotientsteppreviousdiagonal) = (S (pfd_index_division_total_quotient))) -> exists pfc_value_division_total_quotientsteppreviousdiagonal. ((((exists ff_h_pfp_division_total_quotientsteppreviousdiagonalentry. ff_h_pfp_division_total_quotientsteppreviousdiagonalentry + S (pfc_value_division_total_quotientsteppreviousdiagonal) = S ((S (pfc_index_division_total_quotientsteppreviousdiagonal)) * pfc_terms_scale_division_total_quotientstepprevious)) /\ exists ff_q_pfp_division_total_quotientsteppreviousdiagonalentry. pfc_terms_code_division_total_quotientstepprevious = ff_q_pfp_division_total_quotientsteppreviousdiagonalentry * S ((S (pfc_index_division_total_quotientsteppreviousdiagonal)) * pfc_terms_scale_division_total_quotientstepprevious) + (pfc_value_division_total_quotientsteppreviousdiagonal))) /\ ((exists pfc_complement_division_total_quotientsteppreviousdiagonalterm pfc_left_division_total_quotientsteppreviousdiagonalterm pfc_right_division_total_quotientsteppreviousdiagonalterm. (((pfc_index_division_total_quotientsteppreviousdiagonal)+pfc_complement_division_total_quotientsteppreviousdiagonalterm=(pfd_index_division_total_quotient)) /\ ((((((exists pfa_gap_division_total_quotientsteppreviousdiagonaltermleftinside. pfa_gap_division_total_quotientsteppreviousdiagonaltermleftinside + S (pfc_index_division_total_quotientsteppreviousdiagonal) = (pfd_index_division_total_quotient)) /\ ((((exists ff_h_pfp_division_total_quotientsteppreviousdiagonaltermleftentry. ff_h_pfp_division_total_quotientsteppreviousdiagonaltermleftentry + S (pfc_left_division_total_quotientsteppreviousdiagonalterm) = S ((S (pfc_index_division_total_quotientsteppreviousdiagonal)) * qc)) /\ exists ff_q_pfp_division_total_quotientsteppreviousdiagonaltermleftentry. qb = ff_q_pfp_division_total_quotientsteppreviousdiagonaltermleftentry * S ((S (pfc_index_division_total_quotientsteppreviousdiagonal)) * qc) + (pfc_left_division_total_quotientsteppreviousdiagonalterm)))))) \/ (((exists pfc_gap_division_total_quotientsteppreviousdiagonaltermleftoutside. pfc_gap_division_total_quotientsteppreviousdiagonaltermleftoutside+(pfd_index_division_total_quotient)=(pfc_index_division_total_quotientsteppreviousdiagonal)) /\ (((pfc_left_division_total_quotientsteppreviousdiagonalterm)=0))))) /\ ((((((exists pfa_gap_division_total_quotientsteppreviousdiagonaltermrightinside. pfa_gap_division_total_quotientsteppreviousdiagonaltermrightinside + S (pfc_complement_division_total_quotientsteppreviousdiagonalterm) = (S d)) /\ ((((exists ff_h_pfp_division_total_quotientsteppreviousdiagonaltermrightentry. ff_h_pfp_division_total_quotientsteppreviousdiagonaltermrightentry + S (pfc_right_division_total_quotientsteppreviousdiagonalterm) = S ((S (pfc_complement_division_total_quotientsteppreviousdiagonalterm)) * bc)) /\ exists ff_q_pfp_division_total_quotientsteppreviousdiagonaltermrightentry. bb = ff_q_pfp_division_total_quotientsteppreviousdiagonaltermrightentry * S ((S (pfc_complement_division_total_quotientsteppreviousdiagonalterm)) * bc) + (pfc_right_division_total_quotientsteppreviousdiagonalterm)))))) \/ (((exists pfc_gap_division_total_quotientsteppreviousdiagonaltermrightoutside. pfc_gap_division_total_quotientsteppreviousdiagonaltermrightoutside+(S d)=(pfc_complement_division_total_quotientsteppreviousdiagonalterm)) /\ (((pfc_right_division_total_quotientsteppreviousdiagonalterm)=0))))) /\ (((pfc_value_division_total_quotientsteppreviousdiagonal)=pfc_left_division_total_quotientsteppreviousdiagonalterm*pfc_right_division_total_quotientsteppreviousdiagonalterm))))))))))) /\ (((exists fs_u_pfc_division_total_quotientstepprevioussum fs_v_pfc_division_total_quotientstepprevioussum. ((((exists fs_h_pfc_division_total_quotientstepprevioussum_body_start. fs_h_pfc_division_total_quotientstepprevioussum_body_start + S (0) = S ((S (0)) * fs_v_pfc_division_total_quotientstepprevioussum)) /\ exists fs_q_pfc_division_total_quotientstepprevioussum_body_start. fs_u_pfc_division_total_quotientstepprevioussum = fs_q_pfc_division_total_quotientstepprevioussum_body_start * S ((S (0)) * fs_v_pfc_division_total_quotientstepprevioussum) + (0))) /\ ((((exists fs_h_pfc_division_total_quotientstepprevioussum_body_terminal. fs_h_pfc_division_total_quotientstepprevioussum_body_terminal + S (pfc_natural_sum_division_total_quotientstepprevious) = S ((S (S (pfd_index_division_total_quotient))) * fs_v_pfc_division_total_quotientstepprevioussum)) /\ exists fs_q_pfc_division_total_quotientstepprevioussum_body_terminal. fs_u_pfc_division_total_quotientstepprevioussum = fs_q_pfc_division_total_quotientstepprevioussum_body_terminal * S ((S (S (pfd_index_division_total_quotient))) * fs_v_pfc_division_total_quotientstepprevioussum) + (pfc_natural_sum_division_total_quotientstepprevious))) /\ forall fs_i_pfc_division_total_quotientstepprevioussum_body_steps. (exists fs_lt_pfc_division_total_quotientstepprevioussum_body_steps_bound. fs_lt_pfc_division_total_quotientstepprevioussum_body_steps_bound + S fs_i_pfc_division_total_quotientstepprevioussum_body_steps = S (pfd_index_division_total_quotient)) -> exists fs_a_pfc_division_total_quotientstepprevioussum_body_steps fs_r_pfc_division_total_quotientstepprevioussum_body_steps fs_s_pfc_division_total_quotientstepprevioussum_body_steps. ((((exists fs_h_pfc_division_total_quotientstepprevioussum_body_steps_summand. fs_h_pfc_division_total_quotientstepprevioussum_body_steps_summand + S (fs_a_pfc_division_total_quotientstepprevioussum_body_steps) = S ((S (fs_i_pfc_division_total_quotientstepprevioussum_body_steps)) * pfc_terms_scale_division_total_quotientstepprevious)) /\ exists fs_q_pfc_division_total_quotientstepprevioussum_body_steps_summand. pfc_terms_code_division_total_quotientstepprevious = fs_q_pfc_division_total_quotientstepprevioussum_body_steps_summand * S ((S (fs_i_pfc_division_total_quotientstepprevioussum_body_steps)) * pfc_terms_scale_division_total_quotientstepprevious) + (fs_a_pfc_division_total_quotientstepprevioussum_body_steps))) /\ ((((exists fs_h_pfc_division_total_quotientstepprevioussum_body_steps_partial. fs_h_pfc_division_total_quotientstepprevioussum_body_steps_partial + S (fs_r_pfc_division_total_quotientstepprevioussum_body_steps) = S ((S (fs_i_pfc_division_total_quotientstepprevioussum_body_steps)) * fs_v_pfc_division_total_quotientstepprevioussum)) /\ exists fs_q_pfc_division_total_quotientstepprevioussum_body_steps_partial. fs_u_pfc_division_total_quotientstepprevioussum = fs_q_pfc_division_total_quotientstepprevioussum_body_steps_partial * S ((S (fs_i_pfc_division_total_quotientstepprevioussum_body_steps)) * fs_v_pfc_division_total_quotientstepprevioussum) + (fs_r_pfc_division_total_quotientstepprevioussum_body_steps))) /\ ((((exists fs_h_pfc_division_total_quotientstepprevioussum_body_steps_successor. fs_h_pfc_division_total_quotientstepprevioussum_body_steps_successor + S (fs_s_pfc_division_total_quotientstepprevioussum_body_steps) = S ((S (S fs_i_pfc_division_total_quotientstepprevioussum_body_steps)) * fs_v_pfc_division_total_quotientstepprevioussum)) /\ exists fs_q_pfc_division_total_quotientstepprevioussum_body_steps_successor. fs_u_pfc_division_total_quotientstepprevioussum = fs_q_pfc_division_total_quotientstepprevioussum_body_steps_successor * S ((S (S fs_i_pfc_division_total_quotientstepprevioussum_body_steps)) * fs_v_pfc_division_total_quotientstepprevioussum) + (fs_s_pfc_division_total_quotientstepprevioussum_body_steps))) /\ fs_s_pfc_division_total_quotientstepprevioussum_body_steps = fs_r_pfc_division_total_quotientstepprevioussum_body_steps + fs_a_pfc_division_total_quotientstepprevioussum_body_steps)))))) /\ ((((exists pfa_gap_division_total_quotientsteppreviousresiduebound. pfa_gap_division_total_quotientsteppreviousresiduebound + S (pfd_previous_division_total_quotientstep) = (p)) /\ ((exists pfa_offset_left_division_total_quotientsteppreviousresiduecongruence pfa_offset_right_division_total_quotientsteppreviousresiduecongruence. (pfc_natural_sum_division_total_quotientstepprevious) + (p) * pfa_offset_left_division_total_quotientsteppreviousresiduecongruence = (pfd_previous_division_total_quotientstep) + (p) * pfa_offset_right_division_total_quotientsteppreviousresiduecongruence))))))))) /\ (((((exists pfa_gap_division_total_quotientstepsubtractleft. pfa_gap_division_total_quotientstepsubtractleft + S (pfd_previous_division_total_quotientstep) = (p)) /\ (((exists pfa_gap_division_total_quotientstepsubtractright. pfa_gap_division_total_quotientstepsubtractright + S (pfd_difference_division_total_quotientstep) = (p)) /\ ((((exists pfa_gap_division_total_quotientstepsubtractresultbound. pfa_gap_division_total_quotientstepsubtractresultbound + S (pfd_input_division_total_quotientstep) = (p)) /\ ((exists pfa_offset_left_division_total_quotientstepsubtractresultcongruence pfa_offset_right_division_total_quotientstepsubtractresultcongruence. ((pfd_previous_division_total_quotientstep) + (pfd_difference_division_total_quotientstep)) + (p) * pfa_offset_left_division_total_quotientstepsubtractresultcongruence = (pfd_input_division_total_quotientstep) + (p) * pfa_offset_right_division_total_quotientstepsubtractresultcongruence))))))))) /\ ((((exists pfa_gap_division_total_quotientstepmultiplyleft. pfa_gap_division_total_quotientstepmultiplyleft + S (x1) = (p)) /\ (((exists pfa_gap_division_total_quotientstepmultiplyright. pfa_gap_division_total_quotientstepmultiplyright + S (pfd_difference_division_total_quotientstep) = (p)) /\ ((((exists pfa_gap_division_total_quotientstepmultiplyresultbound. pfa_gap_division_total_quotientstepmultiplyresultbound + S (pfd_value_division_total_quotient) = (p)) /\ ((exists pfa_offset_left_division_total_quotientstepmultiplyresultcongruence pfa_offset_right_division_total_quotientstepmultiplyresultcongruence. ((x1) * (pfd_difference_division_total_quotientstep)) + (p) * pfa_offset_left_division_total_quotientstepmultiplyresultcongruence = (pfd_value_division_total_quotient) + (p) * pfa_offset_right_division_total_quotientstepmultiplyresultcongruence))))))))))))))))))) - 0051
specialize prime_field_polynomial_quotient_prefix_exists (p) - 0052
specialize prime_field_polynomial_quotient_prefix_exists (x1) - 0053
specialize prime_field_polynomial_quotient_prefix_exists (ab) - 0054
specialize prime_field_polynomial_quotient_prefix_exists (ac) - 0055
specialize prime_field_polynomial_quotient_prefix_exists (bb) - 0056
specialize prime_field_polynomial_quotient_prefix_exists (bc) - 0057
specialize prime_field_polynomial_quotient_prefix_exists (S d) - 0058
specialize prime_field_polynomial_quotient_prefix_exists (x2) - 0059
apply prime_field_polynomial_quotient_prefix_exists - 0060
exact hp - 0061
exact hk - 0062
intro i - 0063
intro hindex - 0064
specialize ha (i) - 0065
apply ha - 0066
specialize lt_of_lt_of_le (i) - 0067
specialize lt_of_lt_of_le (x2) - 0068
specialize lt_of_lt_of_le (L) - 0069
apply lt_of_lt_of_le - 0070
exact hindex - 0071
exact hbounds_left - 0072
cases hquotient - 0073
cases hquotient_witness - 0074
exists x - 0075
exists x1 - 0076
exists x2 - 0077
exists x3 - 0078
exists x4 - 0079
split - 0080
exact hb_right_right_witness_left - 0081
split - 0082
exact hi_witness - 0083
split - 0084
exact hlength_witness - 0085
exact hquotient_witness_witness