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. ∀ qb. ∀ qc. ∀ rb. ∀ rc. ∀ l. DivisionPrefix(p,b,c,qb,qc,rb,rc,l) → (∃ x. ∃ y. ∃ z. BetaAt(b,c,l,x) ∧ DivRem(x,p,y,z)) → ∃ x. ∃ y. ∃ z. ∃ n. DivisionPrefix(p,b,c,x,y,z,n,S 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
4 occurrences
In local proof propositions
13 occurrences
Exact expanded native-PA statement
forall p b c qb qc rb rc l. (forall fdp_index_before. (exists gsp_lt_gap_before_index_bound. gsp_lt_gap_before_index_bound + S fdp_index_before = l) -> exists fdp_value_before fdp_quotient_before fdp_remainder_before. (((exists ff_h_fdp_before_source. ff_h_fdp_before_source + S (fdp_value_before) = S ((S (fdp_index_before)) * c)) /\ exists ff_q_fdp_before_source. b = ff_q_fdp_before_source * S ((S (fdp_index_before)) * c) + (fdp_value_before))) /\ ((((exists ff_h_fdp_before_quotient_entry. ff_h_fdp_before_quotient_entry + S (fdp_quotient_before) = S ((S (fdp_index_before)) * qc)) /\ exists ff_q_fdp_before_quotient_entry. qb = ff_q_fdp_before_quotient_entry * S ((S (fdp_index_before)) * qc) + (fdp_quotient_before))) /\ ((((exists ff_h_fdp_before_remainder_entry. ff_h_fdp_before_remainder_entry + S (fdp_remainder_before) = S ((S (fdp_index_before)) * rc)) /\ exists ff_q_fdp_before_remainder_entry. rb = ff_q_fdp_before_remainder_entry * S ((S (fdp_index_before)) * rc) + (fdp_remainder_before))) /\ (fdp_value_before = p * fdp_quotient_before + fdp_remainder_before /\ (exists gsp_lt_gap_before_remainder_bound. gsp_lt_gap_before_remainder_bound + S fdp_remainder_before = p))))) -> (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))) -> exists z d u v. (forall fdp_index_after. (exists gsp_lt_gap_after_index_bound. gsp_lt_gap_after_index_bound + S fdp_index_after = S l) -> exists fdp_value_after fdp_quotient_after fdp_remainder_after. (((exists ff_h_fdp_after_source. ff_h_fdp_after_source + S (fdp_value_after) = S ((S (fdp_index_after)) * c)) /\ exists ff_q_fdp_after_source. b = ff_q_fdp_after_source * S ((S (fdp_index_after)) * c) + (fdp_value_after))) /\ ((((exists ff_h_fdp_after_quotient_entry. ff_h_fdp_after_quotient_entry + S (fdp_quotient_after) = S ((S (fdp_index_after)) * d)) /\ exists ff_q_fdp_after_quotient_entry. z = ff_q_fdp_after_quotient_entry * S ((S (fdp_index_after)) * d) + (fdp_quotient_after))) /\ ((((exists ff_h_fdp_after_remainder_entry. ff_h_fdp_after_remainder_entry + S (fdp_remainder_after) = S ((S (fdp_index_after)) * v)) /\ exists ff_q_fdp_after_remainder_entry. u = ff_q_fdp_after_remainder_entry * S ((S (fdp_index_after)) * v) + (fdp_remainder_after))) /\ (fdp_value_after = p * fdp_quotient_after + fdp_remainder_after /\ (exists gsp_lt_gap_after_remainder_bound. gsp_lt_gap_after_remainder_bound + S fdp_remainder_after = p)))))Proof neighborhood
Direct theorem prerequisites
Direct 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 (2)
01Fix variables and assumptionsL1–10
02Separate the logical casesL11–15
03Establish hqextendL16–21
Establish this local claim before using it. It is not an additional assumption.
- L16
have hqextend : ∃ z. ∃ d. BetaAt(z,d,l,x1) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(qb,qc,x,y) → BetaAt(z,d,x,y))Definitions: BetaAt(z,d,l,x1)Lt(x,l)BetaAt(qb,qc,x,y)BetaAt(z,d,x,y)Original native command in the exact edition - L17
specialize beta_prefix_extend l - L18
specialize beta_prefix_extend qb - L19
specialize beta_prefix_extend qc - L20
specialize beta_prefix_extend x1 - L21
exact beta_prefix_extend
04Separate the logical casesL22–24
05Establish hrextendL25–30
Establish this local claim before using it. It is not an additional assumption.
- L25
have hrextend : ∃ u. ∃ v. BetaAt(u,v,l,x2) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(rb,rc,x,y) → BetaAt(u,v,x,y))Definitions: BetaAt(u,v,l,x2)Lt(x,l)BetaAt(rb,rc,x,y)BetaAt(u,v,x,y)Original native command in the exact edition - L26
specialize beta_prefix_extend l - L27
specialize beta_prefix_extend rb - L28
specialize beta_prefix_extend rc - L29
specialize beta_prefix_extend x2 - L30
exact beta_prefix_extend
06Separate the logical casesL31–33
07Construct an explicit witnessL34–37
08Fix variables and assumptionsL38–39
09Establish hsplitL40–44
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply finite lt succ eq or lt.
10Separate the logical casesL45–45
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L45
cases hsplit
11Construct an explicit witnessL46–48
12Separate the logical casesL49–49
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L49
split
13Calculate and transport equalitiesL50–51
14Use earlier factsL52–52
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L52
exact hchoice_witness_witness_witness_left
15Separate the logical casesL53–53
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L53
split
16Calculate and transport equalitiesL54–55
17Use earlier factsL56–56
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L56
exact hqextend_witness_witness_left
18Separate the logical casesL57–57
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L57
split
19Calculate and transport equalitiesL58–59
20Use earlier factsL60–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L60
exact hrextend_witness_witness_left
21Separate the logical casesL61–61
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L61
split
22Use earlier factsL62–63
23Establish holdL64–67
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply hprefix.
- L64
have hold : ∃ x. ∃ q. ∃ r. BetaAt(b,c,i,x) ∧ (BetaAt(qb,qc,i,q) ∧ (BetaAt(rb,rc,i,r) ∧ DivRem(x,p,q,r)))Definitions: BetaAt(b,c,i,x)BetaAt(qb,qc,i,q)BetaAt(rb,rc,i,r)DivRem(x,p,q,r)Original native command in the exact edition - L65
specialize hprefix i - L66
apply hprefix - L67
exact hsplit_right
24Separate the logical casesL68–74
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
25Construct an explicit witnessL75–77
26Separate the logical casesL78–78
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L78
split
27Use earlier factsL79–79
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L79
exact hold_witness_witness_witness_left
28Separate the logical casesL80–80
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L80
split
29Use earlier factsL81–85
30Separate the logical casesL86–86
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L86
split
31Use earlier factsL87–91
32Separate the logical casesL92–92
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L92
split
Original defined command ledger · 94 lines
- 0001
intro p - 0002
intro b - 0003
intro c - 0004
intro qb - 0005
intro qc - 0006
intro rb - 0007
intro rc - 0008
intro l - 0009
intro hprefix - 0010
intro hchoice - 0011
cases hchoice - 0012
cases hchoice_witness - 0013
cases hchoice_witness_witness - 0014
cases hchoice_witness_witness_witness - 0015
cases hchoice_witness_witness_witness_right - 0016
have hqextend : ∃ z. ∃ d. BetaAt(z,d,l,x1) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(qb,qc,x,y) → BetaAt(z,d,x,y))Exact native replay line
have hqextend : exists z d. (((exists ff_h_fdp_quotient_extension_last. ff_h_fdp_quotient_extension_last + S (x1) = S ((S (l)) * d)) /\ exists ff_q_fdp_quotient_extension_last. z = ff_q_fdp_quotient_extension_last * S ((S (l)) * d) + (x1))) /\ forall i q0. (exists gsp_lt_gap_fdp_quotient_extension_old_bound. gsp_lt_gap_fdp_quotient_extension_old_bound + S i = l) -> (((exists ff_h_fdp_quotient_extension_old_source. ff_h_fdp_quotient_extension_old_source + S (q0) = S ((S (i)) * qc)) /\ exists ff_q_fdp_quotient_extension_old_source. qb = ff_q_fdp_quotient_extension_old_source * S ((S (i)) * qc) + (q0))) -> (((exists ff_h_fdp_quotient_extension_old_target_symbolic. ff_h_fdp_quotient_extension_old_target_symbolic + S (q0) = S ((S (i)) * d)) /\ exists ff_q_fdp_quotient_extension_old_target_symbolic. z = ff_q_fdp_quotient_extension_old_target_symbolic * S ((S (i)) * d) + (q0))) - 0017
specialize beta_prefix_extend l - 0018
specialize beta_prefix_extend qb - 0019
specialize beta_prefix_extend qc - 0020
specialize beta_prefix_extend x1 - 0021
exact beta_prefix_extend - 0022
cases hqextend - 0023
cases hqextend_witness - 0024
cases hqextend_witness_witness - 0025
have hrextend : ∃ u. ∃ v. BetaAt(u,v,l,x2) ∧ (∀ x. ∀ y. Lt(x,l) → BetaAt(rb,rc,x,y) → BetaAt(u,v,x,y))Exact native replay line
have hrextend : exists u v. (((exists ff_h_fdp_remainder_extension_last. ff_h_fdp_remainder_extension_last + S (x2) = S ((S (l)) * v)) /\ exists ff_q_fdp_remainder_extension_last. u = ff_q_fdp_remainder_extension_last * S ((S (l)) * v) + (x2))) /\ forall i r0. (exists gsp_lt_gap_fdp_remainder_extension_old_bound. gsp_lt_gap_fdp_remainder_extension_old_bound + S i = l) -> (((exists ff_h_fdp_remainder_extension_old_source. ff_h_fdp_remainder_extension_old_source + S (r0) = S ((S (i)) * rc)) /\ exists ff_q_fdp_remainder_extension_old_source. rb = ff_q_fdp_remainder_extension_old_source * S ((S (i)) * rc) + (r0))) -> (((exists ff_h_fdp_remainder_extension_old_target. ff_h_fdp_remainder_extension_old_target + S (r0) = S ((S (i)) * v)) /\ exists ff_q_fdp_remainder_extension_old_target. u = ff_q_fdp_remainder_extension_old_target * S ((S (i)) * v) + (r0))) - 0026
specialize beta_prefix_extend l - 0027
specialize beta_prefix_extend rb - 0028
specialize beta_prefix_extend rc - 0029
specialize beta_prefix_extend x2 - 0030
exact beta_prefix_extend - 0031
cases hrextend - 0032
cases hrextend_witness - 0033
cases hrextend_witness_witness - 0034
exists x3 - 0035
exists x4 - 0036
exists x5 - 0037
exists x6 - 0038
intro i - 0039
intro hi - 0040
have hsplit : i = l ∨ Lt(i,l)Exact native replay line
have hsplit : i = l \/ exists gap. gap + S i = l - 0041
specialize finite_lt_succ_eq_or_lt l - 0042
specialize finite_lt_succ_eq_or_lt i - 0043
apply finite_lt_succ_eq_or_lt - 0044
exact hi - 0045
cases hsplit - 0046
exists x - 0047
exists x1 - 0048
exists x2 - 0049
split - 0050
rewrite hsplit_left - 0051
rewrite hsplit_left - 0052
exact hchoice_witness_witness_witness_left - 0053
split - 0054
rewrite hsplit_left - 0055
rewrite hsplit_left - 0056
exact hqextend_witness_witness_left - 0057
split - 0058
rewrite hsplit_left - 0059
rewrite hsplit_left - 0060
exact hrextend_witness_witness_left - 0061
split - 0062
exact hchoice_witness_witness_witness_right_left - 0063
exact hchoice_witness_witness_witness_right_right - 0064
have hold : ∃ x. ∃ q. ∃ r. BetaAt(b,c,i,x) ∧ (BetaAt(qb,qc,i,q) ∧ (BetaAt(rb,rc,i,r) ∧ DivRem(x,p,q,r)))Exact native replay line
have hold : exists x q r. (((exists ff_h_fdp_previous_source. ff_h_fdp_previous_source + S (x) = S ((S (i)) * c)) /\ exists ff_q_fdp_previous_source. b = ff_q_fdp_previous_source * S ((S (i)) * c) + (x))) /\ ((((exists ff_h_fdp_previous_quotient. ff_h_fdp_previous_quotient + S (q) = S ((S (i)) * qc)) /\ exists ff_q_fdp_previous_quotient. qb = ff_q_fdp_previous_quotient * S ((S (i)) * qc) + (q))) /\ ((((exists ff_h_fdp_previous_remainder. ff_h_fdp_previous_remainder + S (r) = S ((S (i)) * rc)) /\ exists ff_q_fdp_previous_remainder. rb = ff_q_fdp_previous_remainder * S ((S (i)) * rc) + (r))) /\ (x = p * q + r /\ (exists gsp_lt_gap_fdp_previous_remainder_bound. gsp_lt_gap_fdp_previous_remainder_bound + S r = p)))) - 0065
specialize hprefix i - 0066
apply hprefix - 0067
exact hsplit_right - 0068
cases hold - 0069
cases hold_witness - 0070
cases hold_witness_witness - 0071
cases hold_witness_witness_witness - 0072
cases hold_witness_witness_witness_right - 0073
cases hold_witness_witness_witness_right_right - 0074
cases hold_witness_witness_witness_right_right_right - 0075
exists x7 - 0076
exists x8 - 0077
exists x9 - 0078
split - 0079
exact hold_witness_witness_witness_left - 0080
split - 0081
specialize hqextend_witness_witness_right i - 0082
specialize hqextend_witness_witness_right x8 - 0083
apply hqextend_witness_witness_right - 0084
exact hsplit_right - 0085
exact hold_witness_witness_witness_right_left - 0086
split - 0087
specialize hrextend_witness_witness_right i - 0088
specialize hrextend_witness_witness_right x9 - 0089
apply hrextend_witness_witness_right - 0090
exact hsplit_right - 0091
exact hold_witness_witness_witness_right_right_left - 0092
split - 0093
exact hold_witness_witness_witness_right_right_right_left - 0094
exact hold_witness_witness_witness_right_right_right_right