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 db dc ab ac L. (((forall fom_index_pfp_empty_divisor_canonical. (exists fom_gap_pfp_empty_divisor_canonical_index_bound. fom_gap_pfp_empty_divisor_canonical_index_bound + S (fom_index_pfp_empty_divisor_canonical) = L) -> exists fom_value_pfp_empty_divisor_canonical. ((((exists fom_beta_height_pfp_empty_divisor_canonical_entry. fom_beta_height_pfp_empty_divisor_canonical_entry + S (fom_value_pfp_empty_divisor_canonical) = S ((S (fom_index_pfp_empty_divisor_canonical)) * ac)) /\ exists fom_beta_quotient_pfp_empty_divisor_canonical_entry. ab = fom_beta_quotient_pfp_empty_divisor_canonical_entry * S ((S (fom_index_pfp_empty_divisor_canonical)) * ac) + (fom_value_pfp_empty_divisor_canonical))) /\ (exists fom_gap_pfp_empty_divisor_canonical_value_bound. fom_gap_pfp_empty_divisor_canonical_value_bound + S (fom_value_pfp_empty_divisor_canonical) = p))) /\ ((exists pfgu_qb_empty_divisor pfgu_qc_empty_divisor pfgu_Q_empty_divisor pfgu_pb_empty_divisor pfgu_pc_empty_divisor pfgu_P_empty_divisor. ((((forall fom_index_pfp_empty_divisor_productleft. (exists fom_gap_pfp_empty_divisor_productleft_index_bound. fom_gap_pfp_empty_divisor_productleft_index_bound + S (fom_index_pfp_empty_divisor_productleft) = pfgu_Q_empty_divisor) -> exists fom_value_pfp_empty_divisor_productleft. ((((exists fom_beta_height_pfp_empty_divisor_productleft_entry. fom_beta_height_pfp_empty_divisor_productleft_entry + S (fom_value_pfp_empty_divisor_productleft) = S ((S (fom_index_pfp_empty_divisor_productleft)) * pfgu_qc_empty_divisor)) /\ exists fom_beta_quotient_pfp_empty_divisor_productleft_entry. pfgu_qb_empty_divisor = fom_beta_quotient_pfp_empty_divisor_productleft_entry * S ((S (fom_index_pfp_empty_divisor_productleft)) * pfgu_qc_empty_divisor) + (fom_value_pfp_empty_divisor_productleft))) /\ (exists fom_gap_pfp_empty_divisor_productleft_value_bound. fom_gap_pfp_empty_divisor_productleft_value_bound + S (fom_value_pfp_empty_divisor_productleft) = p))) /\ (((forall fom_index_pfp_empty_divisor_productright. (exists fom_gap_pfp_empty_divisor_productright_index_bound. fom_gap_pfp_empty_divisor_productright_index_bound + S (fom_index_pfp_empty_divisor_productright) = 0) -> exists fom_value_pfp_empty_divisor_productright. ((((exists fom_beta_height_pfp_empty_divisor_productright_entry. fom_beta_height_pfp_empty_divisor_productright_entry + S (fom_value_pfp_empty_divisor_productright) = S ((S (fom_index_pfp_empty_divisor_productright)) * dc)) /\ exists fom_beta_quotient_pfp_empty_divisor_productright_entry. db = fom_beta_quotient_pfp_empty_divisor_productright_entry * S ((S (fom_index_pfp_empty_divisor_productright)) * dc) + (fom_value_pfp_empty_divisor_productright))) /\ (exists fom_gap_pfp_empty_divisor_productright_value_bound. fom_gap_pfp_empty_divisor_productright_value_bound + S (fom_value_pfp_empty_divisor_productright) = p))) /\ (((((((pfgu_Q_empty_divisor)=0 \/ (0)=0) /\ (((pfgu_P_empty_divisor)=0)))) \/ (((~((pfgu_Q_empty_divisor)=0)) /\ (((~((0)=0)) /\ (((pfgu_Q_empty_divisor)+(0)=S (pfgu_P_empty_divisor)))))))) /\ ((forall pfc_index_empty_divisor_productcoefficients. (exists pfa_gap_empty_divisor_productcoefficientsbound. pfa_gap_empty_divisor_productcoefficientsbound + S (pfc_index_empty_divisor_productcoefficients) = (pfgu_P_empty_divisor)) -> exists pfc_value_empty_divisor_productcoefficients. ((((exists ff_h_pfp_empty_divisor_productcoefficientsentry. ff_h_pfp_empty_divisor_productcoefficientsentry + S (pfc_value_empty_divisor_productcoefficients) = S ((S (pfc_index_empty_divisor_productcoefficients)) * pfgu_pc_empty_divisor)) /\ exists ff_q_pfp_empty_divisor_productcoefficientsentry. pfgu_pb_empty_divisor = ff_q_pfp_empty_divisor_productcoefficientsentry * S ((S (pfc_index_empty_divisor_productcoefficients)) * pfgu_pc_empty_divisor) + (pfc_value_empty_divisor_productcoefficients))) /\ ((exists pfc_terms_code_empty_divisor_productcoefficientscoefficient pfc_terms_scale_empty_divisor_productcoefficientscoefficient pfc_natural_sum_empty_divisor_productcoefficientscoefficient. ((forall pfc_index_empty_divisor_productcoefficientscoefficientdiagonal. (exists pfa_gap_empty_divisor_productcoefficientscoefficientdiagonalbound. pfa_gap_empty_divisor_productcoefficientscoefficientdiagonalbound + S (pfc_index_empty_divisor_productcoefficientscoefficientdiagonal) = (S (pfc_index_empty_divisor_productcoefficients))) -> exists pfc_value_empty_divisor_productcoefficientscoefficientdiagonal. ((((exists ff_h_pfp_empty_divisor_productcoefficientscoefficientdiagonalentry. ff_h_pfp_empty_divisor_productcoefficientscoefficientdiagonalentry + S (pfc_value_empty_divisor_productcoefficientscoefficientdiagonal) = S ((S (pfc_index_empty_divisor_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_empty_divisor_productcoefficientscoefficient)) /\ exists ff_q_pfp_empty_divisor_productcoefficientscoefficientdiagonalentry. pfc_terms_code_empty_divisor_productcoefficientscoefficient = ff_q_pfp_empty_divisor_productcoefficientscoefficientdiagonalentry * S ((S (pfc_index_empty_divisor_productcoefficientscoefficientdiagonal)) * pfc_terms_scale_empty_divisor_productcoefficientscoefficient) + (pfc_value_empty_divisor_productcoefficientscoefficientdiagonal))) /\ ((exists pfc_complement_empty_divisor_productcoefficientscoefficientdiagonalterm pfc_left_empty_divisor_productcoefficientscoefficientdiagonalterm pfc_right_empty_divisor_productcoefficientscoefficientdiagonalterm. (((pfc_index_empty_divisor_productcoefficientscoefficientdiagonal)+pfc_complement_empty_divisor_productcoefficientscoefficientdiagonalterm=(pfc_index_empty_divisor_productcoefficients)) /\ ((((((exists pfa_gap_empty_divisor_productcoefficientscoefficientdiagonaltermleftinside. pfa_gap_empty_divisor_productcoefficientscoefficientdiagonaltermleftinside + S (pfc_index_empty_divisor_productcoefficientscoefficientdiagonal) = (pfgu_Q_empty_divisor)) /\ ((((exists ff_h_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermleftentry. ff_h_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermleftentry + S (pfc_left_empty_divisor_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_index_empty_divisor_productcoefficientscoefficientdiagonal)) * pfgu_qc_empty_divisor)) /\ exists ff_q_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermleftentry. pfgu_qb_empty_divisor = ff_q_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermleftentry * S ((S (pfc_index_empty_divisor_productcoefficientscoefficientdiagonal)) * pfgu_qc_empty_divisor) + (pfc_left_empty_divisor_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_empty_divisor_productcoefficientscoefficientdiagonaltermleftoutside. pfc_gap_empty_divisor_productcoefficientscoefficientdiagonaltermleftoutside+(pfgu_Q_empty_divisor)=(pfc_index_empty_divisor_productcoefficientscoefficientdiagonal)) /\ (((pfc_left_empty_divisor_productcoefficientscoefficientdiagonalterm)=0))))) /\ ((((((exists pfa_gap_empty_divisor_productcoefficientscoefficientdiagonaltermrightinside. pfa_gap_empty_divisor_productcoefficientscoefficientdiagonaltermrightinside + S (pfc_complement_empty_divisor_productcoefficientscoefficientdiagonalterm) = (0)) /\ ((((exists ff_h_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermrightentry. ff_h_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermrightentry + S (pfc_right_empty_divisor_productcoefficientscoefficientdiagonalterm) = S ((S (pfc_complement_empty_divisor_productcoefficientscoefficientdiagonalterm)) * dc)) /\ exists ff_q_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermrightentry. db = ff_q_pfp_empty_divisor_productcoefficientscoefficientdiagonaltermrightentry * S ((S (pfc_complement_empty_divisor_productcoefficientscoefficientdiagonalterm)) * dc) + (pfc_right_empty_divisor_productcoefficientscoefficientdiagonalterm)))))) \/ (((exists pfc_gap_empty_divisor_productcoefficientscoefficientdiagonaltermrightoutside. pfc_gap_empty_divisor_productcoefficientscoefficientdiagonaltermrightoutside+(0)=(pfc_complement_empty_divisor_productcoefficientscoefficientdiagonalterm)) /\ (((pfc_right_empty_divisor_productcoefficientscoefficientdiagonalterm)=0))))) /\ (((pfc_value_empty_divisor_productcoefficientscoefficientdiagonal)=pfc_left_empty_divisor_productcoefficientscoefficientdiagonalterm*pfc_right_empty_divisor_productcoefficientscoefficientdiagonalterm))))))))))) /\ (((exists fs_u_pfc_empty_divisor_productcoefficientscoefficientsum fs_v_pfc_empty_divisor_productcoefficientscoefficientsum. ((((exists fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_start. fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_start + S (0) = S ((S (0)) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_start. fs_u_pfc_empty_divisor_productcoefficientscoefficientsum = fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_start * S ((S (0)) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum) + (0))) /\ ((((exists fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_terminal. fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_terminal + S (pfc_natural_sum_empty_divisor_productcoefficientscoefficient) = S ((S (S (pfc_index_empty_divisor_productcoefficients))) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_terminal. fs_u_pfc_empty_divisor_productcoefficientscoefficientsum = fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_terminal * S ((S (S (pfc_index_empty_divisor_productcoefficients))) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum) + (pfc_natural_sum_empty_divisor_productcoefficientscoefficient))) /\ forall fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps. (exists fs_lt_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_bound. fs_lt_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_bound + S fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps = S (pfc_index_empty_divisor_productcoefficients)) -> exists fs_a_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps fs_r_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps fs_s_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps. ((((exists fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_summand. fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_summand + S (fs_a_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_empty_divisor_productcoefficientscoefficient)) /\ exists fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_summand. pfc_terms_code_empty_divisor_productcoefficientscoefficient = fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_summand * S ((S (fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)) * pfc_terms_scale_empty_divisor_productcoefficientscoefficient) + (fs_a_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_partial. fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_partial + S (fs_r_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps) = S ((S (fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_partial. fs_u_pfc_empty_divisor_productcoefficientscoefficientsum = fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_partial * S ((S (fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum) + (fs_r_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps))) /\ ((((exists fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_successor. fs_h_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_successor + S (fs_s_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps) = S ((S (S fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum)) /\ exists fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_successor. fs_u_pfc_empty_divisor_productcoefficientscoefficientsum = fs_q_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps_successor * S ((S (S fs_i_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)) * fs_v_pfc_empty_divisor_productcoefficientscoefficientsum) + (fs_s_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps))) /\ fs_s_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps = fs_r_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps + fs_a_pfc_empty_divisor_productcoefficientscoefficientsum_body_steps)))))) /\ ((((exists pfa_gap_empty_divisor_productcoefficientscoefficientresiduebound. pfa_gap_empty_divisor_productcoefficientscoefficientresiduebound + S (pfc_value_empty_divisor_productcoefficients) = (p)) /\ ((exists pfa_offset_left_empty_divisor_productcoefficientscoefficientresiduecongruence pfa_offset_right_empty_divisor_productcoefficientscoefficientresiduecongruence. (pfc_natural_sum_empty_divisor_productcoefficientscoefficient) + (p) * pfa_offset_left_empty_divisor_productcoefficientscoefficientresiduecongruence = (pfc_value_empty_divisor_productcoefficients) + (p) * pfa_offset_right_empty_divisor_productcoefficientscoefficientresiduecongruence))))))))))))))))))) /\ ((forall pfrep_power_empty_divisor_target pfrep_left_empty_divisor_target pfrep_right_empty_divisor_target. ((exists pfrep_position_empty_divisor_targetfirst. ((pfrep_position_empty_divisor_targetfirst+S (pfrep_power_empty_divisor_target)=(pfgu_P_empty_divisor)) /\ ((((exists ff_h_pfp_empty_divisor_targetfirstentry. ff_h_pfp_empty_divisor_targetfirstentry + S (pfrep_left_empty_divisor_target) = S ((S (pfrep_position_empty_divisor_targetfirst)) * pfgu_pc_empty_divisor)) /\ exists ff_q_pfp_empty_divisor_targetfirstentry. pfgu_pb_empty_divisor = ff_q_pfp_empty_divisor_targetfirstentry * S ((S (pfrep_position_empty_divisor_targetfirst)) * pfgu_pc_empty_divisor) + (pfrep_left_empty_divisor_target)))))) \/ (((exists pfrep_gap_empty_divisor_targetfirstoutside. pfrep_gap_empty_divisor_targetfirstoutside+(pfgu_P_empty_divisor)=(pfrep_power_empty_divisor_target)) /\ (((pfrep_left_empty_divisor_target)=0))))) -> ((exists pfrep_position_empty_divisor_targetsecond. ((pfrep_position_empty_divisor_targetsecond+S (pfrep_power_empty_divisor_target)=(L)) /\ ((((exists ff_h_pfp_empty_divisor_targetsecondentry. ff_h_pfp_empty_divisor_targetsecondentry + S (pfrep_right_empty_divisor_target) = S ((S (pfrep_position_empty_divisor_targetsecond)) * ac)) /\ exists ff_q_pfp_empty_divisor_targetsecondentry. ab = ff_q_pfp_empty_divisor_targetsecondentry * S ((S (pfrep_position_empty_divisor_targetsecond)) * ac) + (pfrep_right_empty_divisor_target)))))) \/ (((exists pfrep_gap_empty_divisor_targetsecondoutside. pfrep_gap_empty_divisor_targetsecondoutside+(L)=(pfrep_power_empty_divisor_target)) /\ (((pfrep_right_empty_divisor_target)=0))))) -> pfrep_left_empty_divisor_target=pfrep_right_empty_divisor_target))))))) -> (forall pfrep_power_empty_divisor_result pfrep_left_empty_divisor_result pfrep_right_empty_divisor_result. ((exists pfrep_position_empty_divisor_resultfirst. ((pfrep_position_empty_divisor_resultfirst+S (pfrep_power_empty_divisor_result)=(L)) /\ ((((exists ff_h_pfp_empty_divisor_resultfirstentry. ff_h_pfp_empty_divisor_resultfirstentry + S (pfrep_left_empty_divisor_result) = S ((S (pfrep_position_empty_divisor_resultfirst)) * ac)) /\ exists ff_q_pfp_empty_divisor_resultfirstentry. ab = ff_q_pfp_empty_divisor_resultfirstentry * S ((S (pfrep_position_empty_divisor_resultfirst)) * ac) + (pfrep_left_empty_divisor_result)))))) \/ (((exists pfrep_gap_empty_divisor_resultfirstoutside. pfrep_gap_empty_divisor_resultfirstoutside+(L)=(pfrep_power_empty_divisor_result)) /\ (((pfrep_left_empty_divisor_result)=0))))) -> ((exists pfrep_position_empty_divisor_resultsecond. ((pfrep_position_empty_divisor_resultsecond+S (pfrep_power_empty_divisor_result)=(0)) /\ ((((exists ff_h_pfp_empty_divisor_resultsecondentry. ff_h_pfp_empty_divisor_resultsecondentry + S (pfrep_right_empty_divisor_result) = S ((S (pfrep_position_empty_divisor_resultsecond)) * dc)) /\ exists ff_q_pfp_empty_divisor_resultsecondentry. db = ff_q_pfp_empty_divisor_resultsecondentry * S ((S (pfrep_position_empty_divisor_resultsecond)) * dc) + (pfrep_right_empty_divisor_result)))))) \/ (((exists pfrep_gap_empty_divisor_resultsecondoutside. pfrep_gap_empty_divisor_resultsecondoutside+(0)=(pfrep_power_empty_divisor_result)) /\ (((pfrep_right_empty_divisor_result)=0))))) -> pfrep_left_empty_divisor_result=pfrep_right_empty_divisor_result)Constructive proof overview
Generated structural guide
An empty right divisor has only formally zero multiples, at any target representation length. The actual product length is zero; no zero-degree assertion or prime hypothesis is used.
The unchanged tactic script uses 5 declared prerequisites and contains 66 exact native proof lines.
Alpha v34 checked-use · first admitted v34 · independently kernel and Lean verified; not Stable
Proof neighborhood
Direct dependencies
prime_field_polynomial_equivalent_transitive Alpha theorem; checked-use authorized prime_field_polynomial_equivalent_symmetric Alpha theorem; checked-use authorized prime_field_polynomial_equal_implies_equivalent Alpha theorem; checked-use authorized lt_not_le Alpha theorem; checked-use authorized zero_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.
01Fix variables and assumptionsL1–7
02Separate the logical casesL8–15
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L8
cases hrd - L9
cases hrd_right - L10
cases hrd_right_witness - L11
cases hrd_right_witness_witness - L12
cases hrd_right_witness_witness_witness - L13
cases hrd_right_witness_witness_witness_witness - L14
cases hrd_right_witness_witness_witness_witness_witness - L15
cases hrd_right_witness_witness_witness_witness_witness_witness
03Establish hlengthL16–16
Establish this local claim before using it. It is not an additional assumption.
- L16
have hlength : ((((x2)=0 \/ (0)=0) /\ (((x5)=0)))) \/ (((~((x2)=0)) /\ (((~((0)=0)) /\ (((x2)+(0)=S (x5)))))))
04Separate the logical casesL17–19
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
05Use earlier factsL20–20
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L20
exact hrd_right_witness_witness_witness_witness_witness_witness_left_right_right_left
06Separate the logical casesL21–22
07Use earlier factsL23–32
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L23
specialize prime_field_polynomial_equivalent_transitive (ab) - L24
specialize prime_field_polynomial_equivalent_transitive (ac) - L25
specialize prime_field_polynomial_equivalent_transitive (L) - L26
specialize prime_field_polynomial_equivalent_transitive (x3) - L27
specialize prime_field_polynomial_equivalent_transitive (x4) - L28
specialize prime_field_polynomial_equivalent_transitive (0) - L29
specialize prime_field_polynomial_equivalent_transitive (db) - L30
specialize prime_field_polynomial_equivalent_transitive (dc) - L31
specialize prime_field_polynomial_equivalent_transitive (0) - L32
apply prime_field_polynomial_equivalent_transitive
08Use earlier factsL33–39
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L33
specialize prime_field_polynomial_equivalent_symmetric (x3) - L34
specialize prime_field_polynomial_equivalent_symmetric (x4) - L35
specialize prime_field_polynomial_equivalent_symmetric (0) - L36
specialize prime_field_polynomial_equivalent_symmetric (ab) - L37
specialize prime_field_polynomial_equivalent_symmetric (ac) - L38
specialize prime_field_polynomial_equivalent_symmetric (L) - L39
apply prime_field_polynomial_equivalent_symmetric
09Establish hcopyL40–49
Establish this local claim before using it. It is not an additional assumption.
- L40
have hcopy : PolynomialEquivalent(x3,x4,x5,ab,ac,L)Definitions: PolynomialEquivalent - L41
exact hrd_right_witness_witness_witness_witness_witness_witness_right - L42
rewrite hlength_left_right at hcopy - L43
rewrite hlength_left_right at hcopy - L44
exact hcopy - L45
specialize prime_field_polynomial_equal_implies_equivalent (x3) - L46
specialize prime_field_polynomial_equal_implies_equivalent (x4) - L47
specialize prime_field_polynomial_equal_implies_equivalent (db) - L48
specialize prime_field_polynomial_equal_implies_equivalent (dc) - L49
specialize prime_field_polynomial_equal_implies_equivalent (0)
10Use earlier factsL50–50
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L50
apply prime_field_polynomial_equal_implies_equivalent
11Fix variables and assumptionsL51–54
12Separate the logical casesL55–55
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L55
exfalso
13Use earlier factsL56–61
14Separate the logical casesL62–64
15Use earlier factsL65–65
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L65
apply hlength_right_right_left
16Calculate and transport equalitiesL66–66
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L66
refl
Original exact command ledger · 66 lines
- 0001
intro p - 0002
intro db - 0003
intro dc - 0004
intro ab - 0005
intro ac - 0006
intro L - 0007
intro hrd - 0008
cases hrd - 0009
cases hrd_right - 0010
cases hrd_right_witness - 0011
cases hrd_right_witness_witness - 0012
cases hrd_right_witness_witness_witness - 0013
cases hrd_right_witness_witness_witness_witness - 0014
cases hrd_right_witness_witness_witness_witness_witness - 0015
cases hrd_right_witness_witness_witness_witness_witness_witness - 0016
have hlength : ((((x2)=0 \/ (0)=0) /\ (((x5)=0)))) \/ (((~((x2)=0)) /\ (((~((0)=0)) /\ (((x2)+(0)=S (x5))))))) - 0017
cases hrd_right_witness_witness_witness_witness_witness_witness_left - 0018
cases hrd_right_witness_witness_witness_witness_witness_witness_left_right - 0019
cases hrd_right_witness_witness_witness_witness_witness_witness_left_right_right - 0020
exact hrd_right_witness_witness_witness_witness_witness_witness_left_right_right_left - 0021
cases hlength - 0022
cases hlength_left - 0023
specialize prime_field_polynomial_equivalent_transitive (ab) - 0024
specialize prime_field_polynomial_equivalent_transitive (ac) - 0025
specialize prime_field_polynomial_equivalent_transitive (L) - 0026
specialize prime_field_polynomial_equivalent_transitive (x3) - 0027
specialize prime_field_polynomial_equivalent_transitive (x4) - 0028
specialize prime_field_polynomial_equivalent_transitive (0) - 0029
specialize prime_field_polynomial_equivalent_transitive (db) - 0030
specialize prime_field_polynomial_equivalent_transitive (dc) - 0031
specialize prime_field_polynomial_equivalent_transitive (0) - 0032
apply prime_field_polynomial_equivalent_transitive - 0033
specialize prime_field_polynomial_equivalent_symmetric (x3) - 0034
specialize prime_field_polynomial_equivalent_symmetric (x4) - 0035
specialize prime_field_polynomial_equivalent_symmetric (0) - 0036
specialize prime_field_polynomial_equivalent_symmetric (ab) - 0037
specialize prime_field_polynomial_equivalent_symmetric (ac) - 0038
specialize prime_field_polynomial_equivalent_symmetric (L) - 0039
apply prime_field_polynomial_equivalent_symmetric - 0040
have hcopy : forall pfrep_power_empty_copy pfrep_left_empty_copy pfrep_right_empty_copy. ((exists pfrep_position_empty_copyfirst. ((pfrep_position_empty_copyfirst+S (pfrep_power_empty_copy)=(x5)) /\ ((((exists ff_h_pfp_empty_copyfirstentry. ff_h_pfp_empty_copyfirstentry + S (pfrep_left_empty_copy) = S ((S (pfrep_position_empty_copyfirst)) * x4)) /\ exists ff_q_pfp_empty_copyfirstentry. x3 = ff_q_pfp_empty_copyfirstentry * S ((S (pfrep_position_empty_copyfirst)) * x4) + (pfrep_left_empty_copy)))))) \/ (((exists pfrep_gap_empty_copyfirstoutside. pfrep_gap_empty_copyfirstoutside+(x5)=(pfrep_power_empty_copy)) /\ (((pfrep_left_empty_copy)=0))))) -> ((exists pfrep_position_empty_copysecond. ((pfrep_position_empty_copysecond+S (pfrep_power_empty_copy)=(L)) /\ ((((exists ff_h_pfp_empty_copysecondentry. ff_h_pfp_empty_copysecondentry + S (pfrep_right_empty_copy) = S ((S (pfrep_position_empty_copysecond)) * ac)) /\ exists ff_q_pfp_empty_copysecondentry. ab = ff_q_pfp_empty_copysecondentry * S ((S (pfrep_position_empty_copysecond)) * ac) + (pfrep_right_empty_copy)))))) \/ (((exists pfrep_gap_empty_copysecondoutside. pfrep_gap_empty_copysecondoutside+(L)=(pfrep_power_empty_copy)) /\ (((pfrep_right_empty_copy)=0))))) -> pfrep_left_empty_copy=pfrep_right_empty_copy - 0041
exact hrd_right_witness_witness_witness_witness_witness_witness_right - 0042
rewrite hlength_left_right at hcopy - 0043
rewrite hlength_left_right at hcopy - 0044
exact hcopy - 0045
specialize prime_field_polynomial_equal_implies_equivalent (x3) - 0046
specialize prime_field_polynomial_equal_implies_equivalent (x4) - 0047
specialize prime_field_polynomial_equal_implies_equivalent (db) - 0048
specialize prime_field_polynomial_equal_implies_equivalent (dc) - 0049
specialize prime_field_polynomial_equal_implies_equivalent (0) - 0050
apply prime_field_polynomial_equal_implies_equivalent - 0051
intro i - 0052
intro a - 0053
intro hi - 0054
intro ha - 0055
exfalso - 0056
specialize lt_not_le (i) - 0057
specialize lt_not_le (0) - 0058
apply lt_not_le - 0059
exact hi - 0060
specialize zero_le (i) - 0061
apply zero_le - 0062
cases hlength_right - 0063
cases hlength_right_right - 0064
exfalso - 0065
apply hlength_right_right_left - 0066
refl