Exact expanded PA statement
forall b c l r p. (exists u v. (((exists h. h + S 1 = S ((S 0) * v)) /\ exists q. u = q * S ((S 0) * v) + 1) /\ (((exists h. h + S r = S ((S l) * v)) /\ exists q. u = q * S ((S l) * v) + r) /\ forall i. (exists h. h + S i = l) -> exists p r s. (((exists h. h + S p = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p) /\ (((exists h. h + S r = S ((S i) * v)) /\ exists q. u = q * S ((S i) * v) + r) /\ (((exists h. h + S s = S ((S S i) * v)) /\ exists q. u = q * S ((S S i) * v) + s) /\ s = r * p)))))) -> ((exists h. h + S p = S ((S l) * c)) /\ exists q. b = q * S ((S l) * c) + p) -> (exists u v. (((exists h. h + S 1 = S ((S 0) * v)) /\ exists q. u = q * S ((S 0) * v) + 1) /\ (((exists h. h + S (r * p) = S ((S S l) * v)) /\ exists q. u = q * S ((S S l) * v) + (r * p)) /\ forall i. (exists h. h + S i = S l) -> exists p r s. (((exists h. h + S p = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p) /\ (((exists h. h + S r = S ((S i) * v)) /\ exists q. u = q * S ((S i) * v) + r) /\ (((exists h. h + S s = S ((S S i) * v)) /\ exists q. u = q * S ((S S i) * v) + s) /\ s = r * p))))))Structural proof guide
Append one decoded factor to an existing fully expanded Product witness.
Direct prerequisites: beta_prefix_extend, zero_le, succ_le_succ, le_refl, le_of_succ_le_succ, le_eq_or_lt. The authored body proceeds by case analysis (14), intermediate claims (5), equality transport (6).
Proof neighborhood
Direct dependencies
BT005D beta_prefix_extend BT000W zero_le BT0016 succ_le_succ BT000E le_refl BT0017 le_of_succ_le_succ BT001C le_eq_or_ltDirect dependents
Formal native tactic body
Dependencies are hypotheses of this body receipt. The focused endpoint audits separately check the complete empty-context certificates.
- 0001
intro b - 0002
intro c - 0003
intro l - 0004
intro r - 0005
intro p - 0006
intro hproduct - 0007
intro hp - 0008
cases hproduct - 0009
cases hproduct_witness - 0010
cases hproduct_witness_witness - 0011
cases hproduct_witness_witness_right - 0012
have hext : exists z d. (((exists h. h + S (r * p) = S ((S S l) * d)) /\ exists q. z = q * S ((S S l) * d) + (r * p)) /\ forall i a. (exists h. h + S i = S l) -> ((exists h. h + S a = S ((S i) * x1)) /\ exists q. x = q * S ((S i) * x1) + a) -> ((exists h. h + S a = S ((S i) * d)) /\ exists q. z = q * S ((S i) * d) + a)) - 0013
specialize beta_prefix_extend (S l) - 0014
specialize beta_prefix_extend x - 0015
specialize beta_prefix_extend x1 - 0016
specialize beta_prefix_extend (r * p) - 0017
exact beta_prefix_extend - 0018
cases hext - 0019
cases hext_witness - 0020
cases hext_witness_witness - 0021
exists x2 - 0022
exists x3 - 0023
split - 0024
specialize hext_witness_witness_right 0 - 0025
specialize hext_witness_witness_right 1 - 0026
apply hext_witness_witness_right - 0027
have hzero : exists h. h + 0 = l - 0028
specialize zero_le l - 0029
exact zero_le - 0030
specialize succ_le_succ 0 - 0031
specialize succ_le_succ l - 0032
apply succ_le_succ - 0033
exact hzero - 0034
exact hproduct_witness_witness_left - 0035
split - 0036
exact hext_witness_witness_left - 0037
intro i - 0038
intro hi - 0039
have hil : exists h. h + i = l - 0040
specialize le_of_succ_le_succ i - 0041
specialize le_of_succ_le_succ l - 0042
apply le_of_succ_le_succ - 0043
exact hi - 0044
have hsplit : i = l \/ exists h. h + S i = l - 0045
specialize le_eq_or_lt i - 0046
specialize le_eq_or_lt l - 0047
apply le_eq_or_lt - 0048
exact hil - 0049
cases hsplit - 0050
exists p - 0051
exists r - 0052
exists r * p - 0053
split - 0054
rewrite hsplit_left - 0055
rewrite hsplit_left - 0056
exact hp - 0057
split - 0058
rewrite hsplit_left - 0059
rewrite hsplit_left - 0060
specialize hext_witness_witness_right l - 0061
specialize hext_witness_witness_right r - 0062
apply hext_witness_witness_right - 0063
specialize le_refl (S l) - 0064
exact le_refl - 0065
exact hproduct_witness_witness_right_left - 0066
split - 0067
rewrite hsplit_left - 0068
rewrite hsplit_left - 0069
exact hext_witness_witness_left - 0070
refl - 0071
have hold : exists p0 r0 s0. (((exists h. h + S p0 = S ((S i) * c)) /\ exists q. b = q * S ((S i) * c) + p0) /\ (((exists h. h + S r0 = S ((S i) * x1)) /\ exists q. x = q * S ((S i) * x1) + r0) /\ (((exists h. h + S s0 = S ((S S i) * x1)) /\ exists q. x = q * S ((S S i) * x1) + s0) /\ s0 = r0 * p0))) - 0072
specialize hproduct_witness_witness_right_right i - 0073
apply hproduct_witness_witness_right_right - 0074
exact hsplit_right - 0075
cases hold - 0076
cases hold_witness - 0077
cases hold_witness_witness - 0078
cases hold_witness_witness_witness - 0079
cases hold_witness_witness_witness_right - 0080
cases hold_witness_witness_witness_right_right - 0081
exists x4 - 0082
exists x5 - 0083
exists x6 - 0084
split - 0085
exact hold_witness_witness_witness_left - 0086
split - 0087
specialize hext_witness_witness_right i - 0088
specialize hext_witness_witness_right x5 - 0089
apply hext_witness_witness_right - 0090
exact hi - 0091
exact hold_witness_witness_witness_right_left - 0092
split - 0093
specialize hext_witness_witness_right (S i) - 0094
specialize hext_witness_witness_right x6 - 0095
apply hext_witness_witness_right - 0096
specialize succ_le_succ (S i) - 0097
specialize succ_le_succ l - 0098
apply succ_le_succ - 0099
exact hsplit_right - 0100
exact hold_witness_witness_witness_right_right_left - 0101
exact hold_witness_witness_witness_right_right_right