PH0002

beta_horner_eval_exists

Every coded natural polynomial has an actual witnessed Horner evaluation.

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

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 original first-admission records.

Exact theorem in conservative defined notation

∀ b. ∀ c. ∀ t. ∀ l. ∃ n. Horner(b,c,t,l,n)

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

Definition DAG

Actual proof prerequisites

beta_prefix_horner_trace_existsbeta_at_exists · checked external prerequisite
Original expanded first-order statement
forall b c t l. exists n. (exists ff_u_ph_root_value ff_v_ph_root_value. ((((exists fs_h_ph_root_value_body_start. fs_h_ph_root_value_body_start + S (0) = S ((S (0)) * ff_v_ph_root_value)) /\ exists fs_q_ph_root_value_body_start. ff_u_ph_root_value = fs_q_ph_root_value_body_start * S ((S (0)) * ff_v_ph_root_value) + (0))) /\ ((((exists fs_h_ph_root_value_body_terminal. fs_h_ph_root_value_body_terminal + S (n) = S ((S (l)) * ff_v_ph_root_value)) /\ exists fs_q_ph_root_value_body_terminal. ff_u_ph_root_value = fs_q_ph_root_value_body_terminal * S ((S (l)) * ff_v_ph_root_value) + (n))) /\ forall ff_i_ph_root_value_body_steps. (exists ph_bound_root_value_body_steps. ph_bound_root_value_body_steps + S ff_i_ph_root_value_body_steps = l) -> exists ff_coefficient_ph_root_value_body_steps ff_previous_ph_root_value_body_steps ff_current_ph_root_value_body_steps. ((((exists fs_h_ph_root_value_body_steps_coefficient. fs_h_ph_root_value_body_steps_coefficient + S (ff_coefficient_ph_root_value_body_steps) = S ((S (ff_i_ph_root_value_body_steps)) * c)) /\ exists fs_q_ph_root_value_body_steps_coefficient. b = fs_q_ph_root_value_body_steps_coefficient * S ((S (ff_i_ph_root_value_body_steps)) * c) + (ff_coefficient_ph_root_value_body_steps))) /\ ((((exists fs_h_ph_root_value_body_steps_before. fs_h_ph_root_value_body_steps_before + S (ff_previous_ph_root_value_body_steps) = S ((S (ff_i_ph_root_value_body_steps)) * ff_v_ph_root_value)) /\ exists fs_q_ph_root_value_body_steps_before. ff_u_ph_root_value = fs_q_ph_root_value_body_steps_before * S ((S (ff_i_ph_root_value_body_steps)) * ff_v_ph_root_value) + (ff_previous_ph_root_value_body_steps))) /\ ((((exists fs_h_ph_root_value_body_steps_after. fs_h_ph_root_value_body_steps_after + S (ff_current_ph_root_value_body_steps) = S ((S (S ff_i_ph_root_value_body_steps)) * ff_v_ph_root_value)) /\ exists fs_q_ph_root_value_body_steps_after. ff_u_ph_root_value = fs_q_ph_root_value_body_steps_after * S ((S (S ff_i_ph_root_value_body_steps)) * ff_v_ph_root_value) + (ff_current_ph_root_value_body_steps))) /\ ff_current_ph_root_value_body_steps = ff_previous_ph_root_value_body_steps * t + ff_coefficient_ph_root_value_body_steps))))))

Complete unchanged native tactic proof

All 27 lines are the exact independently kernel-checked original script.

Read the argument

Proof checkpoints

27 script commands · 10 reading checkpoints · 2 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 (1)

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

01Fix variables and assumptionsL1–4

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

  1. L1
    intro b
  2. L2
    intro c
  3. L3
    intro t
  4. L4
    intro l
02Establish htraceL5–10

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

  1. L5
    have htrace : ∃ ff_u_ph_exists_trace. ∃ ff_v_ph_exists_trace. Beta(ff_u_ph_exists_trace,ff_v_ph_exists_trace,0,0) ∧ (∀ x. Lt(x,l) → ∃ y. ∃ z. ∃ n. Beta(b,c,x,y) ∧ (Beta(ff_u_ph_exists_trace,ff_v_ph_exists_trace,x,z) ∧ (Beta(ff_u_ph_exists_trace,ff_v_ph_exists_trace,S x,n) ∧ n = z · t + y)))Definitions: BetaLtOriginal native command in the exact edition
  2. L6
    specialize beta_prefix_horner_trace_exists b
  3. L7
    specialize beta_prefix_horner_trace_exists c
  4. L8
    specialize beta_prefix_horner_trace_exists t
  5. L9
    specialize beta_prefix_horner_trace_exists l
  6. L10
    exact beta_prefix_horner_trace_exists
03Separate the logical casesL11–13

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

  1. L11
    cases htrace
  2. L12
    cases htrace_witness
  3. L13
    cases htrace_witness_witness
