Exact expanded PA statement
forall mb mc sb sc l. exists tb tc. (forall fpmp_index_recode_exists_result fpmp_left_recode_exists_result fpmp_right_recode_exists_result fpmp_target_recode_exists_result. (exists fpmp_gap_recode_exists_result. fpmp_gap_recode_exists_result + S fpmp_index_recode_exists_result = l) -> (((exists ff_h_fpmp_recode_exists_result_left. ff_h_fpmp_recode_exists_result_left + S (fpmp_left_recode_exists_result) = S ((S (fpmp_index_recode_exists_result)) * mc)) /\ exists ff_q_fpmp_recode_exists_result_left. mb = ff_q_fpmp_recode_exists_result_left * S ((S (fpmp_index_recode_exists_result)) * mc) + (fpmp_left_recode_exists_result))) -> (((exists ff_h_fpmp_recode_exists_result_right. ff_h_fpmp_recode_exists_result_right + S (fpmp_right_recode_exists_result) = S ((S (fpmp_index_recode_exists_result)) * sc)) /\ exists ff_q_fpmp_recode_exists_result_right. sb = ff_q_fpmp_recode_exists_result_right * S ((S (fpmp_index_recode_exists_result)) * sc) + (fpmp_right_recode_exists_result))) -> (((exists ff_h_fpmp_recode_exists_result_target. ff_h_fpmp_recode_exists_result_target + S (fpmp_target_recode_exists_result) = S ((S (fpmp_index_recode_exists_result)) * tc)) /\ exists ff_q_fpmp_recode_exists_result_target. tb = ff_q_fpmp_recode_exists_result_target * S ((S (fpmp_index_recode_exists_result)) * tc) + (fpmp_target_recode_exists_result))) -> fpmp_target_recode_exists_result = fpmp_left_recode_exists_result * fpmp_right_recode_exists_result)Structural proof guide
Generated structural guide
Two beta prefixes admit a third beta prefix of their pointwise products.
Use the direct prerequisites add_eq_zero_right, succ_ne_zero, beta_at_exists, beta_pointwise_mul_prefix_extend as previously established PA formulas.
The proof proceeds by structural induction (1), case analysis (5), intermediate claims (4).
Referenced ingredients
Proof neighborhood
Direct dependencies
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA0029 beta_at_exists PA007K beta_pointwise_mul_prefix_extendDirect dependents
Formal native tactic body
Dependencies are introduced as named hypotheses before line 1. Linked names are exact direct references. This Alpha-v16 checked-use theorem is independently kernel-checked when replayed; it is not a Stable theorem.
- 0001
intro mb - 0002
intro mc - 0003
intro sb - 0004
intro sc - 0005
induction l - 0006
exists 0 - 0007
exists 0 - 0008
intro i - 0009
intro a - 0010
intro b - 0011
intro t - 0012
intro hi - 0013
intro ha - 0014
intro hb - 0015
intro ht - 0016
exfalso - 0017
cases hi - 0018
have hsi : S i = 0 - 0019
specialize add_eq_zero_right x - 0020
specialize add_eq_zero_right (S i) - 0021
apply add_eq_zero_right - 0022
exact hi_witness - 0023
specialize succ_ne_zero i - 0024
apply succ_ne_zero - 0025
exact hsi - 0026
have hprevious : exists tb tc. (forall fpmp_index_recode_exists_previous fpmp_left_recode_exists_previous fpmp_right_recode_exists_previous fpmp_target_recode_exists_previous. (exists fpmp_gap_recode_exists_previous. fpmp_gap_recode_exists_previous + S fpmp_index_recode_exists_previous = l) -> (((exists ff_h_fpmp_recode_exists_previous_left. ff_h_fpmp_recode_exists_previous_left + S (fpmp_left_recode_exists_previous) = S ((S (fpmp_index_recode_exists_previous)) * mc)) /\ exists ff_q_fpmp_recode_exists_previous_left. mb = ff_q_fpmp_recode_exists_previous_left * S ((S (fpmp_index_recode_exists_previous)) * mc) + (fpmp_left_recode_exists_previous))) -> (((exists ff_h_fpmp_recode_exists_previous_right. ff_h_fpmp_recode_exists_previous_right + S (fpmp_right_recode_exists_previous) = S ((S (fpmp_index_recode_exists_previous)) * sc)) /\ exists ff_q_fpmp_recode_exists_previous_right. sb = ff_q_fpmp_recode_exists_previous_right * S ((S (fpmp_index_recode_exists_previous)) * sc) + (fpmp_right_recode_exists_previous))) -> (((exists ff_h_fpmp_recode_exists_previous_target. ff_h_fpmp_recode_exists_previous_target + S (fpmp_target_recode_exists_previous) = S ((S (fpmp_index_recode_exists_previous)) * tc)) /\ exists ff_q_fpmp_recode_exists_previous_target. tb = ff_q_fpmp_recode_exists_previous_target * S ((S (fpmp_index_recode_exists_previous)) * tc) + (fpmp_target_recode_exists_previous))) -> fpmp_target_recode_exists_previous = fpmp_left_recode_exists_previous * fpmp_right_recode_exists_previous) - 0027
exact IH - 0028
cases hprevious - 0029
cases hprevious_witness - 0030
have hleft : exists m. (((exists ff_h_recode_exists_left_last. ff_h_recode_exists_left_last + S (m) = S ((S (l)) * mc)) /\ exists ff_q_recode_exists_left_last. mb = ff_q_recode_exists_left_last * S ((S (l)) * mc) + (m))) - 0031
specialize beta_at_exists mb - 0032
specialize beta_at_exists mc - 0033
specialize beta_at_exists l - 0034
exact beta_at_exists - 0035
cases hleft - 0036
have hright : exists s. (((exists ff_h_recode_exists_right_last. ff_h_recode_exists_right_last + S (s) = S ((S (l)) * sc)) /\ exists ff_q_recode_exists_right_last. sb = ff_q_recode_exists_right_last * S ((S (l)) * sc) + (s))) - 0037
specialize beta_at_exists sb - 0038
specialize beta_at_exists sc - 0039
specialize beta_at_exists l - 0040
exact beta_at_exists - 0041
cases hright - 0042
specialize beta_pointwise_mul_prefix_extend mb - 0043
specialize beta_pointwise_mul_prefix_extend mc - 0044
specialize beta_pointwise_mul_prefix_extend sb - 0045
specialize beta_pointwise_mul_prefix_extend sc - 0046
specialize beta_pointwise_mul_prefix_extend x - 0047
specialize beta_pointwise_mul_prefix_extend x1 - 0048
specialize beta_pointwise_mul_prefix_extend l - 0049
specialize beta_pointwise_mul_prefix_extend x2 - 0050
specialize beta_pointwise_mul_prefix_extend x3 - 0051
apply beta_pointwise_mul_prefix_extend - 0052
exact hprevious_witness_witness - 0053
exact hleft_witness - 0054
exact hright_witness