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.
Statement with defined notation
∀ p. ∀ b. ∀ c. ∀ l. ¬p = 0 → ∃ x. ∃ y. ∃ z. ∃ n. DivisionPrefix(p,b,c,x,y,z,n,l)Every purple notation token opens its conservative definition. This is a reading surface; the compiler expands the statement before the unchanged kernel checks it.
Definitions used by this theorem
In the theorem statement
1 occurrences
In local proof propositions
6 occurrences
Exact expanded native-PA statement
forall p b c l. ~(p = 0) -> exists qb qc rb rc. (forall fdp_index_exists_result. (exists gsp_lt_gap_exists_result_index_bound. gsp_lt_gap_exists_result_index_bound + S fdp_index_exists_result = l) -> exists fdp_value_exists_result fdp_quotient_exists_result fdp_remainder_exists_result. (((exists ff_h_fdp_exists_result_source. ff_h_fdp_exists_result_source + S (fdp_value_exists_result) = S ((S (fdp_index_exists_result)) * c)) /\ exists ff_q_fdp_exists_result_source. b = ff_q_fdp_exists_result_source * S ((S (fdp_index_exists_result)) * c) + (fdp_value_exists_result))) /\ ((((exists ff_h_fdp_exists_result_quotient_entry. ff_h_fdp_exists_result_quotient_entry + S (fdp_quotient_exists_result) = S ((S (fdp_index_exists_result)) * qc)) /\ exists ff_q_fdp_exists_result_quotient_entry. qb = ff_q_fdp_exists_result_quotient_entry * S ((S (fdp_index_exists_result)) * qc) + (fdp_quotient_exists_result))) /\ ((((exists ff_h_fdp_exists_result_remainder_entry. ff_h_fdp_exists_result_remainder_entry + S (fdp_remainder_exists_result) = S ((S (fdp_index_exists_result)) * rc)) /\ exists ff_q_fdp_exists_result_remainder_entry. rb = ff_q_fdp_exists_result_remainder_entry * S ((S (fdp_index_exists_result)) * rc) + (fdp_remainder_exists_result))) /\ (fdp_value_exists_result = p * fdp_quotient_exists_result + fdp_remainder_exists_result /\ (exists gsp_lt_gap_exists_result_remainder_bound. gsp_lt_gap_exists_result_remainder_bound + S fdp_remainder_exists_result = p)))))Proof neighborhood
Direct theorem prerequisites
PA0004 add_eq_zero_right PA0005 succ_ne_zero PA0029 beta_at_exists PA001D division_remainder_exists PA00BX beta_division_prefix_extendDirect theorem dependents
Definition-aware tactic body
Only local propositions introduced by have or suffices are compacted. The untrusted compiler re-expands each one before the original tactic script is replayed; defined notation is never accepted by the kernel. Open the exact replay line beneath every changed command.
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 (5)
01Fix variables and assumptionsL1–3
02Induction on lL4–5
03Construct an explicit witnessL6–9
04Fix variables and assumptionsL10–11
05Separate the logical casesL12–13
06Establish hsiL14–22
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add eq zero right.
07Establish hpreviousL23–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply IH.
- L23
have hprevious : ∃ qb. ∃ qc. ∃ rb. ∃ rc. DivisionPrefix(p,b,c,qb,qc,rb,rc,l)Definitions: DivisionPrefix(p,b,c,qb,qc,rb,rc,l)Original native command in the exact edition - L24
apply IH - L25
exact hp0
08Separate the logical casesL26–29
09Establish hdecodedL30–34
Establish this local claim before using it. It is not an additional assumption.
- L30
have hdecoded : ∃ x. BetaAt(b,c,l,x)Definitions: BetaAt(b,c,l,x)Original native command in the exact edition - L31
specialize beta_at_exists b - L32
specialize beta_at_exists c - L33
specialize beta_at_exists l - L34
exact beta_at_exists
10Separate the logical casesL35–35
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L35
cases hdecoded
11Establish hdivisionL36–40
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply division remainder exists.
- L36
have hdivision : ∃ q. ∃ r. DivRem(x4,p,q,r)Definitions: DivRem(x4,p,q,r)Original native command in the exact edition - L37
specialize division_remainder_exists p - L38
specialize division_remainder_exists x4 - L39
apply division_remainder_exists - L40
exact hp0
12Separate the logical casesL41–42
13Establish hchoiceL43–43
Establish this local claim before using it. It is not an additional assumption.
- L43
have hchoice : ∃ x. ∃ q. ∃ r. BetaAt(b,c,l,x) ∧ DivRem(x,p,q,r)Definitions: BetaAt(b,c,l,x)DivRem(x,p,q,r)Original native command in the exact edition
14Construct an explicit witnessL44–46
15Separate the logical casesL47–47
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L47
split
16Use earlier factsL48–49
17Establish hnextL50–59
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply beta division prefix extend.
- L50
have hnext : ∃ qb. ∃ qc. ∃ rb. ∃ rc. DivisionPrefix(p,b,c,qb,qc,rb,rc,S l)Definitions: DivisionPrefix(p,b,c,qb,qc,rb,rc,S l)Original native command in the exact edition - L51
specialize beta_division_prefix_extend p - L52
specialize beta_division_prefix_extend b - L53
specialize beta_division_prefix_extend c - L54
specialize beta_division_prefix_extend x - L55
specialize beta_division_prefix_extend x1 - L56
specialize beta_division_prefix_extend x2 - L57
specialize beta_division_prefix_extend x3 - L58
specialize beta_division_prefix_extend l - L59
apply beta_division_prefix_extend
Original defined command ledger · 62 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
induction l - 0005
intro hp0 - 0006
exists 0 - 0007
exists 0 - 0008
exists 0 - 0009
exists 0 - 0010
intro i - 0011
intro hi - 0012
exfalso - 0013
cases hi - 0014
have hsi : S i = 0 - 0015
specialize add_eq_zero_right x - 0016
specialize add_eq_zero_right (S i) - 0017
apply add_eq_zero_right - 0018
exact hi_witness - 0019
specialize succ_ne_zero i - 0020
apply succ_ne_zero - 0021
exact hsi - 0022
intro hp0 - 0023
have hprevious : ∃ qb. ∃ qc. ∃ rb. ∃ rc. DivisionPrefix(p,b,c,qb,qc,rb,rc,l)Exact native replay line
have hprevious : exists qb qc rb rc. (forall fdp_index_exists_previous. (exists gsp_lt_gap_exists_previous_index_bound. gsp_lt_gap_exists_previous_index_bound + S fdp_index_exists_previous = l) -> exists fdp_value_exists_previous fdp_quotient_exists_previous fdp_remainder_exists_previous. (((exists ff_h_fdp_exists_previous_source. ff_h_fdp_exists_previous_source + S (fdp_value_exists_previous) = S ((S (fdp_index_exists_previous)) * c)) /\ exists ff_q_fdp_exists_previous_source. b = ff_q_fdp_exists_previous_source * S ((S (fdp_index_exists_previous)) * c) + (fdp_value_exists_previous))) /\ ((((exists ff_h_fdp_exists_previous_quotient_entry. ff_h_fdp_exists_previous_quotient_entry + S (fdp_quotient_exists_previous) = S ((S (fdp_index_exists_previous)) * qc)) /\ exists ff_q_fdp_exists_previous_quotient_entry. qb = ff_q_fdp_exists_previous_quotient_entry * S ((S (fdp_index_exists_previous)) * qc) + (fdp_quotient_exists_previous))) /\ ((((exists ff_h_fdp_exists_previous_remainder_entry. ff_h_fdp_exists_previous_remainder_entry + S (fdp_remainder_exists_previous) = S ((S (fdp_index_exists_previous)) * rc)) /\ exists ff_q_fdp_exists_previous_remainder_entry. rb = ff_q_fdp_exists_previous_remainder_entry * S ((S (fdp_index_exists_previous)) * rc) + (fdp_remainder_exists_previous))) /\ (fdp_value_exists_previous = p * fdp_quotient_exists_previous + fdp_remainder_exists_previous /\ (exists gsp_lt_gap_exists_previous_remainder_bound. gsp_lt_gap_exists_previous_remainder_bound + S fdp_remainder_exists_previous = p))))) - 0024
apply IH - 0025
exact hp0 - 0026
cases hprevious - 0027
cases hprevious_witness - 0028
cases hprevious_witness_witness - 0029
cases hprevious_witness_witness_witness - 0030
have hdecoded : ∃ x. BetaAt(b,c,l,x)Exact native replay line
have hdecoded : exists x. (((exists ff_h_fdp_exists_last_source. ff_h_fdp_exists_last_source + S (x) = S ((S (l)) * c)) /\ exists ff_q_fdp_exists_last_source. b = ff_q_fdp_exists_last_source * S ((S (l)) * c) + (x))) - 0031
specialize beta_at_exists b - 0032
specialize beta_at_exists c - 0033
specialize beta_at_exists l - 0034
exact beta_at_exists - 0035
cases hdecoded - 0036
have hdivision : ∃ q. ∃ r. DivRem(x4,p,q,r)Exact native replay line
have hdivision : exists q r. x4 = p * q + r /\ (exists gsp_lt_gap_fdp_exists_last_remainder_bound. gsp_lt_gap_fdp_exists_last_remainder_bound + S r = p) - 0037
specialize division_remainder_exists p - 0038
specialize division_remainder_exists x4 - 0039
apply division_remainder_exists - 0040
exact hp0 - 0041
cases hdivision - 0042
cases hdivision_witness - 0043
have hchoice : ∃ x. ∃ q. ∃ r. BetaAt(b,c,l,x) ∧ DivRem(x,p,q,r)Exact native replay line
have hchoice : exists x q r. (((exists ff_h_fdp_choice_source. ff_h_fdp_choice_source + S (x) = S ((S (l)) * c)) /\ exists ff_q_fdp_choice_source. b = ff_q_fdp_choice_source * S ((S (l)) * c) + (x))) /\ (x = p * q + r /\ (exists gsp_lt_gap_fdp_choice_remainder_bound. gsp_lt_gap_fdp_choice_remainder_bound + S r = p)) - 0044
exists x4 - 0045
exists x5 - 0046
exists x6 - 0047
split - 0048
exact hdecoded_witness - 0049
exact hdivision_witness_witness - 0050
have hnext : ∃ qb. ∃ qc. ∃ rb. ∃ rc. DivisionPrefix(p,b,c,qb,qc,rb,rc,S l)Exact native replay line
have hnext : exists qb qc rb rc. (forall fdp_index_exists_next. (exists gsp_lt_gap_exists_next_index_bound. gsp_lt_gap_exists_next_index_bound + S fdp_index_exists_next = S l) -> exists fdp_value_exists_next fdp_quotient_exists_next fdp_remainder_exists_next. (((exists ff_h_fdp_exists_next_source. ff_h_fdp_exists_next_source + S (fdp_value_exists_next) = S ((S (fdp_index_exists_next)) * c)) /\ exists ff_q_fdp_exists_next_source. b = ff_q_fdp_exists_next_source * S ((S (fdp_index_exists_next)) * c) + (fdp_value_exists_next))) /\ ((((exists ff_h_fdp_exists_next_quotient_entry. ff_h_fdp_exists_next_quotient_entry + S (fdp_quotient_exists_next) = S ((S (fdp_index_exists_next)) * qc)) /\ exists ff_q_fdp_exists_next_quotient_entry. qb = ff_q_fdp_exists_next_quotient_entry * S ((S (fdp_index_exists_next)) * qc) + (fdp_quotient_exists_next))) /\ ((((exists ff_h_fdp_exists_next_remainder_entry. ff_h_fdp_exists_next_remainder_entry + S (fdp_remainder_exists_next) = S ((S (fdp_index_exists_next)) * rc)) /\ exists ff_q_fdp_exists_next_remainder_entry. rb = ff_q_fdp_exists_next_remainder_entry * S ((S (fdp_index_exists_next)) * rc) + (fdp_remainder_exists_next))) /\ (fdp_value_exists_next = p * fdp_quotient_exists_next + fdp_remainder_exists_next /\ (exists gsp_lt_gap_exists_next_remainder_bound. gsp_lt_gap_exists_next_remainder_bound + S fdp_remainder_exists_next = p))))) - 0051
specialize beta_division_prefix_extend p - 0052
specialize beta_division_prefix_extend b - 0053
specialize beta_division_prefix_extend c - 0054
specialize beta_division_prefix_extend x - 0055
specialize beta_division_prefix_extend x1 - 0056
specialize beta_division_prefix_extend x2 - 0057
specialize beta_division_prefix_extend x3 - 0058
specialize beta_division_prefix_extend l - 0059
apply beta_division_prefix_extend - 0060
exact hprevious_witness_witness_witness_witness - 0061
exact hchoice - 0062
exact hnext