04Establish hterminalL14–18

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

  1. L14
    have hterminal : exists n. ((exists fs_h_sum_terminal. fs_h_sum_terminal + S (n) = S ((S (l)) * x1)) /\ exists fs_q_sum_terminal. x = fs_q_sum_terminal * S ((S (l)) * x1) + (n))
  2. L15
    specialize beta_at_exists x
  3. L16
    specialize beta_at_exists x1
  4. L17
    specialize beta_at_exists l
  5. L18
    exact beta_at_exists
05Separate the logical casesL19–19

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

  1. L19
    cases hterminal
06Construct an explicit witnessL20–22

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

  1. L20
    exists x2
  2. L21
    exists x
  3. L22
    exists x1
07Separate the logical casesL23–23

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

  1. L23
    split
08Use earlier factsL24–24

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

  1. L24
    exact htrace_witness_witness_left
09Separate the logical casesL25–25

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

  1. L25
    split
10Use earlier factsL26–27

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

  1. L26
    exact hterminal_witness
  2. L27
    exact htrace_witness_witness_right

Library-wide reading audit

Original defined command ledger · 27 lines
  1. 0001intro b
  2. 0002intro c
  3. 0003intro t
  4. 0004intro l
  5. 0005have htrace : exists ff_u_ph_exists_trace ff_v_ph_exists_trace. ((((exists fs_h_ph_exists_trace_start. fs_h_ph_exists_trace_start + S (0) = S ((S (0)) * ff_v_ph_exists_trace)) /\ exists fs_q_ph_exists_trace_start. ff_u_ph_exists_trace = fs_q_ph_exists_trace_start * S ((S (0)) * ff_v_ph_exists_trace) + (0))) /\ forall ff_i_ph_exists_trace_steps. (exists ph_bound_exists_trace_steps. ph_bound_exists_trace_steps + S ff_i_ph_exists_trace_steps = l) -> exists ff_coefficient_ph_exists_trace_steps ff_previous_ph_exists_trace_steps ff_current_ph_exists_trace_steps. ((((exists fs_h_ph_exists_trace_steps_coefficient. fs_h_ph_exists_trace_steps_coefficient + S (ff_coefficient_ph_exists_trace_steps) = S ((S (ff_i_ph_exists_trace_steps)) * c)) /\ exists fs_q_ph_exists_trace_steps_coefficient. b = fs_q_ph_exists_trace_steps_coefficient * S ((S (ff_i_ph_exists_trace_steps)) * c) + (ff_coefficient_ph_exists_trace_steps))) /\ ((((exists fs_h_ph_exists_trace_steps_before. fs_h_ph_exists_trace_steps_before + S (ff_previous_ph_exists_trace_steps) = S ((S (ff_i_ph_exists_trace_steps)) * ff_v_ph_exists_trace)) /\ exists fs_q_ph_exists_trace_steps_before. ff_u_ph_exists_trace = fs_q_ph_exists_trace_steps_before * S ((S (ff_i_ph_exists_trace_steps)) * ff_v_ph_exists_trace) + (ff_previous_ph_exists_trace_steps))) /\ ((((exists fs_h_ph_exists_trace_steps_after. fs_h_ph_exists_trace_steps_after + S (ff_current_ph_exists_trace_steps) = S ((S (S ff_i_ph_exists_trace_steps)) * ff_v_ph_exists_trace)) /\ exists fs_q_ph_exists_trace_steps_after. ff_u_ph_exists_trace = fs_q_ph_exists_trace_steps_after * S ((S (S ff_i_ph_exists_trace_steps)) * ff_v_ph_exists_trace) + (ff_current_ph_exists_trace_steps))) /\ ff_current_ph_exists_trace_steps = ff_previous_ph_exists_trace_steps * t + ff_coefficient_ph_exists_trace_steps))))
  6. 0006specialize beta_prefix_horner_trace_exists b
  7. 0007specialize beta_prefix_horner_trace_exists c
  8. 0008specialize beta_prefix_horner_trace_exists t
  9. 0009specialize beta_prefix_horner_trace_exists l
  10. 0010exact beta_prefix_horner_trace_exists
  11. 0011cases htrace
  12. 0012cases htrace_witness
  13. 0013cases htrace_witness_witness
  14. 0014have hterminal : exists n. ((exists fs_h_sum_terminal. fs_h_sum_terminal + S (n) = S ((S (l)) * x1)) /\ exists fs_q_sum_terminal. x = fs_q_sum_terminal * S ((S (l)) * x1) + (n))
  15. 0015specialize beta_at_exists x
  16. 0016specialize beta_at_exists x1
  17. 0017specialize beta_at_exists l
  18. 0018exact beta_at_exists
  19. 0019cases hterminal
  20. 0020exists x2
  21. 0021exists x
  22. 0022exists x1
  23. 0023split
  24. 0024exact htrace_witness_witness_left
  25. 0025split
  26. 0026exact hterminal_witness
  27. 0027exact htrace_witness_witness_right