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. ∀ r. ∀ a. ∀ b. ∀ c. ∀ d. ∀ x. ∀ y. ModEq(p,r · a + b,r · c + d) → a = c + x ∨ c = a + x → b = d + y ∨ d = b + y → ModEq(p,r · x,y) ∨ ModEq(p,r · x + y,0)Every purple notation token opens its conservative definition. This reading surface never changes the unchanged intuitionistic kernel or confers checked-use authority.
Definitions used by this theorem
In the theorem statement
In local proof propositions
Exact expanded first-order statement
forall p r a b c d x y. (exists ftcn_left_collision ftcn_right_collision. (r * a + b) + (p) * ftcn_left_collision = (r * c + d) + (p) * ftcn_right_collision) -> (((a) = (c) + (x) \/ (c) = (a) + (x))) -> (((b) = (d) + (y) \/ (d) = (b) + (y))) -> ((exists ftcn_left_linear ftcn_right_linear. (r * x) + (p) * ftcn_left_linear = (y) + (p) * ftcn_right_linear) \/ (exists ftcn_left_opposite_linear ftcn_right_opposite_linear. (r * x + y) + (p) * ftcn_left_opposite_linear = (0) + (p) * ftcn_right_opposite_linear))Proof neighborhood
Direct theorem prerequisites
Direct theorem dependents
Definition-aware tactic body
Only propositions whose conservative expansion has been checked for exact first-order equivalence are compacted. Every changed line retains its immutable exact replay 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.
01Fix variables and assumptionsL1–10
02Fix variables and assumptionsL11–11
Work with arbitrary variables or the premises of the current implication.
- L11
intro hsecond
03Separate the logical casesL12–13
04Calculate and transport equalitiesL14–15
05Establish hleftL16–25
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
06Calculate and transport equalitiesL26–26
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L26
rewrite hleft at hcollision
07Separate the logical casesL27–27
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L27
right
08Use earlier factsL28–32
09Establish hzeroL33–38
10Establish hleftL39–48
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
11Establish hrightL49–53
12Separate the logical casesL54–54
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L54
left
13Use earlier factsL55–60
Instantiate or apply named facts and discharge the corresponding proof obligations.
14Separate the logical casesL61–61
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L61
cases hsecond
15Calculate and transport equalitiesL62–63
16Establish hleftL64–66
17Establish hrightL67–76
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
18Calculate and transport equalitiesL77–78
19Separate the logical casesL79–79
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L79
left
20Use earlier factsL80–89
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L80
specialize mod_eq_symm p - L81
specialize mod_eq_symm y - L82
specialize mod_eq_symm (r * x) - L83
apply mod_eq_symm - L84
specialize mod_eq_add_cancel_left p - L85
specialize mod_eq_add_cancel_left (r * a + d) - L86
specialize mod_eq_add_cancel_left y - L87
specialize mod_eq_add_cancel_left (r * x) - L88
apply mod_eq_add_cancel_left - L89
exact hcollision
21Calculate and transport equalitiesL90–91
22Establish hrightL92–101
Establish this local claim before using it. It is not an additional assumption. The following proof commands apply add assoc.
23Calculate and transport equalitiesL102–102
Carry out the recorded arithmetic or equality steps; inspect the exact commands for their direction and premises.
- L102
rewrite hright at hcollision
24Separate the logical casesL103–103
Follow the explicit conjunction, disjunction, witness, or contradiction step recorded below.
- L103
right
25Use earlier factsL104–112
Instantiate or apply named facts and discharge the corresponding proof obligations.
- L104
specialize mod_eq_symm p - L105
specialize mod_eq_symm 0 - L106
specialize mod_eq_symm (r * x + y) - L107
apply mod_eq_symm - L108
specialize mod_eq_add_cancel_left p - L109
specialize mod_eq_add_cancel_left (r * a + b) - L110
specialize mod_eq_add_cancel_left 0 - L111
specialize mod_eq_add_cancel_left (r * x + y) - L112
apply mod_eq_add_cancel_left
Original defined command ledger · 116 lines
- 0001
intro p - 0002
intro r - 0003
intro a - 0004
intro b - 0005
intro c - 0006
intro d - 0007
intro x - 0008
intro y - 0009
intro hcollision - 0010
intro hfirst - 0011
intro hsecond - 0012
cases hfirst - 0013
cases hsecond - 0014
rewrite hfirst_left at hcollision - 0015
rewrite hsecond_left at hcollision - 0016
have hleft : r * (c + x) + (d + y) = (r * c + d) + (r * x + y) - 0017
simp [mul_add, add_assoc, add_comm] - 0018
trans (r * x + d) + (y + r * c) - 0019
symm - 0020
apply add_assoc - 0021
trans (d + r * x) + (y + r * c) - 0022
congr - 0023
apply add_comm - 0024
refl - 0025
apply add_assoc - 0026
rewrite hleft at hcollision - 0027
right - 0028
specialize mod_eq_add_cancel_left p - 0029
specialize mod_eq_add_cancel_left (r * c + d) - 0030
specialize mod_eq_add_cancel_left (r * x + y) - 0031
specialize mod_eq_add_cancel_left 0 - 0032
apply mod_eq_add_cancel_left - 0033
have hzero : (r * c + d) + 0 = r * c + d - 0034
simp - 0035
rewrite hzero - 0036
exact hcollision - 0037
rewrite hfirst_left at hcollision - 0038
rewrite hsecond_right at hcollision - 0039
have hleft : r * (c + x) + b = (r * c + b) + r * x - 0040
simp [mul_add, add_assoc, add_comm] - 0041
trans (r * x + b) + r * c - 0042
symm - 0043
apply add_assoc - 0044
trans (b + r * x) + r * c - 0045
congr - 0046
apply add_comm - 0047
refl - 0048
apply add_assoc - 0049
have hright : r * c + (b + y) = (r * c + b) + y - 0050
symm - 0051
apply add_assoc - 0052
rewrite hleft at hcollision - 0053
rewrite hright at hcollision - 0054
left - 0055
specialize mod_eq_add_cancel_left p - 0056
specialize mod_eq_add_cancel_left (r * c + b) - 0057
specialize mod_eq_add_cancel_left (r * x) - 0058
specialize mod_eq_add_cancel_left y - 0059
apply mod_eq_add_cancel_left - 0060
exact hcollision - 0061
cases hsecond - 0062
rewrite hfirst_right at hcollision - 0063
rewrite hsecond_left at hcollision - 0064
have hleft : r * a + (d + y) = (r * a + d) + y - 0065
symm - 0066
apply add_assoc - 0067
have hright : r * (a + x) + d = (r * a + d) + r * x - 0068
simp [mul_add, add_assoc, add_comm] - 0069
trans (r * x + d) + r * a - 0070
symm - 0071
apply add_assoc - 0072
trans (d + r * x) + r * a - 0073
congr - 0074
apply add_comm - 0075
refl - 0076
apply add_assoc - 0077
rewrite hleft at hcollision - 0078
rewrite hright at hcollision - 0079
left - 0080
specialize mod_eq_symm p - 0081
specialize mod_eq_symm y - 0082
specialize mod_eq_symm (r * x) - 0083
apply mod_eq_symm - 0084
specialize mod_eq_add_cancel_left p - 0085
specialize mod_eq_add_cancel_left (r * a + d) - 0086
specialize mod_eq_add_cancel_left y - 0087
specialize mod_eq_add_cancel_left (r * x) - 0088
apply mod_eq_add_cancel_left - 0089
exact hcollision - 0090
rewrite hfirst_right at hcollision - 0091
rewrite hsecond_right at hcollision - 0092
have hright : r * (a + x) + (b + y) = (r * a + b) + (r * x + y) - 0093
simp [mul_add, add_assoc, add_comm] - 0094
trans (r * x + b) + (y + r * a) - 0095
symm - 0096
apply add_assoc - 0097
trans (b + r * x) + (y + r * a) - 0098
congr - 0099
apply add_comm - 0100
refl - 0101
apply add_assoc - 0102
rewrite hright at hcollision - 0103
right - 0104
specialize mod_eq_symm p - 0105
specialize mod_eq_symm 0 - 0106
specialize mod_eq_symm (r * x + y) - 0107
apply mod_eq_symm - 0108
specialize mod_eq_add_cancel_left p - 0109
specialize mod_eq_add_cancel_left (r * a + b) - 0110
specialize mod_eq_add_cancel_left 0 - 0111
specialize mod_eq_add_cancel_left (r * x + y) - 0112
apply mod_eq_add_cancel_left - 0113
have hzero : (r * a + b) + 0 = r * a + b - 0114
simp - 0115
rewrite hzero - 0116
exact hcollision