IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.PRCNativeCostUniqueness
IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCNativeCostUniqueness.lean · 17090 lines · 1168 declarations
show as:
view math explainer →
1/-
2 PrimitiveRecognitionCalculus/PRCNativeCostUniqueness.lean
3
4 Round-trip source:
5 δ/PRC_Universal_Foundation_Execution_Plan_20260526.html
6
7 Spec anchor:
8 Immediate target after pass 24: attack `PRCNativeCostUniquenessTarget`
9 or isolate the smallest exact blocker.
10
11 The current PRC cost hypotheses are too weak to prove uniqueness directly:
12 after setting `g = F + 1`, the RCL has the d'Alembert form
13 `g(xy) + g(x/y) = 2 g(x) g(y)`. On a rational multiplicative group,
14 one-point calibration at `2` does not by itself control all prime directions.
15 This file names the exact missing character-factorization and calibrated
16 character-rigidity targets and proves that together they imply native
17 cost uniqueness.
18-/
19
20import IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.PRCJCost
21import IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.Kernel
22import IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.TraceClosure
23import Mathlib.Analysis.Real.Cardinality
24import Mathlib.Data.Rat.Cast.Order
25import Mathlib.Algebra.AlgebraicCard
26import Mathlib.Logic.Equiv.List
27import Mathlib.MeasureTheory.Measure.Lebesgue.Basic
28import IndisputableMonolith.Foundation.PrimitiveRecognitionCalculus.PRCMonotoneDAlembert
29
30namespace IndisputableMonolith
31namespace Foundation
32namespace PrimitiveRecognitionCalculus
33namespace PRCJCost
34
35/-- A ratio-character candidate for the d'Alembert factorization of a PRC cost.
36It is stated at the ratio-orbit level and uses cross-equivalence rather than
37definitional equality, so it remains quotient-native. -/
38structure PRCRatioCharacter (χ : RatioOrbit → RatioOrbit) : Prop where
39 unit :
40 RatioOrbit.crossEq (χ RatioOrbit.one) RatioOrbit.one
41 multiplicative :
42 ∀ x y : RatioOrbit,
43 RatioOrbit.crossEq (χ (RatioOrbit.mul x y))
44 (RatioOrbit.mul (χ x) (χ y))
45 reciprocal :
46 ∀ x : RatioOrbit,
47 RatioOrbit.crossEq (χ (RatioOrbit.recip x))
48 (RatioOrbit.recip (χ x))
49 normalized_invariant :
50 ∀ q : RatioOrbit,
51 RatioOrbit.crossEq (χ q) (χ (DistinctionNat.normalizeRatio q))
52 nonzero_preserving :
53 ∀ {q : RatioOrbit}, q.toRat ≠ 0 → (χ q).toRat ≠ 0
54
55/-- Cost generated from a rational character. The canonical PRC cost is the
56identity-character case. -/
57def costFromCharacter (χ : RatioOrbit → RatioOrbit) (q : RatioOrbit) :
58 RatioOrbit :=
59 onRatioOrbit (χ q)
60
61theorem costFromCharacter_toRat
62 (χ : RatioOrbit → RatioOrbit) (q : RatioOrbit) :
63 (costFromCharacter χ q).toRat =
64 ((χ q).toRat + (χ q).toRat⁻¹) / 2 - 1 := by
65 exact onRatioOrbit_toRat (χ q)
66
67/-- The doubled trace value `2(a+1)` attached to a cost value `a`. -/
68def doubledTraceValue (a : RatioOrbit) : RatioOrbit :=
69 RatioOrbit.mul two (RatioOrbit.add a RatioOrbit.one)
70
71/-- The doubled d'Alembert trace carried by a native cost: `T_F(q)=2(F(q)+1)`.
72For a generated cost this is exactly `χ(q)+χ(q)⁻¹`. -/
73def nativeCostDoubledTrace
74 (F : RatioOrbit → RatioOrbit) (q : RatioOrbit) : RatioOrbit :=
75 doubledTraceValue (F q)
76
77theorem doubledTraceValue_congr {a b : RatioOrbit}
78 (h : RatioOrbit.crossEq a b) :
79 RatioOrbit.crossEq (doubledTraceValue a) (doubledTraceValue b) := by
80 rw [RatioOrbit.crossEq_iff_toRat_eq] at h ⊢
81 simp [doubledTraceValue, RatioOrbit.mul_toRat, RatioOrbit.add_toRat,
82 two_toRat, RatioOrbit.one_toRat]
83 linarith
84
85/-- Native d'Alembert trace equation. This is the RCL equation after setting
86`T_F = 2(F+1)`. -/
87def PRCDoubledTraceDAlembert (T : RatioOrbit → RatioOrbit) : Prop :=
88 ∀ {x y : RatioOrbit}, x.toRat ≠ 0 → y.toRat ≠ 0 →
89 RatioOrbit.crossEq
90 (RatioOrbit.add (T (RatioOrbit.mul x y)) (T (div x y)))
91 (RatioOrbit.mul (T x) (T y))
92
93theorem nativeCostDoubledTrace_dAlembert_of_native_hypotheses
94 {F : RatioOrbit → RatioOrbit}
95 (hF : PRCNativeCostHypotheses F) :
96 PRCDoubledTraceDAlembert (nativeCostDoubledTrace F) := by
97 intro x y hx hy
98 have hrcl := hF.canonical_rcl hx hy
99 rw [RatioOrbit.crossEq_iff_toRat_eq] at hrcl ⊢
100 simp [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.add_toRat,
101 RatioOrbit.mul_toRat, two_toRat, RatioOrbit.one_toRat] at hrcl ⊢
102 ring_nf at hrcl ⊢
103 linarith
104
105/-- Hypotheses carried by the doubled trace of a native PRC cost. -/
106structure PRCDoubledTraceHypotheses (T : RatioOrbit → RatioOrbit) : Prop where
107 reciprocal :
108 ∀ q, RatioOrbit.crossEq (T q) (T (RatioOrbit.recip q))
109 normalized_invariant :
110 ∀ q, RatioOrbit.crossEq (T q) (T (DistinctionNat.normalizeRatio q))
111 dAlembert :
112 PRCDoubledTraceDAlembert T
113 unit_trace :
114 RatioOrbit.crossEq (T RatioOrbit.one) two
115 two_trace :
116 RatioOrbit.crossEq (T two) (nativeCostDoubledTrace onRatioOrbit two)
117
118theorem nativeCostDoubledTrace_hypotheses_of_native_cost_hypotheses
119 {F : RatioOrbit → RatioOrbit}
120 (hF : PRCNativeCostHypotheses F) :
121 PRCDoubledTraceHypotheses (nativeCostDoubledTrace F) := by
122 refine
123 { reciprocal := ?_,
124 normalized_invariant := ?_,
125 dAlembert := nativeCostDoubledTrace_dAlembert_of_native_hypotheses hF,
126 unit_trace := ?_,
127 two_trace := ?_ }
128 · intro q
129 exact doubledTraceValue_congr (hF.reciprocal q)
130 · intro q
131 exact doubledTraceValue_congr (hF.normalized_invariant q)
132 · rw [RatioOrbit.crossEq_iff_toRat_eq]
133 rw [nativeCostDoubledTrace, doubledTraceValue, hF.unit_zero,
134 RatioOrbit.mul_toRat, RatioOrbit.add_toRat, RatioOrbit.zero_toRat,
135 RatioOrbit.one_toRat, two_toRat]
136 norm_num
137 · exact doubledTraceValue_congr hF.two_calibrated
138
139/-- Trace form of character factorization. This is the d'Alembert lift hidden
140inside `F = J ∘ χ`: the generated trace of `χ q` must be `2(F q + 1)`. -/
141def PRCCharacterTraceMatchesCost
142 (F : RatioOrbit → RatioOrbit) (χ : RatioOrbit → RatioOrbit) : Prop :=
143 ∀ q : RatioOrbit,
144 RatioOrbit.crossEq
145 (RatioOrbit.add (χ q) (RatioOrbit.recip (χ q)))
146 (nativeCostDoubledTrace F q)
147
148theorem PRCCharacterTraceMatchesCost_of_cost_crossEq
149 {F χ : RatioOrbit → RatioOrbit}
150 (hcost : ∀ q : RatioOrbit,
151 RatioOrbit.crossEq (F q) (costFromCharacter χ q)) :
152 PRCCharacterTraceMatchesCost F χ := by
153 intro q
154 have h := hcost q
155 rw [RatioOrbit.crossEq_iff_toRat_eq] at h ⊢
156 rw [costFromCharacter_toRat] at h
157 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.add_toRat,
158 RatioOrbit.recip_toRat, RatioOrbit.mul_toRat, two_toRat,
159 RatioOrbit.add_toRat, RatioOrbit.one_toRat]
160 linarith
161
162theorem cost_crossEq_of_PRCCharacterTraceMatchesCost
163 {F χ : RatioOrbit → RatioOrbit}
164 (htrace : PRCCharacterTraceMatchesCost F χ) :
165 ∀ q : RatioOrbit,
166 RatioOrbit.crossEq (F q) (costFromCharacter χ q) := by
167 intro q
168 have h := htrace q
169 rw [RatioOrbit.crossEq_iff_toRat_eq] at h ⊢
170 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.add_toRat,
171 RatioOrbit.recip_toRat, RatioOrbit.mul_toRat, two_toRat, RatioOrbit.add_toRat,
172 RatioOrbit.one_toRat] at h
173 rw [costFromCharacter_toRat]
174 linarith
175
176/-- Exact d'Alembert trace-lift version of character factorization. -/
177def PRCNativeCostCharacterTraceLiftTarget : Prop :=
178 ∀ F : RatioOrbit → RatioOrbit,
179 PRCNativeCostHypotheses F →
180 ∃ χ : RatioOrbit → RatioOrbit,
181 PRCRatioCharacter χ ∧
182 PRCCharacterTraceMatchesCost F χ
183
184/-- Coherent-root version of the remaining d'Alembert blocker. It asks for a
185multiplicative ratio character whose trace realizes any native doubled trace. -/
186def PRCDoubledTraceCoherentRootTarget : Prop :=
187 ∀ T : RatioOrbit → RatioOrbit,
188 PRCDoubledTraceHypotheses T →
189 ∃ χ : RatioOrbit → RatioOrbit,
190 PRCRatioCharacter χ ∧
191 ∀ q : RatioOrbit,
192 RatioOrbit.crossEq
193 (RatioOrbit.add (χ q) (RatioOrbit.recip (χ q)))
194 (T q)
195
196theorem RatioOrbit.recip_zero_eq :
197 RatioOrbit.recip RatioOrbit.zero = RatioOrbit.zero := by
198 unfold RatioOrbit.recip
199 simp [RatioOrbit.zero, SignedOrbit.balanced_iff_toInt_eq,
200 SignedOrbit.zero_toInt]
201
202/-- A doubled trace that is canonical away from zero but deliberately spikes the
203zero orbit to trace `1`. The current doubled-trace hypotheses do not see this
204because their d'Alembert law is restricted to nonzero inputs. -/
205def zeroSpikeDoubledTrace (q : RatioOrbit) : RatioOrbit :=
206 if q.toRat = 0 then RatioOrbit.one else nativeCostDoubledTrace onRatioOrbit q
207
208theorem zeroSpikeDoubledTrace_zero :
209 zeroSpikeDoubledTrace RatioOrbit.zero = RatioOrbit.one := by
210 rw [zeroSpikeDoubledTrace, if_pos RatioOrbit.zero_toRat]
211
212theorem zeroSpikeDoubledTrace_nonzero {q : RatioOrbit}
213 (hq : q.toRat ≠ 0) :
214 zeroSpikeDoubledTrace q = nativeCostDoubledTrace onRatioOrbit q := by
215 rw [zeroSpikeDoubledTrace, if_neg hq]
216
217theorem zeroSpikeDoubledTrace_hypotheses :
218 PRCDoubledTraceHypotheses zeroSpikeDoubledTrace := by
219 refine
220 { reciprocal := ?_,
221 normalized_invariant := ?_,
222 dAlembert := ?_,
223 unit_trace := ?_,
224 two_trace := ?_ }
225 · intro q
226 by_cases hq : q.toRat = 0
227 · have hrec : (RatioOrbit.recip q).toRat = 0 := by
228 rw [RatioOrbit.recip_toRat, hq]
229 norm_num
230 rw [RatioOrbit.crossEq_iff_toRat_eq]
231 rw [zeroSpikeDoubledTrace, if_pos hq]
232 rw [zeroSpikeDoubledTrace, if_pos hrec]
233 · have hrec : (RatioOrbit.recip q).toRat ≠ 0 := by
234 rw [RatioOrbit.recip_toRat]
235 exact inv_ne_zero hq
236 rw [zeroSpikeDoubledTrace_nonzero hq,
237 zeroSpikeDoubledTrace_nonzero hrec]
238 exact doubledTraceValue_congr (reciprocal_symmetric q)
239 · intro q
240 by_cases hq : q.toRat = 0
241 · have hnorm : (DistinctionNat.normalizeRatio q).toRat = 0 := by
242 rw [DistinctionNat.normalizeRatio_toRat, hq]
243 rw [RatioOrbit.crossEq_iff_toRat_eq]
244 rw [zeroSpikeDoubledTrace, if_pos hq]
245 rw [zeroSpikeDoubledTrace, if_pos hnorm]
246 · have hnorm : (DistinctionNat.normalizeRatio q).toRat ≠ 0 := by
247 rw [DistinctionNat.normalizeRatio_toRat]
248 exact hq
249 rw [zeroSpikeDoubledTrace_nonzero hq,
250 zeroSpikeDoubledTrace_nonzero hnorm]
251 exact doubledTraceValue_congr (normalized_invariant q)
252 · intro x y hx hy
253 have hxy : (RatioOrbit.mul x y).toRat ≠ 0 := by
254 rw [RatioOrbit.mul_toRat]
255 exact mul_ne_zero hx hy
256 have hdiv : (div x y).toRat ≠ 0 := by
257 rw [div_toRat]
258 exact div_ne_zero hx hy
259 rw [zeroSpikeDoubledTrace_nonzero hxy,
260 zeroSpikeDoubledTrace_nonzero hdiv,
261 zeroSpikeDoubledTrace_nonzero hx,
262 zeroSpikeDoubledTrace_nonzero hy]
263 rw [RatioOrbit.crossEq_iff_toRat_eq]
264 rw [RatioOrbit.add_toRat, RatioOrbit.mul_toRat,
265 nativeCostDoubledTrace, nativeCostDoubledTrace, nativeCostDoubledTrace,
266 nativeCostDoubledTrace, doubledTraceValue, doubledTraceValue,
267 doubledTraceValue, doubledTraceValue,
268 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat, RatioOrbit.mul_toRat,
269 RatioOrbit.mul_toRat, RatioOrbit.add_toRat, RatioOrbit.add_toRat,
270 RatioOrbit.add_toRat, RatioOrbit.add_toRat, two_toRat,
271 RatioOrbit.one_toRat, onRatioOrbit_toRat, onRatioOrbit_toRat,
272 onRatioOrbit_toRat, onRatioOrbit_toRat, RatioOrbit.mul_toRat, div_toRat]
273 field_simp [hx, hy, mul_ne_zero hx hy]
274 ring
275 · rw [RatioOrbit.crossEq_iff_toRat_eq]
276 rw [zeroSpikeDoubledTrace_nonzero (by
277 rw [RatioOrbit.one_toRat]
278 norm_num : RatioOrbit.one.toRat ≠ 0)]
279 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.mul_toRat,
280 RatioOrbit.add_toRat, two_toRat, RatioOrbit.one_toRat,
281 onRatioOrbit_toRat, RatioOrbit.one_toRat]
282 norm_num
283 · rw [zeroSpikeDoubledTrace_nonzero (by
284 rw [two_toRat]
285 norm_num : two.toRat ≠ 0)]
286 exact RatioOrbit.crossEq_refl _
287
288theorem zeroSpikeDoubledTrace_no_ratio_character_trace :
289 ¬ ∃ χ : RatioOrbit → RatioOrbit,
290 PRCRatioCharacter χ ∧
291 ∀ q : RatioOrbit,
292 RatioOrbit.crossEq
293 (RatioOrbit.add (χ q) (RatioOrbit.recip (χ q)))
294 (zeroSpikeDoubledTrace q) := by
295 intro h
296 rcases h with ⟨χ, hχ, htrace⟩
297 let a : ℚ := (χ RatioOrbit.zero).toRat
298 have hrec := hχ.reciprocal RatioOrbit.zero
299 have hrecRat : a = a⁻¹ := by
300 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_zero_eq,
301 RatioOrbit.recip_toRat] at hrec
302 exact hrec
303 have htraceZero := htrace RatioOrbit.zero
304 have htraceRat : a + a⁻¹ = 1 := by
305 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
306 RatioOrbit.recip_toRat, zeroSpikeDoubledTrace_zero,
307 RatioOrbit.one_toRat] at htraceZero
308 exact htraceZero
309 have haHalf : a = (1 / 2 : ℚ) := by
310 linarith
311 rw [haHalf] at hrecRat
312 norm_num at hrecRat
313
314theorem PRCDoubledTraceCoherentRootTarget_refuted :
315 ¬ PRCDoubledTraceCoherentRootTarget := by
316 intro hroot
317 exact zeroSpikeDoubledTrace_no_ratio_character_trace
318 (hroot zeroSpikeDoubledTrace zeroSpikeDoubledTrace_hypotheses)
319
320/-- Missing zero-orbit compatibility for doubled traces. The nonzero
321d'Alembert law cannot constrain `T(0)`, but character traces with the intended
322zero image have doubled trace `0` at the zero orbit. -/
323def PRCDoubledTraceZeroCalibrated (T : RatioOrbit → RatioOrbit) : Prop :=
324 RatioOrbit.crossEq (T RatioOrbit.zero) RatioOrbit.zero
325
326theorem zeroSpikeDoubledTrace_not_zero_calibrated :
327 ¬ PRCDoubledTraceZeroCalibrated zeroSpikeDoubledTrace := by
328 intro h
329 rw [PRCDoubledTraceZeroCalibrated, RatioOrbit.crossEq_iff_toRat_eq,
330 zeroSpikeDoubledTrace_zero, RatioOrbit.one_toRat,
331 RatioOrbit.zero_toRat] at h
332 norm_num at h
333
334/-- Repaired coherent-root target after the zero-spike no-go. -/
335def PRCDoubledTraceZeroCalibratedCoherentRootTarget : Prop :=
336 ∀ T : RatioOrbit → RatioOrbit,
337 PRCDoubledTraceHypotheses T →
338 PRCDoubledTraceZeroCalibrated T →
339 ∃ χ : RatioOrbit → RatioOrbit,
340 PRCRatioCharacter χ ∧
341 ∀ q : RatioOrbit,
342 RatioOrbit.crossEq
343 (RatioOrbit.add (χ q) (RatioOrbit.recip (χ q)))
344 (T q)
345
346/-- The denominator `3` appearing in the linear root extraction
347`χ(q) = (2*T(2q)-T(q))/3`. -/
348def traceRootDenominator : RatioOrbit :=
349 RatioOrbit.add two RatioOrbit.one
350
351@[simp] theorem traceRootDenominator_toRat :
352 traceRootDenominator.toRat = 3 := by
353 rw [traceRootDenominator, RatioOrbit.add_toRat, two_toRat,
354 RatioOrbit.one_toRat]
355 norm_num
356
357/-- Linear root candidate forced by the split trace at the distinguished
358axis `2`: if `T(q)=χ(q)+χ(q)⁻¹` and `χ(2)=2`, then
359`χ(q) = (2*T(2q)-T(q))/3`. The zero case is supplied by the repaired
360zero-calibration field. -/
361def traceRootCandidate (T : RatioOrbit → RatioOrbit) (q : RatioOrbit) :
362 RatioOrbit :=
363 if q.toRat = 0 then
364 RatioOrbit.zero
365 else
366 RatioOrbit.mul
367 (RatioOrbit.sub
368 (RatioOrbit.mul two (T (RatioOrbit.mul two q)))
369 (T q))
370 (RatioOrbit.recip traceRootDenominator)
371
372theorem traceRootCandidate_zero (T : RatioOrbit → RatioOrbit) :
373 traceRootCandidate T RatioOrbit.zero = RatioOrbit.zero := by
374 rw [traceRootCandidate, if_pos RatioOrbit.zero_toRat]
375
376theorem traceRootCandidate_toRat_of_nonzero
377 (T : RatioOrbit → RatioOrbit) {q : RatioOrbit} (hq : q.toRat ≠ 0) :
378 (traceRootCandidate T q).toRat =
379 (2 * (T (RatioOrbit.mul two q)).toRat - (T q).toRat) / 3 := by
380 rw [traceRootCandidate, if_neg hq]
381 rw [RatioOrbit.mul_toRat, RatioOrbit.sub_toRat, RatioOrbit.mul_toRat,
382 two_toRat, RatioOrbit.recip_toRat, traceRootDenominator_toRat]
383 norm_num
384 ring
385
386/-- Exact linear-root version of the repaired doubled-trace root problem. -/
387def PRCDoubledTraceLinearRootCandidateWorks
388 (T : RatioOrbit → RatioOrbit) : Prop :=
389 PRCRatioCharacter (traceRootCandidate T) ∧
390 ∀ q : RatioOrbit,
391 RatioOrbit.crossEq
392 (RatioOrbit.add
393 (traceRootCandidate T q)
394 (RatioOrbit.recip (traceRootCandidate T q)))
395 (T q)
396
397def PRCDoubledTraceZeroCalibratedLinearRootTarget : Prop :=
398 ∀ T : RatioOrbit → RatioOrbit,
399 PRCDoubledTraceHypotheses T →
400 PRCDoubledTraceZeroCalibrated T →
401 PRCDoubledTraceLinearRootCandidateWorks T
402
403theorem PRCDoubledTraceZeroCalibratedCoherentRootTarget_of_linear_root
404 (hlinear : PRCDoubledTraceZeroCalibratedLinearRootTarget) :
405 PRCDoubledTraceZeroCalibratedCoherentRootTarget := by
406 intro T hT hzero
407 rcases hlinear T hT hzero with ⟨hχ, htrace⟩
408 exact ⟨traceRootCandidate T, hχ, htrace⟩
409
410theorem PRCNativeCostCharacterTraceLiftTarget_of_doubled_trace_coherent_root
411 (hroot : PRCDoubledTraceCoherentRootTarget) :
412 PRCNativeCostCharacterTraceLiftTarget := by
413 intro F hF
414 rcases hroot (nativeCostDoubledTrace F)
415 (nativeCostDoubledTrace_hypotheses_of_native_cost_hypotheses hF) with
416 ⟨χ, hχ, hχtrace⟩
417 exact ⟨χ, hχ, hχtrace⟩
418
419/-- First exact blocker: every admissible PRC-native RCL cost should factor
420through a ratio character. This is the discrete d'Alembert factorization step. -/
421def PRCNativeCostCharacterFactorizationTarget : Prop :=
422 ∀ F : RatioOrbit → RatioOrbit,
423 PRCNativeCostHypotheses F →
424 ∃ χ : RatioOrbit → RatioOrbit,
425 PRCRatioCharacter χ ∧
426 ∀ q : RatioOrbit,
427 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
428
429theorem PRCNativeCostCharacterTraceLiftTarget_of_factorization
430 (hfactor : PRCNativeCostCharacterFactorizationTarget) :
431 PRCNativeCostCharacterTraceLiftTarget := by
432 intro F hF
433 rcases hfactor F hF with ⟨χ, hχ, hcost⟩
434 exact ⟨χ, hχ, PRCCharacterTraceMatchesCost_of_cost_crossEq hcost⟩
435
436theorem PRCNativeCostCharacterFactorizationTarget_of_trace_lift
437 (htrace : PRCNativeCostCharacterTraceLiftTarget) :
438 PRCNativeCostCharacterFactorizationTarget := by
439 intro F hF
440 rcases htrace F hF with ⟨χ, hχ, hχtrace⟩
441 exact ⟨χ, hχ, cost_crossEq_of_PRCCharacterTraceMatchesCost hχtrace⟩
442
443theorem PRCNativeCostCharacterFactorizationTarget_of_doubled_trace_coherent_root
444 (hroot : PRCDoubledTraceCoherentRootTarget) :
445 PRCNativeCostCharacterFactorizationTarget :=
446 PRCNativeCostCharacterFactorizationTarget_of_trace_lift
447 (PRCNativeCostCharacterTraceLiftTarget_of_doubled_trace_coherent_root hroot)
448
449theorem PRCNativeCostCharacterFactorizationTarget_iff_trace_lift :
450 PRCNativeCostCharacterFactorizationTarget ↔
451 PRCNativeCostCharacterTraceLiftTarget := by
452 constructor
453 · exact PRCNativeCostCharacterTraceLiftTarget_of_factorization
454 · exact PRCNativeCostCharacterFactorizationTarget_of_trace_lift
455
456/-- Second exact blocker: a calibrated rational character cost must be the
457canonical identity-character cost. This is where prime-direction freedom has
458to be eliminated. -/
459def PRCNativeCostCharacterRigidityTarget : Prop :=
460 ∀ χ : RatioOrbit → RatioOrbit,
461 PRCRatioCharacter χ →
462 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) →
463 ∀ q : RatioOrbit,
464 RatioOrbit.crossEq (costFromCharacter χ q) (onRatioOrbit q)
465
466/-- The ratio direction associated to a nonzero orbit position. -/
467def orbitDirection (p : DistinctionNat) (_hp : p ≠ DistinctionNat.zero) :
468 RatioOrbit where
469 num := SignedOrbit.ofOrbit p
470 den := DistinctionNat.one
471 den_ne_zero := DistinctionNat.one_ne_zero
472
473/-- The ratio direction associated to a native prime orbit. -/
474def primeDirection (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
475 RatioOrbit :=
476 orbitDirection p hp.1
477
478/-- A ratio character is calibrated on every native prime direction when its
479generated cost agrees with canonical J-cost on each prime orbit. -/
480def PRCCharacterPrimeDirectionCalibrated
481 (χ : RatioOrbit → RatioOrbit) : Prop :=
482 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
483 RatioOrbit.crossEq
484 (costFromCharacter χ (primeDirection p hp))
485 (onRatioOrbit (primeDirection p hp))
486
487/-- Sharper target A: the two-point calibration at orbit `2` must force
488calibration on every prime direction. This is the exact place where the present
489surface lacks control of independent prime axes. -/
490def PRCTwoCalibrationForcesPrimeCalibrationTarget : Prop :=
491 ∀ χ : RatioOrbit → RatioOrbit,
492 PRCRatioCharacter χ →
493 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) →
494 PRCCharacterPrimeDirectionCalibrated χ
495
496/-- Sharper target B: once every prime direction is calibrated, the character
497cost propagates to every rational direction. This is the unique-factorization
498side of the rigidity problem. -/
499def PRCPrimeCalibrationPropagationTarget : Prop :=
500 ∀ χ : RatioOrbit → RatioOrbit,
501 PRCRatioCharacter χ →
502 PRCCharacterPrimeDirectionCalibrated χ →
503 ∀ q : RatioOrbit,
504 RatioOrbit.crossEq (costFromCharacter χ q) (onRatioOrbit q)
505
506theorem onRatioOrbit_congr {a b : RatioOrbit}
507 (h : RatioOrbit.crossEq a b) :
508 RatioOrbit.crossEq (onRatioOrbit a) (onRatioOrbit b) := by
509 rw [RatioOrbit.crossEq_iff_toRat_eq] at h ⊢
510 rw [onRatioOrbit_toRat, onRatioOrbit_toRat, h]
511
512theorem jcost_eq_forces_same_or_reciprocal {a b : RatioOrbit}
513 (ha : a.toRat ≠ 0) (hb : b.toRat ≠ 0)
514 (h : RatioOrbit.crossEq (onRatioOrbit a) (onRatioOrbit b)) :
515 RatioOrbit.crossEq a b ∨
516 RatioOrbit.crossEq a (RatioOrbit.recip b) := by
517 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
518 rw [onRatioOrbit_toRat, onRatioOrbit_toRat] at h
519 rw [RatioOrbit.crossEq_iff_toRat_eq,
520 RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat]
521 have hsum : a.toRat + a.toRat⁻¹ = b.toRat + b.toRat⁻¹ := by
522 linarith
523 have hprod :
524 (a.toRat - b.toRat) * (a.toRat * b.toRat - 1) = 0 := by
525 have hmul :=
526 congrArg (fun t : ℚ => t * (a.toRat * b.toRat)) hsum
527 field_simp [ha, hb] at hmul
528 ring_nf at hmul ⊢
529 linarith
530 rcases mul_eq_zero.mp hprod with hsame | hrec
531 · left
532 linarith
533 · right
534 have hmul : a.toRat * b.toRat = 1 := by
535 linarith
536 have hb_inv : b.toRat * b.toRat⁻¹ = 1 := by
537 field_simp [hb]
538 calc
539 a.toRat = a.toRat * (b.toRat * b.toRat⁻¹) := by
540 rw [hb_inv, mul_one]
541 _ = (a.toRat * b.toRat) * b.toRat⁻¹ := by
542 ring
543 _ = b.toRat⁻¹ := by
544 rw [hmul, one_mul]
545
546theorem primeDirection_toRat_ne_zero
547 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
548 (primeDirection p hp).toRat ≠ 0 := by
549 have hpNat : p.toNat ≠ 0 := by
550 intro hzero
551 apply hp.1
552 apply DistinctionNat.toNat_inj
553 rw [hzero, DistinctionNat.toNat_zero]
554 unfold primeDirection orbitDirection RatioOrbit.toRat
555 simp [SignedOrbit.ofOrbit_toInt, DistinctionNat.one_toNat, hpNat]
556
557theorem primeDirection_toRat
558 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
559 (primeDirection p hp).toRat = (p.toNat : ℚ) := by
560 unfold primeDirection orbitDirection RatioOrbit.toRat
561 simp [SignedOrbit.ofOrbit_toInt, DistinctionNat.one_toNat]
562
563theorem twoOrbit_primeOrbit :
564 DistinctionNat.primeOrbit twoOrbit := by
565 rw [DistinctionNat.primeOrbit_iff_toNat_no_nontrivial_factor]
566 constructor
567 · rw [twoOrbit_toNat]
568 norm_num
569 · constructor
570 · rw [twoOrbit_toNat]
571 norm_num
572 · intro hfac
573 rcases hfac with ⟨a, b, _ha0, _hb0, ha1, hb1, hmul⟩
574 have hprime : Nat.Prime 2 := by decide
575 have hmul2 : a * b = 2 := by
576 simpa [twoOrbit_toNat] using hmul
577 have hadvd : a ∣ 2 := ⟨b, hmul2.symm⟩
578 rcases hprime.eq_one_or_self_of_dvd a hadvd with ha | ha
579 · exact ha1 ha
580 · have hb : b = 1 := by
581 rw [ha] at hmul2
582 omega
583 exact hb1 hb
584
585/-- The three-step orbit position, used as the canonical non-`2` prime witness. -/
586def threeOrbit : DistinctionNat :=
587 DistinctionNat.succ twoOrbit
588
589@[simp] theorem threeOrbit_toNat :
590 threeOrbit.toNat = 3 := by
591 unfold threeOrbit
592 rw [DistinctionNat.toNat_succ, twoOrbit_toNat]
593
594theorem threeOrbit_primeOrbit :
595 DistinctionNat.primeOrbit threeOrbit := by
596 rw [DistinctionNat.primeOrbit_iff_toNat_no_nontrivial_factor]
597 constructor
598 · rw [threeOrbit_toNat]
599 norm_num
600 · constructor
601 · rw [threeOrbit_toNat]
602 norm_num
603 · intro hfac
604 rcases hfac with ⟨a, b, _ha0, _hb0, ha1, hb1, hmul⟩
605 have hprime : Nat.Prime 3 := by decide
606 have hmul3 : a * b = 3 := by
607 simpa [threeOrbit_toNat] using hmul
608 have hadvd : a ∣ 3 := ⟨b, hmul3.symm⟩
609 rcases hprime.eq_one_or_self_of_dvd a hadvd with ha | ha
610 · exact ha1 ha
611 · have hb : b = 1 := by
612 rw [ha] at hmul3
613 omega
614 exact hb1 hb
615
616theorem threeOrbit_ne_twoOrbit :
617 threeOrbit ≠ twoOrbit := by
618 intro h
619 have hnat := congrArg DistinctionNat.toNat h
620 rw [threeOrbit_toNat, twoOrbit_toNat] at hnat
621 norm_num at hnat
622
623theorem orbitDirection_toRat
624 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero) :
625 (orbitDirection p hp).toRat = (p.toNat : ℚ) := by
626 unfold orbitDirection RatioOrbit.toRat
627 simp [SignedOrbit.ofOrbit_toInt, DistinctionNat.one_toNat]
628
629theorem primeDirection_not_crossEq_recip
630 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
631 ¬ RatioOrbit.crossEq
632 (primeDirection p hp)
633 (RatioOrbit.recip (primeDirection p hp)) := by
634 intro h
635 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
636 primeDirection_toRat] at h
637 have hpNat0 : p.toNat ≠ 0 := by
638 intro hzero
639 apply hp.1
640 apply DistinctionNat.toNat_inj
641 rw [hzero, DistinctionNat.toNat_zero]
642 have hpNatQ0 : (p.toNat : ℚ) ≠ 0 := by
643 exact_mod_cast hpNat0
644 have hsqQ : (p.toNat : ℚ) * (p.toNat : ℚ) = 1 := by
645 have hmul := congrArg (fun t : ℚ => t * (p.toNat : ℚ)) h
646 field_simp [hpNatQ0] at hmul
647 ring_nf at hmul ⊢
648 exact hmul
649 have hsqNat : p.toNat * p.toNat = 1 := by
650 exact_mod_cast hsqQ
651 have hle : p.toNat ≤ 1 := by
652 by_contra hnot
653 have hge : 2 ≤ p.toNat := by omega
654 have hprodge : 2 ≤ p.toNat * p.toNat := by
655 calc
656 2 ≤ 2 * 2 := by norm_num
657 _ ≤ p.toNat * p.toNat := Nat.mul_le_mul hge hge
658 omega
659 have hpOne : p.toNat = 1 := by omega
660 exact hp.2.1 ((DistinctionNat.unit_iff_toNat_eq_one p).mpr hpOne)
661
662theorem orbitDirection_nonunit_not_crossEq_recip
663 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero)
664 (hunit : ¬ DistinctionNat.unit p) :
665 ¬ RatioOrbit.crossEq
666 (orbitDirection p hp)
667 (RatioOrbit.recip (orbitDirection p hp)) := by
668 intro h
669 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
670 orbitDirection_toRat] at h
671 have hpNat0 : p.toNat ≠ 0 := by
672 intro hzero
673 apply hp
674 apply DistinctionNat.toNat_inj
675 rw [hzero, DistinctionNat.toNat_zero]
676 have hpNatQ0 : (p.toNat : ℚ) ≠ 0 := by
677 exact_mod_cast hpNat0
678 have hsqQ : (p.toNat : ℚ) * (p.toNat : ℚ) = 1 := by
679 have hmul := congrArg (fun t : ℚ => t * (p.toNat : ℚ)) h
680 field_simp [hpNatQ0] at hmul
681 ring_nf at hmul ⊢
682 exact hmul
683 have hsqNat : p.toNat * p.toNat = 1 := by
684 exact_mod_cast hsqQ
685 have hle : p.toNat ≤ 1 := by
686 by_contra hnot
687 have hge : 2 ≤ p.toNat := by omega
688 have hprodge : 2 ≤ p.toNat * p.toNat := by
689 calc
690 2 ≤ 2 * 2 := by norm_num
691 _ ≤ p.toNat * p.toNat := Nat.mul_le_mul hge hge
692 omega
693 have hpOne : p.toNat = 1 := by omega
694 exact hunit ((DistinctionNat.unit_iff_toNat_eq_one p).mpr hpOne)
695
696theorem orbit_succ_ne_zero (p : DistinctionNat) :
697 DistinctionNat.succ p ≠ DistinctionNat.zero := by
698 intro h
699 exact DistinctionNat.zero_ne_succ p h.symm
700
701theorem orbitDirection_succ_crossEq_add_one
702 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero) :
703 RatioOrbit.crossEq
704 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))
705 (RatioOrbit.add (orbitDirection p hp) RatioOrbit.one) := by
706 rw [RatioOrbit.crossEq_iff_toRat_eq]
707 rw [RatioOrbit.add_toRat, RatioOrbit.one_toRat,
708 orbitDirection_toRat, orbitDirection_toRat, DistinctionNat.toNat_succ]
709 norm_num
710
711theorem RatioOrbit.add_right_one_cancel {a b : RatioOrbit}
712 (h : RatioOrbit.crossEq
713 (RatioOrbit.add a RatioOrbit.one)
714 (RatioOrbit.add b RatioOrbit.one)) :
715 RatioOrbit.crossEq a b := by
716 rw [RatioOrbit.crossEq_iff_toRat_eq] at h ⊢
717 rw [RatioOrbit.add_toRat, RatioOrbit.add_toRat, RatioOrbit.one_toRat] at h
718 linarith
719
720/-- Native trace carried by an orbit position, defined by recursion on the
721δ-orbit rather than by importing verifier `Nat` as object theory. -/
722def orbitPositionTrace : DistinctionNat → Trace
723 | DistinctionNat.zero => Trace.empty
724 | DistinctionNat.succ n => Trace.step (orbitPositionTrace n)
725
726theorem orbitPositionTrace_add_extends_left
727 (p r : DistinctionNat) :
728 Trace.Extends (orbitPositionTrace p) (orbitPositionTrace (p + r)) := by
729 induction r with
730 | zero =>
731 rw [DistinctionNat.add_zero_eq]
732 exact Trace.extends_refl (orbitPositionTrace p)
733 | succ r ih =>
734 rw [DistinctionNat.add_succ_eq]
735 rcases ih with ⟨suffix, hsuffix⟩
736 refine ⟨Trace.step suffix, ?_⟩
737 simp [Trace.step, orbitPositionTrace, hsuffix]
738
739theorem orbitPositionTrace_add_extends_right
740 (p r : DistinctionNat) :
741 Trace.Extends (orbitPositionTrace r) (orbitPositionTrace (p + r)) := by
742 rw [DistinctionNat.add_comm p r]
743 exact orbitPositionTrace_add_extends_left r p
744
745theorem orbitPositionTrace_extends_of_toNat_le
746 {p r : DistinctionNat} (hpr : p.toNat ≤ r.toNat) :
747 Trace.Extends (orbitPositionTrace p) (orbitPositionTrace r) := by
748 let k : DistinctionNat := DistinctionNat.ofNat (r.toNat - p.toNat)
749 have hsum : p + k = r := by
750 apply DistinctionNat.toNat_inj
751 rw [DistinctionNat.toNat_add, DistinctionNat.toNat_ofNat]
752 omega
753 rw [← hsum]
754 exact orbitPositionTrace_add_extends_left p k
755
756theorem orbitPositionTrace_comparable
757 (p r : DistinctionNat) :
758 Trace.Extends (orbitPositionTrace p) (orbitPositionTrace r) ∨
759 Trace.Extends (orbitPositionTrace r) (orbitPositionTrace p) := by
760 by_cases hpr : p.toNat ≤ r.toNat
761 · exact Or.inl (orbitPositionTrace_extends_of_toNat_le hpr)
762 · have hrp : r.toNat ≤ p.toNat := by omega
763 exact Or.inr (orbitPositionTrace_extends_of_toNat_le hrp)
764
765/-- Two prime axes are trace-connected when their native orbit traces admit a
766common finite δ-extension. -/
767def PRCPrimeAxisTraceConnected
768 (p : DistinctionNat) (_hp : DistinctionNat.primeOrbit p)
769 (r : DistinctionNat) (_hr : DistinctionNat.primeOrbit r) : Prop :=
770 ∃ T : Trace,
771 Trace.Extends (orbitPositionTrace p) T ∧
772 Trace.Extends (orbitPositionTrace r) T
773
774theorem PRCPrimeAxisTraceConnected_proved
775 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p)
776 (r : DistinctionNat) (hr : DistinctionNat.primeOrbit r) :
777 PRCPrimeAxisTraceConnected p hp r hr := by
778 exact ⟨orbitPositionTrace (p + r),
779 orbitPositionTrace_add_extends_left p r,
780 orbitPositionTrace_add_extends_right p r⟩
781
782/-- A character has global cost orientation when every rational direction is
783sent either to itself or to its reciprocal. Since J-cost is reciprocal-symmetric,
784this is exactly the orientation information needed for cost propagation. -/
785def PRCCharacterGlobalCostOrientation
786 (χ : RatioOrbit → RatioOrbit) : Prop :=
787 ∀ q : RatioOrbit,
788 RatioOrbit.crossEq (χ q) q ∨
789 RatioOrbit.crossEq (χ q) (RatioOrbit.recip q)
790
791/-- Sharper propagation blocker: prime calibration must force a coherent global
792orientation. Without this, independent prime inversions can preserve prime
793costs while breaking composite costs. -/
794def PRCPrimeCalibrationForcesGlobalOrientationTarget : Prop :=
795 ∀ χ : RatioOrbit → RatioOrbit,
796 PRCRatioCharacter χ →
797 PRCCharacterPrimeDirectionCalibrated χ →
798 PRCCharacterGlobalCostOrientation χ
799
800/-- Prime-axis orientation is coherent when the character chooses the same
801orientation on every native prime direction: all identity or all reciprocal. -/
802def PRCCharacterPrimeOrientationCoherent
803 (χ : RatioOrbit → RatioOrbit) : Prop :=
804 (∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
805 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) ∨
806 (∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
807 RatioOrbit.crossEq (χ (primeDirection p hp))
808 (RatioOrbit.recip (primeDirection p hp)))
809
810def twoPrimeDirection : RatioOrbit :=
811 primeDirection twoOrbit twoOrbit_primeOrbit
812
813@[simp] theorem twoPrimeDirection_toRat :
814 twoPrimeDirection.toRat = 2 := by
815 unfold twoPrimeDirection
816 rw [primeDirection_toRat, twoOrbit_toNat]
817 norm_num
818
819/-- Distinguished-prime branch control: once the branch at orbit `2` is known,
820the same branch holds on every native prime axis. This is the one-axis version
821of coherent prime orientation. -/
822def PRCCharacterTwoPrimeBranchControlsPrimes
823 (χ : RatioOrbit → RatioOrbit) : Prop :=
824 (RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection →
825 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
826 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) ∧
827 (RatioOrbit.crossEq (χ twoPrimeDirection)
828 (RatioOrbit.recip twoPrimeDirection) →
829 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
830 RatioOrbit.crossEq (χ (primeDirection p hp))
831 (RatioOrbit.recip (primeDirection p hp)))
832
833/-- Identity-iff-two normal form: identity orientation on a native prime axis is
834equivalent to identity orientation on the distinguished orbit-`2` prime axis. -/
835def PRCCharacterPrimeIdentityIffTwoPrimeIdentity
836 (χ : RatioOrbit → RatioOrbit) : Prop :=
837 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
838 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ↔
839 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection
840
841/-- One-sided normal form: identity at any calibrated prime axis forces
842identity at the distinguished orbit-`2` prime axis. The reverse implication is
843recovered at target level by applying the same statement to the reciprocal twist
844of the character. -/
845def PRCCharacterPrimeIdentityForcesTwoPrimeIdentity
846 (χ : RatioOrbit → RatioOrbit) : Prop :=
847 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
848 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
849 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection
850
851/-- Contrapositive branch normal form: if the distinguished orbit-`2` prime axis
852is reciprocal-oriented, no native prime axis may be identity-oriented. -/
853def PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity
854 (χ : RatioOrbit → RatioOrbit) : Prop :=
855 RatioOrbit.crossEq (χ twoPrimeDirection)
856 (RatioOrbit.recip twoPrimeDirection) →
857 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
858 ¬ RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
859
860/-- Witness form of the orbit-`2` branch obstruction: reciprocal orientation at
861the distinguished prime axis cannot coexist with even one identity-oriented
862native prime witness. This is the atomic two-specific mixed-witness blocker. -/
863def PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness
864 (χ : RatioOrbit → RatioOrbit) : Prop :=
865 RatioOrbit.crossEq (χ twoPrimeDirection)
866 (RatioOrbit.recip twoPrimeDirection) →
867 (∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
868 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) →
869 False
870
871/-- The exact mixed branch configuration that would refute the orbit-`2`
872witness exclusion: the distinguished prime axis is reciprocal-oriented while
873some native prime axis remains identity-oriented. -/
874def PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed
875 (χ : RatioOrbit → RatioOrbit) : Prop :=
876 RatioOrbit.crossEq (χ twoPrimeDirection)
877 (RatioOrbit.recip twoPrimeDirection) ∧
878 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
879 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
880
881/-- Sharpened mixed branch configuration: the identity-oriented native prime
882witness is explicitly not the distinguished orbit-`2` axis. -/
883def PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed
884 (χ : RatioOrbit → RatioOrbit) : Prop :=
885 RatioOrbit.crossEq (χ twoPrimeDirection)
886 (RatioOrbit.recip twoPrimeDirection) ∧
887 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
888 p ≠ twoOrbit ∧
889 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
890
891/-- Concrete two-adic axis-twist form: orbit `2` is reciprocal-oriented while
892every native prime axis other than `2` is identity-oriented. This is the obvious
893countermodel one would construct from a native two-adic valuation. -/
894def PRCCharacterTwoAdicAxisTwist
895 (χ : RatioOrbit → RatioOrbit) : Prop :=
896 RatioOrbit.crossEq (χ twoPrimeDirection)
897 (RatioOrbit.recip twoPrimeDirection) ∧
898 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
899 p ≠ twoOrbit →
900 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
901
902/-- Uncalibrated construction target for the two-adic axis twist. Pass 115 proves
903the prime-calibration field is automatic once this branch behavior is carried by
904a ratio character. -/
905def PRCTwoAdicAxisTwistRatioCharacter : Prop :=
906 ∃ χ : RatioOrbit → RatioOrbit,
907 PRCRatioCharacter χ ∧
908 PRCCharacterTwoAdicAxisTwist χ
909
910/-- Verifier-backed section from rationals to ratio orbits. This is deliberately
911not a new PRC primitive; it is used to test whether the current character
912interface already admits a classical rational countermodel. -/
913def ratioOrbitOfRat (x : ℚ) : RatioOrbit where
914 num := ⟨DistinctionNat.ofNat x.num.toNat,
915 DistinctionNat.ofNat (-x.num).toNat⟩
916 den := DistinctionNat.ofNat x.den
917 den_ne_zero := by
918 intro h
919 have hnat := congrArg DistinctionNat.toNat h
920 rw [DistinctionNat.toNat_ofNat, DistinctionNat.toNat_zero] at hnat
921 exact x.den_nz hnat
922
923theorem ratioOrbitOfRat_toRat (x : ℚ) :
924 (ratioOrbitOfRat x).toRat = x := by
925 unfold ratioOrbitOfRat RatioOrbit.toRat SignedOrbit.toInt
926 rw [DistinctionNat.toNat_ofNat, DistinctionNat.toNat_ofNat,
927 DistinctionNat.toNat_ofNat]
928 have hnum :
929 ((x.num.toNat : ℕ) : ℤ) - (((-x.num).toNat : ℕ) : ℤ) =
930 x.num := by
931 omega
932 rw [hnum]
933 exact Rat.num_div_den x
934
935/-- The ratio-orbit display of `-1`, used to expose the missing signed-unit
936calibration in prime-to-global orientation propagation. -/
937noncomputable def negativeOneRatio : RatioOrbit :=
938 ratioOrbitOfRat (-1)
939
940@[simp] theorem negativeOneRatio_toRat :
941 negativeOneRatio.toRat = -1 := by
942 rw [negativeOneRatio, ratioOrbitOfRat_toRat]
943
944/-- A character is calibrated on the signed unit when it fixes the ratio orbit
945`-1`. Prime-direction data alone cannot force this. -/
946def PRCCharacterSignedUnitCalibrated
947 (χ : RatioOrbit → RatioOrbit) : Prop :=
948 RatioOrbit.crossEq (χ negativeOneRatio) negativeOneRatio
949
950/-- Exact signed-ratio decomposition needed after pass 279: every nonzero raw
951ratio is either a positive orbit numerator times the reciprocal denominator, or
952the signed unit times such a positive ratio. -/
953def PRCSignedRatioDecompositionTarget : Prop :=
954 ∀ q : RatioOrbit,
955 q.toRat ≠ 0 →
956 (∃ n d : DistinctionNat,
957 ∃ hn : n ≠ DistinctionNat.zero,
958 ∃ hd : d ≠ DistinctionNat.zero,
959 RatioOrbit.crossEq q
960 (RatioOrbit.mul (orbitDirection n hn)
961 (RatioOrbit.recip (orbitDirection d hd)))) ∨
962 (∃ n d : DistinctionNat,
963 ∃ hn : n ≠ DistinctionNat.zero,
964 ∃ hd : d ≠ DistinctionNat.zero,
965 RatioOrbit.crossEq q
966 (RatioOrbit.mul negativeOneRatio
967 (RatioOrbit.mul (orbitDirection n hn)
968 (RatioOrbit.recip (orbitDirection d hd)))))
969
970theorem PRCSignedRatioDecompositionTarget_proved :
971 PRCSignedRatioDecompositionTarget := by
972 intro q hq
973 have hnumInt : q.num.toInt ≠ 0 := by
974 intro hzero
975 apply hq
976 unfold RatioOrbit.toRat
977 rw [hzero]
978 norm_num
979 have hn : q.num.abs ≠ DistinctionNat.zero :=
980 SignedOrbit.abs_ne_zero_of_toInt_ne_zero hnumInt
981 by_cases hnonneg : q.num.nonnegFlag = true
982 · left
983 refine ⟨q.num.abs, q.den, hn, q.den_ne_zero, ?_⟩
984 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
985 RatioOrbit.recip_toRat, orbitDirection_toRat, orbitDirection_toRat]
986 unfold RatioOrbit.toRat
987 have habs : (q.num.abs.toNat : ℤ) = q.num.toInt := by
988 rw [SignedOrbit.abs_toNat]
989 exact Int.ofNat_natAbs_of_nonneg
990 ((SignedOrbit.nonnegFlag_eq_true_iff q.num).mp hnonneg)
991 have hden : (q.den.toNat : ℚ) ≠ 0 := q.den_cast_ne_zero
992 rw [show ((q.num.abs.toNat : ℚ) : ℚ) =
993 ((q.num.toInt : ℤ) : ℚ) by exact_mod_cast habs]
994 field_simp [hden]
995 · right
996 have hflagFalse : q.num.nonnegFlag = false := by
997 cases hflag : q.num.nonnegFlag with
998 | false => rfl
999 | true =>
1000 exfalso
1001 exact hnonneg hflag
1002 refine ⟨q.num.abs, q.den, hn, q.den_ne_zero, ?_⟩
1003 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
1004 negativeOneRatio_toRat, RatioOrbit.mul_toRat, RatioOrbit.recip_toRat,
1005 orbitDirection_toRat, orbitDirection_toRat]
1006 unfold RatioOrbit.toRat
1007 have hneg : q.num.toInt < 0 :=
1008 (SignedOrbit.nonnegFlag_eq_false_iff q.num).mp hflagFalse
1009 have habs : (q.num.abs.toNat : ℤ) = -q.num.toInt := by
1010 rw [SignedOrbit.abs_toNat]
1011 exact Int.ofNat_natAbs_of_nonpos (le_of_lt hneg)
1012 have hden : (q.den.toNat : ℚ) ≠ 0 := q.den_cast_ne_zero
1013 rw [show ((q.num.abs.toNat : ℚ) : ℚ) =
1014 (-q.num.toInt : ℤ) by exact_mod_cast habs]
1015 field_simp [hden]
1016 norm_num
1017
1018/-- Absolute-value character on verifier rational displays. It is a quotient
1019respecting ratio character, but it erases the sign of `-1`. -/
1020noncomputable def absValueCharacter (q : RatioOrbit) : RatioOrbit :=
1021 ratioOrbitOfRat |q.toRat|
1022
1023@[simp] theorem absValueCharacter_toRat (q : RatioOrbit) :
1024 (absValueCharacter q).toRat = |q.toRat| := by
1025 rw [absValueCharacter, ratioOrbitOfRat_toRat]
1026
1027theorem absValueCharacter_ratio_character :
1028 PRCRatioCharacter absValueCharacter where
1029 unit := by
1030 rw [RatioOrbit.crossEq_iff_toRat_eq, absValueCharacter_toRat,
1031 RatioOrbit.one_toRat]
1032 norm_num
1033 multiplicative := by
1034 intro x y
1035 rw [RatioOrbit.crossEq_iff_toRat_eq]
1036 simp [absValueCharacter_toRat, RatioOrbit.mul_toRat, abs_mul]
1037 reciprocal := by
1038 intro q
1039 rw [RatioOrbit.crossEq_iff_toRat_eq]
1040 simp [absValueCharacter_toRat, RatioOrbit.recip_toRat, abs_inv]
1041 normalized_invariant := by
1042 intro q
1043 rw [RatioOrbit.crossEq_iff_toRat_eq, absValueCharacter_toRat,
1044 absValueCharacter_toRat, DistinctionNat.normalizeRatio_toRat]
1045 nonzero_preserving := by
1046 intro q hq
1047 rw [absValueCharacter_toRat]
1048 exact abs_ne_zero.mpr hq
1049
1050theorem absValueCharacter_prime_identity :
1051 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
1052 RatioOrbit.crossEq (absValueCharacter (primeDirection p hp))
1053 (primeDirection p hp) := by
1054 intro p hp
1055 rw [RatioOrbit.crossEq_iff_toRat_eq, absValueCharacter_toRat,
1056 primeDirection_toRat]
1057 exact abs_of_nonneg (by exact_mod_cast Nat.zero_le p.toNat)
1058
1059theorem absValueCharacter_prime_orientation_coherent :
1060 PRCCharacterPrimeOrientationCoherent absValueCharacter :=
1061 Or.inl absValueCharacter_prime_identity
1062
1063theorem absValueCharacter_prime_calibrated :
1064 PRCCharacterPrimeDirectionCalibrated absValueCharacter := by
1065 intro p hp
1066 exact onRatioOrbit_congr (absValueCharacter_prime_identity p hp)
1067
1068theorem absValueCharacter_two_cost_calibrated :
1069 RatioOrbit.crossEq (costFromCharacter absValueCharacter two)
1070 (onRatioOrbit two) := by
1071 have hcost := absValueCharacter_prime_calibrated twoOrbit twoOrbit_primeOrbit
1072 simpa [twoPrimeDirection, primeDirection] using hcost
1073
1074theorem absValueCharacter_negative_one_cost_not_canonical :
1075 ¬ RatioOrbit.crossEq (costFromCharacter absValueCharacter negativeOneRatio)
1076 (onRatioOrbit negativeOneRatio) := by
1077 intro h
1078 rw [RatioOrbit.crossEq_iff_toRat_eq, costFromCharacter_toRat,
1079 absValueCharacter_toRat, onRatioOrbit_toRat, negativeOneRatio_toRat] at h
1080 norm_num at h
1081
1082theorem PRCNativeCostCharacterRigidityTarget_refuted :
1083 ¬ PRCNativeCostCharacterRigidityTarget := by
1084 intro hrigid
1085 exact absValueCharacter_negative_one_cost_not_canonical
1086 (hrigid absValueCharacter absValueCharacter_ratio_character
1087 absValueCharacter_two_cost_calibrated negativeOneRatio)
1088
1089theorem absValueCharacter_not_signed_unit_calibrated :
1090 ¬ PRCCharacterSignedUnitCalibrated absValueCharacter := by
1091 intro hsign
1092 rw [PRCCharacterSignedUnitCalibrated, RatioOrbit.crossEq_iff_toRat_eq,
1093 absValueCharacter_toRat, negativeOneRatio_toRat] at hsign
1094 norm_num at hsign
1095
1096/-- Classical verifier two-adic branch twist on rational displays. It fixes the
1097odd-prime axes and inverts the orbit-`2` exponent. -/
1098noncomputable def twoAdicTwistRat (x : ℚ) : ℚ :=
1099 x * (2 : ℚ) ^ (-2 * padicValRat 2 x)
1100
1101theorem twoAdicTwistRat_one :
1102 twoAdicTwistRat 1 = 1 := by
1103 unfold twoAdicTwistRat
1104 have h : padicValRat 2 (1 : ℚ) = 0 := by
1105 norm_num [padicValRat.of_int, padicValInt.eq_zero_of_not_dvd]
1106 rw [h]
1107 norm_num
1108
1109theorem twoAdicTwistRat_mul (x y : ℚ) :
1110 twoAdicTwistRat (x * y) =
1111 twoAdicTwistRat x * twoAdicTwistRat y := by
1112 unfold twoAdicTwistRat
1113 by_cases hx : x = 0
1114 · simp [hx]
1115 · by_cases hy : y = 0
1116 · simp [hy]
1117 · rw [padicValRat.mul hx hy]
1118 have hbase : (2 : ℚ) ≠ 0 := by norm_num
1119 have hexp :
1120 -2 * (padicValRat 2 x + padicValRat 2 y) =
1121 (-2 * padicValRat 2 x) + (-2 * padicValRat 2 y) := by
1122 ring
1123 rw [hexp]
1124 rw [zpow_add₀ hbase]
1125 ring
1126
1127theorem twoAdicTwistRat_inv (x : ℚ) :
1128 twoAdicTwistRat x⁻¹ = (twoAdicTwistRat x)⁻¹ := by
1129 unfold twoAdicTwistRat
1130 by_cases hx : x = 0
1131 · simp [hx]
1132 · rw [padicValRat.inv]
1133 have hbase : (2 : ℚ) ≠ 0 := by norm_num
1134 have hxpow : (2 : ℚ) ^ (-2 * padicValRat 2 x) ≠ 0 :=
1135 zpow_ne_zero _ hbase
1136 have hexp :
1137 -2 * (-padicValRat 2 x) = -(-2 * padicValRat 2 x) := by
1138 ring
1139 rw [hexp, zpow_neg]
1140 field_simp [hx, hxpow]
1141
1142theorem twoAdicTwistRat_ne_zero {x : ℚ}
1143 (hx : x ≠ 0) :
1144 twoAdicTwistRat x ≠ 0 := by
1145 unfold twoAdicTwistRat
1146 have hbase : (2 : ℚ) ≠ 0 := by norm_num
1147 exact mul_ne_zero hx (zpow_ne_zero _ hbase)
1148
1149theorem twoAdicTwistRat_two :
1150 twoAdicTwistRat 2 = (2 : ℚ)⁻¹ := by
1151 unfold twoAdicTwistRat
1152 have h : padicValRat 2 (2 : ℚ) = 1 :=
1153 padicValRat.self (by norm_num : 1 < 2)
1154 rw [h]
1155 norm_num
1156
1157theorem padicValRat_two_primeDirection_eq_zero_of_ne_two
1158 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p)
1159 (hpne : p ≠ twoOrbit) :
1160 padicValRat 2 (primeDirection p hp).toRat = 0 := by
1161 rw [primeDirection_toRat]
1162 rw [show (p.toNat : ℚ) = ((p.toNat : ℤ) : ℚ) by norm_num]
1163 rw [padicValRat.of_int]
1164 have hInt : padicValInt 2 (p.toNat : ℤ) = 0 := by
1165 apply padicValInt.eq_zero_of_not_dvd
1166 intro hdivZ
1167 have hdivNat : 2 ∣ p.toNat := by
1168 exact_mod_cast hdivZ
1169 have hdivNat' : twoOrbit.toNat ∣ p.toNat := by
1170 rw [twoOrbit_toNat]
1171 exact hdivNat
1172 have hdiv : DistinctionNat.divides twoOrbit p :=
1173 (DistinctionNat.divides_iff_toNat_dvd twoOrbit p).mpr hdivNat'
1174 rcases DistinctionNat.unit_or_eq_of_divides_prime hp hdiv with hunit | heq
1175 · rw [DistinctionNat.unit_iff_toNat_eq_one, twoOrbit_toNat] at hunit
1176 norm_num at hunit
1177 · exact hpne heq.symm
1178 exact_mod_cast hInt
1179
1180theorem twoAdicTwistRat_primeDirection_of_ne_two
1181 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p)
1182 (hpne : p ≠ twoOrbit) :
1183 twoAdicTwistRat (primeDirection p hp).toRat =
1184 (primeDirection p hp).toRat := by
1185 unfold twoAdicTwistRat
1186 rw [padicValRat_two_primeDirection_eq_zero_of_ne_two hp hpne]
1187 norm_num
1188
1189/-- Ratio-orbit realization of the verifier two-adic branch twist. -/
1190noncomputable def twoAdicAxisTwistCharacter (q : RatioOrbit) : RatioOrbit :=
1191 ratioOrbitOfRat (twoAdicTwistRat q.toRat)
1192
1193theorem twoAdicAxisTwistCharacter_toRat (q : RatioOrbit) :
1194 (twoAdicAxisTwistCharacter q).toRat =
1195 twoAdicTwistRat q.toRat := by
1196 unfold twoAdicAxisTwistCharacter
1197 exact ratioOrbitOfRat_toRat _
1198
1199theorem twoAdicAxisTwistCharacter_ratio_character :
1200 PRCRatioCharacter twoAdicAxisTwistCharacter where
1201 unit := by
1202 rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat,
1203 RatioOrbit.one_toRat]
1204 exact twoAdicTwistRat_one
1205 multiplicative := by
1206 intro x y
1207 rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat,
1208 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat,
1209 twoAdicAxisTwistCharacter_toRat, twoAdicAxisTwistCharacter_toRat]
1210 exact twoAdicTwistRat_mul x.toRat y.toRat
1211 reciprocal := by
1212 intro x
1213 rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat,
1214 RatioOrbit.recip_toRat, RatioOrbit.recip_toRat,
1215 twoAdicAxisTwistCharacter_toRat]
1216 exact twoAdicTwistRat_inv x.toRat
1217 normalized_invariant := by
1218 intro q
1219 rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat,
1220 twoAdicAxisTwistCharacter_toRat, DistinctionNat.normalizeRatio_toRat]
1221 nonzero_preserving := by
1222 intro q hq
1223 rw [twoAdicAxisTwistCharacter_toRat]
1224 exact twoAdicTwistRat_ne_zero hq
1225
1226theorem twoAdicAxisTwistCharacter_branch :
1227 PRCCharacterTwoAdicAxisTwist twoAdicAxisTwistCharacter := by
1228 constructor
1229 · rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat,
1230 RatioOrbit.recip_toRat, twoPrimeDirection_toRat]
1231 exact twoAdicTwistRat_two
1232 · intro p hp hpne
1233 rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat]
1234 exact twoAdicTwistRat_primeDirection_of_ne_two hp hpne
1235
1236theorem PRCTwoAdicAxisTwistRatioCharacter_constructed :
1237 PRCTwoAdicAxisTwistRatioCharacter :=
1238 ⟨twoAdicAxisTwistCharacter,
1239 twoAdicAxisTwistCharacter_ratio_character,
1240 twoAdicAxisTwistCharacter_branch⟩
1241
1242/-- δ-native cost non-forcing (headline blocker, stated exactly).
1243
1244There is a PRC ratio character `χ` that fixes the orientation of every prime
1245axis except orbit `2`, yet inverts the orbit-`2` axis. Concretely `χ` is the
1246two-adic axis twist `x ↦ x · 2^(-2·v₂(x))`, which is reciprocal-symmetric,
1247multiplicative, normalized, and nonzero-preserving (a full `PRCRatioCharacter`),
1248identity-oriented on every odd prime, and reciprocal-oriented on `2`.
1249
1250Consequence: the δ-native reciprocal-character axioms together with identity
1251orientation on *every other prime* do not force identity orientation at `2`.
1252The multiplicative group of the rational carrier is free abelian on the prime
1253axes, so each axis carries an independent orientation choice. The canonical
1254reciprocal cost `J` is therefore underdetermined on the rational (`RatioOrbit`)
1255carrier: it is the all-identity orientation, but the all-identity choice is not
1256forced by the discrete arithmetic.
1257
1258This is the exact reason J-forcing requires the continuous completion. On
1259`(0,∞)` the calibration condition (a second derivative at the unit) plus
1260continuity propagate one curvature value along the connected line
1261(`IndisputableMonolith.Cost.FunctionalEquation.law_of_logic_forces_jcost`). The
1262discrete carrier has neither a derivative nor connectivity, so the per-prime
1263orientation freedom witnessed here survives. The forward repair is to derive the
1264unit calibration from the cost of a single δ act on the completion, not to pin
1265each prime axis by hypothesis. -/
1266theorem prc_native_cost_orientation_underdetermined :
1267 ∃ χ : RatioOrbit → RatioOrbit,
1268 PRCRatioCharacter χ ∧
1269 (∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
1270 p ≠ twoOrbit →
1271 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) ∧
1272 ¬ RatioOrbit.crossEq (twoAdicAxisTwistCharacter twoPrimeDirection)
1273 twoPrimeDirection := by
1274 refine ⟨twoAdicAxisTwistCharacter, twoAdicAxisTwistCharacter_ratio_character,
1275 twoAdicAxisTwistCharacter_branch.2, ?_⟩
1276 intro hId
1277 have hself :
1278 RatioOrbit.crossEq twoPrimeDirection
1279 (RatioOrbit.recip twoPrimeDirection) :=
1280 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hId)
1281 twoAdicAxisTwistCharacter_branch.1
1282 exact primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself
1283
1284/-- The canonical non-two prime direction used for the first concrete
1285two-adic mixed-composite test. -/
1286def threePrimeDirection : RatioOrbit :=
1287 primeDirection threeOrbit threeOrbit_primeOrbit
1288
1289@[simp] theorem threePrimeDirection_toRat :
1290 threePrimeDirection.toRat = 3 := by
1291 unfold threePrimeDirection
1292 rw [primeDirection_toRat, threeOrbit_toNat]
1293 norm_num
1294
1295/-- Classical verifier three-adic branch twist on rational displays. It fixes
1296the non-`3` prime axes and inverts the orbit-`3` exponent. This is the base-`3`
1297analogue of `twoAdicTwistRat`; it exists to show that calibrating the native
1298cost at one prime (here, agreement with J at `2`) does not propagate to the
1299other prime axes (here, `3`). -/
1300noncomputable def threeAdicTwistRat (x : ℚ) : ℚ :=
1301 x * (3 : ℚ) ^ (-2 * padicValRat 3 x)
1302
1303theorem threeAdicTwistRat_one :
1304 threeAdicTwistRat 1 = 1 := by
1305 unfold threeAdicTwistRat
1306 have h : padicValRat 3 (1 : ℚ) = 0 := by
1307 norm_num [padicValRat.of_int, padicValInt.eq_zero_of_not_dvd]
1308 rw [h]
1309 norm_num
1310
1311theorem threeAdicTwistRat_mul (x y : ℚ) :
1312 threeAdicTwistRat (x * y) =
1313 threeAdicTwistRat x * threeAdicTwistRat y := by
1314 unfold threeAdicTwistRat
1315 haveI : Fact (Nat.Prime 3) := ⟨by norm_num⟩
1316 by_cases hx : x = 0
1317 · simp [hx]
1318 · by_cases hy : y = 0
1319 · simp [hy]
1320 · rw [padicValRat.mul hx hy]
1321 have hbase : (3 : ℚ) ≠ 0 := by norm_num
1322 have hexp :
1323 -2 * (padicValRat 3 x + padicValRat 3 y) =
1324 (-2 * padicValRat 3 x) + (-2 * padicValRat 3 y) := by
1325 ring
1326 rw [hexp]
1327 rw [zpow_add₀ hbase]
1328 ring
1329
1330theorem threeAdicTwistRat_inv (x : ℚ) :
1331 threeAdicTwistRat x⁻¹ = (threeAdicTwistRat x)⁻¹ := by
1332 unfold threeAdicTwistRat
1333 haveI : Fact (Nat.Prime 3) := ⟨by norm_num⟩
1334 by_cases hx : x = 0
1335 · simp [hx]
1336 · rw [padicValRat.inv]
1337 have hbase : (3 : ℚ) ≠ 0 := by norm_num
1338 have hxpow : (3 : ℚ) ^ (-2 * padicValRat 3 x) ≠ 0 :=
1339 zpow_ne_zero _ hbase
1340 have hexp :
1341 -2 * (-padicValRat 3 x) = -(-2 * padicValRat 3 x) := by
1342 ring
1343 rw [hexp, zpow_neg]
1344 field_simp [hx, hxpow]
1345
1346theorem threeAdicTwistRat_ne_zero {x : ℚ}
1347 (hx : x ≠ 0) :
1348 threeAdicTwistRat x ≠ 0 := by
1349 unfold threeAdicTwistRat
1350 have hbase : (3 : ℚ) ≠ 0 := by norm_num
1351 exact mul_ne_zero hx (zpow_ne_zero _ hbase)
1352
1353theorem threeAdicTwistRat_three :
1354 threeAdicTwistRat 3 = (3 : ℚ)⁻¹ := by
1355 unfold threeAdicTwistRat
1356 have h : padicValRat 3 (3 : ℚ) = 1 :=
1357 padicValRat.self (by norm_num : 1 < 3)
1358 rw [h]
1359 norm_num
1360
1361theorem padicValRat_three_primeDirection_eq_zero_of_ne_three
1362 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p)
1363 (hpne : p ≠ threeOrbit) :
1364 padicValRat 3 (primeDirection p hp).toRat = 0 := by
1365 rw [primeDirection_toRat]
1366 rw [show (p.toNat : ℚ) = ((p.toNat : ℤ) : ℚ) by norm_num]
1367 rw [padicValRat.of_int]
1368 have hInt : padicValInt 3 (p.toNat : ℤ) = 0 := by
1369 apply padicValInt.eq_zero_of_not_dvd
1370 intro hdivZ
1371 have hdivNat : 3 ∣ p.toNat := by
1372 exact_mod_cast hdivZ
1373 have hdivNat' : threeOrbit.toNat ∣ p.toNat := by
1374 rw [threeOrbit_toNat]
1375 exact hdivNat
1376 have hdiv : DistinctionNat.divides threeOrbit p :=
1377 (DistinctionNat.divides_iff_toNat_dvd threeOrbit p).mpr hdivNat'
1378 rcases DistinctionNat.unit_or_eq_of_divides_prime hp hdiv with hunit | heq
1379 · rw [DistinctionNat.unit_iff_toNat_eq_one, threeOrbit_toNat] at hunit
1380 norm_num at hunit
1381 · exact hpne heq.symm
1382 exact_mod_cast hInt
1383
1384theorem threeAdicTwistRat_primeDirection_of_ne_three
1385 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p)
1386 (hpne : p ≠ threeOrbit) :
1387 threeAdicTwistRat (primeDirection p hp).toRat =
1388 (primeDirection p hp).toRat := by
1389 unfold threeAdicTwistRat
1390 rw [padicValRat_three_primeDirection_eq_zero_of_ne_three hp hpne]
1391 norm_num
1392
1393/-- Ratio-orbit realization of the verifier three-adic branch twist. -/
1394noncomputable def threeAdicAxisTwistCharacter (q : RatioOrbit) : RatioOrbit :=
1395 ratioOrbitOfRat (threeAdicTwistRat q.toRat)
1396
1397theorem threeAdicAxisTwistCharacter_toRat (q : RatioOrbit) :
1398 (threeAdicAxisTwistCharacter q).toRat =
1399 threeAdicTwistRat q.toRat := by
1400 unfold threeAdicAxisTwistCharacter
1401 exact ratioOrbitOfRat_toRat _
1402
1403theorem threeAdicAxisTwistCharacter_ratio_character :
1404 PRCRatioCharacter threeAdicAxisTwistCharacter where
1405 unit := by
1406 rw [RatioOrbit.crossEq_iff_toRat_eq, threeAdicAxisTwistCharacter_toRat,
1407 RatioOrbit.one_toRat]
1408 exact threeAdicTwistRat_one
1409 multiplicative := by
1410 intro x y
1411 rw [RatioOrbit.crossEq_iff_toRat_eq, threeAdicAxisTwistCharacter_toRat,
1412 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat,
1413 threeAdicAxisTwistCharacter_toRat, threeAdicAxisTwistCharacter_toRat]
1414 exact threeAdicTwistRat_mul x.toRat y.toRat
1415 reciprocal := by
1416 intro x
1417 rw [RatioOrbit.crossEq_iff_toRat_eq, threeAdicAxisTwistCharacter_toRat,
1418 RatioOrbit.recip_toRat, RatioOrbit.recip_toRat,
1419 threeAdicAxisTwistCharacter_toRat]
1420 exact threeAdicTwistRat_inv x.toRat
1421 normalized_invariant := by
1422 intro q
1423 rw [RatioOrbit.crossEq_iff_toRat_eq, threeAdicAxisTwistCharacter_toRat,
1424 threeAdicAxisTwistCharacter_toRat, DistinctionNat.normalizeRatio_toRat]
1425 nonzero_preserving := by
1426 intro q hq
1427 rw [threeAdicAxisTwistCharacter_toRat]
1428 exact threeAdicTwistRat_ne_zero hq
1429
1430theorem threeAdicAxisTwistCharacter_two_identity :
1431 RatioOrbit.crossEq (threeAdicAxisTwistCharacter twoPrimeDirection)
1432 twoPrimeDirection := by
1433 rw [RatioOrbit.crossEq_iff_toRat_eq, threeAdicAxisTwistCharacter_toRat]
1434 simpa [twoPrimeDirection] using
1435 threeAdicTwistRat_primeDirection_of_ne_three twoOrbit_primeOrbit
1436 (threeOrbit_ne_twoOrbit).symm
1437
1438theorem threeAdicAxisTwistCharacter_three_reciprocal :
1439 RatioOrbit.crossEq (threeAdicAxisTwistCharacter threePrimeDirection)
1440 (RatioOrbit.recip threePrimeDirection) := by
1441 rw [RatioOrbit.crossEq_iff_toRat_eq, threeAdicAxisTwistCharacter_toRat,
1442 RatioOrbit.recip_toRat, threePrimeDirection_toRat]
1443 exact threeAdicTwistRat_three
1444
1445/-- δ-native cost non-forcing, complementary axis (headline blocker, stated
1446exactly).
1447
1448There is a PRC ratio character `χ` (the three-adic axis twist
1449`x ↦ x · 3^(-2·v₃(x))`) that agrees with the canonical cost J at the prime `2`
1450(identity orientation there) yet inverts the orbit-`3` axis. Together with
1451`prc_native_cost_orientation_underdetermined` (which fixes every odd prime and
1452flips `2`), this proves the orientation freedom is genuinely per-prime: pinning
1453the native cost at one prime does not pin it at another.
1454
1455Consequence for the calibration repair: no finite set of prime calibrations can
1456force J on the rational carrier, because each remaining prime axis is still a
1457free orientation choice. The continuous `law_of_logic_forces_jcost` escapes this
1458only because its calibration hypothesis is a second-derivative condition at the
1459unit, which constrains the cost on a full neighborhood (uncountably many points)
1460at once. This is the exact sense in which J-forcing requires the completion and
1461not the discrete carrier, and it pins the forward repair to deriving that
1462single neighborhood-level calibration from the cost of one δ act. -/
1463theorem prc_single_prime_calibration_insufficient :
1464 ∃ χ : RatioOrbit → RatioOrbit,
1465 PRCRatioCharacter χ ∧
1466 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection ∧
1467 ¬ RatioOrbit.crossEq (χ threePrimeDirection) threePrimeDirection := by
1468 refine ⟨threeAdicAxisTwistCharacter,
1469 threeAdicAxisTwistCharacter_ratio_character,
1470 threeAdicAxisTwistCharacter_two_identity, ?_⟩
1471 intro hId
1472 have hself :
1473 RatioOrbit.crossEq threePrimeDirection
1474 (RatioOrbit.recip threePrimeDirection) :=
1475 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hId)
1476 threeAdicAxisTwistCharacter_three_reciprocal
1477 exact primeDirection_not_crossEq_recip threeOrbit threeOrbit_primeOrbit hself
1478
1479/-! ### Classification: every prime axis is an independent orientation freedom
1480
1481Passes 329 and 330 each exhibit one ratio character that flips a single prime
1482axis (`2`, resp. `3`) while fixing the others. They are two witnesses of one
1483structural fact: the multiplicative group of the rational carrier is free
1484abelian on the prime orbits, so each prime axis carries an independent
1485orientation choice. The following collapses both witnesses into a single theorem
1486parameterized by an arbitrary prime orbit. It supersedes the per-prime
1487`_refuted` treadmill: there is one base-parameterized twist character per prime,
1488not a separate construction per case. -/
1489
1490/-- A prime orbit displays as a `Nat` prime. Bridge from the δ-native primality
1491predicate to `Nat.Prime`, with no import of Nat prime theory into the predicate
1492itself. -/
1493theorem natPrime_toNat_of_primeOrbit {p : DistinctionNat}
1494 (hp : DistinctionNat.primeOrbit p) : Nat.Prime p.toNat := by
1495 rw [DistinctionNat.primeOrbit_iff_toNat_no_nontrivial_factor] at hp
1496 obtain ⟨h0, h1, hfac⟩ := hp
1497 rw [Nat.prime_def]
1498 refine ⟨by omega, ?_⟩
1499 intro m hm
1500 obtain ⟨k, hk⟩ := hm
1501 by_cases hm1 : m = 1
1502 · exact Or.inl hm1
1503 · refine Or.inr ?_
1504 by_cases hk1 : k = 1
1505 · rw [hk, hk1, mul_one]
1506 · exfalso
1507 apply hfac
1508 have hm0 : m ≠ 0 := by
1509 rintro rfl; rw [zero_mul] at hk; exact h0 hk
1510 have hk0 : k ≠ 0 := by
1511 rintro rfl; rw [mul_zero] at hk; exact h0 hk
1512 exact ⟨m, k, hm0, hk0, hm1, hk1, hk.symm⟩
1513
1514/-- Base-parameterized axis twist on rational displays: invert the exponent on
1515the prime axis `b`, fix every other prime axis. For `b = 2` this is
1516`twoAdicTwistRat`; for `b = 3` it is `threeAdicTwistRat`. -/
1517noncomputable def axisTwistRat (b : ℕ) (x : ℚ) : ℚ :=
1518 x * (b : ℚ) ^ (-2 * padicValRat b x)
1519
1520theorem axisTwistRat_base_ne_zero (b : ℕ) [Fact (Nat.Prime b)] :
1521 (b : ℚ) ≠ 0 :=
1522 Nat.cast_ne_zero.mpr (Fact.out : Nat.Prime b).pos.ne'
1523
1524theorem axisTwistRat_one (b : ℕ) [Fact (Nat.Prime b)] :
1525 axisTwistRat b 1 = 1 := by
1526 unfold axisTwistRat
1527 rw [padicValRat.one]
1528 norm_num
1529
1530theorem axisTwistRat_mul (b : ℕ) [Fact (Nat.Prime b)] (x y : ℚ) :
1531 axisTwistRat b (x * y) = axisTwistRat b x * axisTwistRat b y := by
1532 unfold axisTwistRat
1533 by_cases hx : x = 0
1534 · simp [hx]
1535 · by_cases hy : y = 0
1536 · simp [hy]
1537 · rw [padicValRat.mul hx hy]
1538 have hbase : (b : ℚ) ≠ 0 := axisTwistRat_base_ne_zero b
1539 have hexp :
1540 -2 * (padicValRat b x + padicValRat b y) =
1541 (-2 * padicValRat b x) + (-2 * padicValRat b y) := by ring
1542 rw [hexp, zpow_add₀ hbase]
1543 ring
1544
1545theorem axisTwistRat_inv (b : ℕ) [Fact (Nat.Prime b)] (x : ℚ) :
1546 axisTwistRat b x⁻¹ = (axisTwistRat b x)⁻¹ := by
1547 unfold axisTwistRat
1548 by_cases hx : x = 0
1549 · simp [hx]
1550 · rw [padicValRat.inv]
1551 have hbase : (b : ℚ) ≠ 0 := axisTwistRat_base_ne_zero b
1552 have hxpow : (b : ℚ) ^ (-2 * padicValRat b x) ≠ 0 := zpow_ne_zero _ hbase
1553 have hexp : -2 * (-padicValRat b x) = -(-2 * padicValRat b x) := by ring
1554 rw [hexp, zpow_neg]
1555 field_simp [hx, hxpow]
1556
1557theorem axisTwistRat_ne_zero (b : ℕ) [Fact (Nat.Prime b)] {x : ℚ}
1558 (hx : x ≠ 0) : axisTwistRat b x ≠ 0 := by
1559 unfold axisTwistRat
1560 exact mul_ne_zero hx (zpow_ne_zero _ (axisTwistRat_base_ne_zero b))
1561
1562theorem axisTwistRat_self (b : ℕ) [Fact (Nat.Prime b)] :
1563 axisTwistRat b (b : ℚ) = (b : ℚ)⁻¹ := by
1564 unfold axisTwistRat
1565 have hb : 1 < b := (Fact.out : Nat.Prime b).one_lt
1566 have hbase : (b : ℚ) ≠ 0 := axisTwistRat_base_ne_zero b
1567 rw [padicValRat.self hb, show (-2 * (1 : ℤ)) = (-2 : ℤ) by ring]
1568 nth_rewrite 1 [show (b : ℚ) = (b : ℚ) ^ (1 : ℤ) by rw [zpow_one]]
1569 rw [← zpow_add₀ hbase, show (1 : ℤ) + (-2 : ℤ) = -1 by ring, zpow_neg_one]
1570
1571/-- Off-axis primes are fixed by the `b`-axis twist: if the evaluated prime orbit
1572`r` differs from the axis orbit `p`, the `p.toNat`-adic valuation of `r`'s
1573display vanishes. -/
1574theorem padicValRat_axis_primeDirection_eq_zero_of_ne
1575 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p)
1576 {r : DistinctionNat} (hr : DistinctionNat.primeOrbit r)
1577 (hne : r ≠ p) :
1578 padicValRat p.toNat (primeDirection r hr).toRat = 0 := by
1579 haveI : Fact (Nat.Prime p.toNat) := ⟨natPrime_toNat_of_primeOrbit hp⟩
1580 rw [primeDirection_toRat, padicValRat.of_nat]
1581 norm_cast
1582 apply padicValNat.eq_zero_of_not_dvd
1583 intro hdvd
1584 have hdiv : DistinctionNat.divides p r :=
1585 (DistinctionNat.divides_iff_toNat_dvd p r).mpr hdvd
1586 rcases DistinctionNat.unit_or_eq_of_divides_prime hr hdiv with hunit | heq
1587 · rw [DistinctionNat.unit_iff_toNat_eq_one] at hunit
1588 exact (natPrime_toNat_of_primeOrbit hp).ne_one hunit
1589 · exact hne heq.symm
1590
1591/-- The ratio-orbit realization of the `b`-axis twist, `b = p.toNat`. -/
1592noncomputable def axisTwistCharacter (p : DistinctionNat) (q : RatioOrbit) :
1593 RatioOrbit :=
1594 ratioOrbitOfRat (axisTwistRat p.toNat q.toRat)
1595
1596theorem axisTwistCharacter_toRat (p : DistinctionNat) (q : RatioOrbit) :
1597 (axisTwistCharacter p q).toRat = axisTwistRat p.toNat q.toRat := by
1598 unfold axisTwistCharacter
1599 exact ratioOrbitOfRat_toRat _
1600
1601theorem axisTwistCharacter_ratio_character
1602 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p) :
1603 PRCRatioCharacter (axisTwistCharacter p) := by
1604 haveI : Fact (Nat.Prime p.toNat) := ⟨natPrime_toNat_of_primeOrbit hp⟩
1605 exact {
1606 unit := by
1607 rw [RatioOrbit.crossEq_iff_toRat_eq, axisTwistCharacter_toRat,
1608 RatioOrbit.one_toRat]
1609 exact axisTwistRat_one p.toNat
1610 multiplicative := by
1611 intro x y
1612 rw [RatioOrbit.crossEq_iff_toRat_eq, axisTwistCharacter_toRat,
1613 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat,
1614 axisTwistCharacter_toRat, axisTwistCharacter_toRat]
1615 exact axisTwistRat_mul p.toNat x.toRat y.toRat
1616 reciprocal := by
1617 intro x
1618 rw [RatioOrbit.crossEq_iff_toRat_eq, axisTwistCharacter_toRat,
1619 RatioOrbit.recip_toRat, RatioOrbit.recip_toRat,
1620 axisTwistCharacter_toRat]
1621 exact axisTwistRat_inv p.toNat x.toRat
1622 normalized_invariant := by
1623 intro q
1624 rw [RatioOrbit.crossEq_iff_toRat_eq, axisTwistCharacter_toRat,
1625 axisTwistCharacter_toRat, DistinctionNat.normalizeRatio_toRat]
1626 nonzero_preserving := by
1627 intro q hq
1628 rw [axisTwistCharacter_toRat]
1629 exact axisTwistRat_ne_zero p.toNat hq }
1630
1631theorem axisTwistCharacter_off_axis_identity
1632 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p)
1633 {r : DistinctionNat} (hr : DistinctionNat.primeOrbit r)
1634 (hne : r ≠ p) :
1635 RatioOrbit.crossEq (axisTwistCharacter p (primeDirection r hr))
1636 (primeDirection r hr) := by
1637 rw [RatioOrbit.crossEq_iff_toRat_eq, axisTwistCharacter_toRat]
1638 unfold axisTwistRat
1639 rw [padicValRat_axis_primeDirection_eq_zero_of_ne hp hr hne]
1640 norm_num
1641
1642theorem axisTwistCharacter_on_axis_reciprocal
1643 {p : DistinctionNat} (hp : DistinctionNat.primeOrbit p) :
1644 RatioOrbit.crossEq (axisTwistCharacter p (primeDirection p hp))
1645 (RatioOrbit.recip (primeDirection p hp)) := by
1646 haveI : Fact (Nat.Prime p.toNat) := ⟨natPrime_toNat_of_primeOrbit hp⟩
1647 rw [RatioOrbit.crossEq_iff_toRat_eq, axisTwistCharacter_toRat,
1648 RatioOrbit.recip_toRat, primeDirection_toRat]
1649 exact axisTwistRat_self p.toNat
1650
1651/-- **δ-native cost non-forcing, classified (headline).**
1652
1653For *every* prime orbit `p` there is a PRC ratio character that fixes the
1654orientation of every other prime axis yet inverts the orbit-`p` axis. This is one
1655theorem in place of the per-prime witnesses `prc_native_cost_orientation_under-
1656determined` (the `p = 2` case) and `prc_single_prime_calibration_insufficient`
1657(the `p = 3` case): the orientation freedom is genuinely per-prime, on every
1658axis at once.
1659
1660Consequence: no finite (indeed, no proper) set of prime calibrations forces `J`
1661on the rational carrier, because every axis outside the set remains a free
1662orientation. The canonical reciprocal cost `J` is the all-identity orientation,
1663and the all-identity choice is not forced by the discrete arithmetic. J-forcing
1664therefore requires the continuous completion, where the calibration hypothesis of
1665`law_of_logic_forces_jcost` constrains a full neighborhood of the unit at once
1666rather than one axis at a time. -/
1667theorem prc_every_prime_axis_orientation_free
1668 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
1669 ∃ χ : RatioOrbit → RatioOrbit,
1670 PRCRatioCharacter χ ∧
1671 (∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
1672 r ≠ p →
1673 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)) ∧
1674 ¬ RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) := by
1675 refine ⟨axisTwistCharacter p, axisTwistCharacter_ratio_character hp,
1676 fun r hr hne => axisTwistCharacter_off_axis_identity hp hr hne, ?_⟩
1677 intro hId
1678 have hself :
1679 RatioOrbit.crossEq (primeDirection p hp)
1680 (RatioOrbit.recip (primeDirection p hp)) :=
1681 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hId)
1682 (axisTwistCharacter_on_axis_reciprocal hp)
1683 exact primeDirection_not_crossEq_recip p hp hself
1684
1685/-! ### Completion-side companion: calibration is the binding constraint
1686
1687The two blockers above act on the discrete rational carrier. The following
1688companion isolates the same constraint on the continuous completion, where
1689`law_of_logic_forces_jcost` lives. The point is to identify, as an exact Lean
1690witness, which hypothesis of that theorem actually does the forcing.
1691
1692The composition law (the RCL) is, after the substitution `g = F + 1`, the
1693d'Alembert identity `g(xy) + g(x/y) = 2 g(x) g(y)`. Its continuous solutions
1694are `g(x) = cosh(λ · log x)`, i.e. `F(x) = (x^λ + x^{-λ})/2 - 1` for any real
1695`λ ≥ 0`. Reciprocal symmetry, normalization, and continuity hold for the whole
1696family; only the calibration `G''(0) = λ² = 1` selects `λ = 1`. So on the
1697completion the algebraic laws fix the *form* of the cost but not its *scale*. -/
1698
1699/-- A second member of the cost family: `F₂(x) = (x² + x⁻²)/2 - 1`, the
1700`λ = 2` cost. Its log-coordinate curvature at the unit is `4`, not `1`. -/
1701noncomputable def costLambdaTwo (x : ℝ) : ℝ := (x ^ 2 + (x ^ 2)⁻¹) / 2 - 1
1702
1703/-- **Completion-side non-forcing (headline blocker, stated exactly).**
1704
1705There is a function `F : ℝ → ℝ` (the `λ = 2` cost `(x² + x⁻²)/2 - 1`) that
1706satisfies every hypothesis of `law_of_logic_forces_jcost` *except* calibration
1707(reciprocal symmetry, normalization, the composition law (RCL), and continuity on
1708the positive reals) yet is not the canonical cost `Cost.Jcost`. Therefore the
1709calibration hypothesis `IsCalibrated` is load-bearing and cannot be dropped: the
1710composition law and the other algebraic laws do not, by themselves, force J even
1711on the continuous completion.
1712
1713This is the continuum analogue of `prc_native_cost_orientation_underdetermined`
1714and `prc_single_prime_calibration_insufficient`. Read together: on the rational
1715carrier orientation is free per prime; on the completion the scale (the curvature
1716`λ²` at the unit) is free. In both regimes the binding constraint is a
1717calibration, not the algebra. Consequently "δ forces J" can only mean "δ forces
1718the cost family `(x^λ + x^{-λ})/2 - 1`, and a separately supplied unit
1719calibration selects `λ = 1`." Whether δ supplies that unit calibration is the
1720open joint (live track T1); this theorem proves it is genuinely needed, i.e. it
1721is not already implied by the composition law. -/
1722theorem composition_law_without_calibration_does_not_force_jcost :
1723 ∃ F : ℝ → ℝ,
1724 Cost.FunctionalEquation.IsReciprocalCost F ∧
1725 Cost.FunctionalEquation.IsNormalized F ∧
1726 Cost.FunctionalEquation.SatisfiesCompositionLaw F ∧
1727 ContinuousOn F (Set.Ioi 0) ∧
1728 F ≠ Cost.Jcost := by
1729 refine ⟨costLambdaTwo, ?_, ?_, ?_, ?_, ?_⟩
1730 · -- reciprocal symmetry
1731 intro x hx
1732 have hx0 : x ≠ 0 := ne_of_gt hx
1733 unfold costLambdaTwo
1734 field_simp
1735 ring
1736 · -- normalization F 1 = 0
1737 show ((1 : ℝ) ^ 2 + ((1 : ℝ) ^ 2)⁻¹) / 2 - 1 = 0
1738 norm_num
1739 · -- composition law (RCL)
1740 intro x y hx hy
1741 have hx0 : x ≠ 0 := ne_of_gt hx
1742 have hy0 : y ≠ 0 := ne_of_gt hy
1743 unfold costLambdaTwo
1744 field_simp
1745 ring
1746 · -- continuity on the positive reals
1747 unfold costLambdaTwo
1748 apply ContinuousOn.sub _ continuousOn_const
1749 apply ContinuousOn.div_const
1750 refine ContinuousOn.add ((continuous_pow 2).continuousOn) ?_
1751 refine ContinuousOn.inv₀ ((continuous_pow 2).continuousOn) ?_
1752 intro x hx
1753 exact pow_ne_zero 2 (ne_of_gt (Set.mem_Ioi.mp hx))
1754 · -- F ≠ Jcost, witnessed at x = 2
1755 intro h
1756 have h2 := congrFun h 2
1757 unfold costLambdaTwo Cost.Jcost at h2
1758 norm_num at h2
1759
1760/-- The full one-parameter cost family `F_λ(x) = (x^λ + x^(-λ))/2 - 1`, using
1761real powers. `λ = 1` is `Cost.Jcost`; `λ = 2` is `costLambdaTwo`. -/
1762noncomputable def costLambda (l x : ℝ) : ℝ := (x ^ l + x ^ (-l)) / 2 - 1
1763
1764/-- **Calibration is an irreducible scale choice (headline blocker, stated
1765exactly).**
1766
1767For every exponent `λ > 0`, the cost `F_λ(x) = (x^λ + x^(-λ))/2 - 1` satisfies
1768reciprocal symmetry, normalization, the composition law (RCL), and continuity on
1769the positive reals. These are exactly the hypotheses of
1770`law_of_logic_forces_jcost` other than calibration. So the composition law's
1771continuous solution set is the entire one-parameter family `{F_λ : λ > 0}`, not a
1772single function. The calibration `G''(0) = λ² = 1` is the lone datum that
1773collapses the family to J (the `λ = 1` member). Combined with
1774`composition_law_without_calibration_does_not_force_jcost` (the `λ = 2` instance,
1775which is distinct from J), this shows the scale is a genuine continuum of choices
1776that the algebra cannot prefer between. The forward program (T1) is therefore
1777exactly: supply `λ = 1` from a δ-native curvature, or accept "δ forces J up to a
1778choice of cost scale." -/
1779theorem composition_law_admits_full_scale_family (l : ℝ) (hl : 0 < l) :
1780 Cost.FunctionalEquation.IsReciprocalCost (costLambda l) ∧
1781 Cost.FunctionalEquation.IsNormalized (costLambda l) ∧
1782 Cost.FunctionalEquation.SatisfiesCompositionLaw (costLambda l) ∧
1783 ContinuousOn (costLambda l) (Set.Ioi 0) := by
1784 refine ⟨?_, ?_, ?_, ?_⟩
1785 · -- reciprocal symmetry
1786 intro x hx
1787 have hx0 : (0 : ℝ) ≤ x := le_of_lt hx
1788 unfold costLambda
1789 rw [Real.inv_rpow hx0, Real.inv_rpow hx0, ← Real.rpow_neg hx0,
1790 ← Real.rpow_neg hx0, neg_neg]
1791 ring
1792 · -- normalization F 1 = 0
1793 show ((1 : ℝ) ^ l + (1 : ℝ) ^ (-l)) / 2 - 1 = 0
1794 rw [Real.one_rpow, Real.one_rpow]
1795 norm_num
1796 · -- composition law (RCL)
1797 intro x y hx hy
1798 have hx0 : (0 : ℝ) ≤ x := le_of_lt hx
1799 have hy0 : (0 : ℝ) ≤ y := le_of_lt hy
1800 set a : ℝ := x ^ l with ha_def
1801 set b : ℝ := y ^ l with hb_def
1802 have ha : (0 : ℝ) < a := Real.rpow_pos_of_pos hx l
1803 have hb : (0 : ℝ) < b := Real.rpow_pos_of_pos hy l
1804 unfold costLambda
1805 rw [Real.mul_rpow hx0 hy0, Real.div_rpow hx0 hy0,
1806 Real.rpow_neg (le_of_lt (mul_pos hx hy)),
1807 Real.rpow_neg (le_of_lt (div_pos hx hy)),
1808 Real.rpow_neg hx0, Real.rpow_neg hy0,
1809 Real.mul_rpow hx0 hy0, Real.div_rpow hx0 hy0]
1810 rw [← ha_def, ← hb_def]
1811 field_simp
1812 ring
1813 · -- continuity on the positive reals
1814 unfold costLambda
1815 apply ContinuousOn.sub _ continuousOn_const
1816 apply ContinuousOn.div_const
1817 apply ContinuousOn.add
1818 · intro x hx
1819 exact (Real.continuousAt_rpow_const x l
1820 (Or.inl (ne_of_gt (Set.mem_Ioi.mp hx)))).continuousWithinAt
1821 · intro x hx
1822 exact (Real.continuousAt_rpow_const x (-l)
1823 (Or.inl (ne_of_gt (Set.mem_Ioi.mp hx)))).continuousWithinAt
1824
1825/-- **Calibration is a multiplicative-automorphism gauge (headline blocker,
1826stated exactly).**
1827
1828The whole cost family collapses to a single function pulled back along the
1829automorphism group of the positive reals under multiplication:
1830
1831* `costLambda l x = Cost.Jcost (x ^ l)` for `x > 0`: every family member is J
1832 precomposed with the power map `φ_λ(x) = x^λ`;
1833* `φ_λ` is a multiplicative homomorphism (`(x·y)^λ = x^λ · y^λ`) fixing the unit
1834 (`1^λ = 1`), hence (for `λ ≠ 0`) an automorphism of `(ℝ_{>0}, ×)`.
1835
1836Therefore the family `{F_λ}` is exactly the orbit of `Cost.Jcost` under the
1837automorphism group `Aut(ℝ_{>0}, ×) ≅ ℝˣ` (scalings `t ↦ λt` in log
1838coordinates). The δ-native structure determines the multiplicative group but no
1839preferred automorphism scale, and the composition law is preserved by every such
1840pullback (`composition_law_admits_full_scale_family`). The calibration
1841`λ² = 1` is the choice of unit speed for this gauge group.
1842
1843This is the exact, structural reason branch (a) of T1 cannot succeed on the
1844δ-native data alone: a single δ successor act delivers a secant value
1845`F_λ(2) = (2^λ + 2^{-λ})/2 - 1`, not the curvature limit, and that secant is
1846λ-dependent (distinctness of `λ = 1` from `λ = 2` is witnessed by
1847`composition_law_without_calibration_does_not_force_jcost`, the `λ = 2` member
1848that differs from J). The curvature, being the unit speed of an automorphism
1849gauge, is a normalization rather than a consequence of the group structure. The
1850honest terminal claim is: δ forces J up to a multiplicative-automorphism gauge,
1851and a unit calibration fixes the gauge. -/
1852theorem calibration_is_mul_automorphism_gauge :
1853 (∀ l x : ℝ, 0 < x → costLambda l x = Cost.Jcost (x ^ l)) ∧
1854 (∀ l x y : ℝ, 0 < x → 0 < y → (x * y) ^ l = x ^ l * y ^ l) ∧
1855 (∀ l : ℝ, (1 : ℝ) ^ l = 1) := by
1856 refine ⟨?_, ?_, ?_⟩
1857 · intro l x hx
1858 unfold costLambda Cost.Jcost
1859 rw [Real.rpow_neg (le_of_lt hx)]
1860 · intro l x y hx hy
1861 exact Real.mul_rpow (le_of_lt hx) (le_of_lt hy)
1862 · intro l
1863 exact Real.one_rpow l
1864
1865/-- In log coordinates the family member `costLambda l` is `cosh(l·t) - 1`:
1866`G (costLambda l) t = Real.cosh (l * t) - 1`. -/
1867theorem G_costLambda (l : ℝ) :
1868 Cost.FunctionalEquation.G (costLambda l) = fun t => Real.cosh (l * t) - 1 := by
1869 funext t
1870 have hpos : (0 : ℝ) < Real.exp t := Real.exp_pos t
1871 simp only [Cost.FunctionalEquation.G, costLambda]
1872 rw [Real.rpow_def_of_pos hpos l, Real.rpow_def_of_pos hpos (-l), Real.log_exp,
1873 Real.cosh_eq, mul_comm t l, show t * (-l) = -(l * t) by ring]
1874
1875/-- **The calibration value of `costLambda l` is exactly `l²`.**
1876
1877The log-coordinate curvature at the unit (the quantity `IsCalibrated` fixes to
1878`1`) is `deriv (deriv (G (costLambda l))) 0 = l²`. This is the exact content of
1879"calibration selects `λ = 1`": the calibration condition is `l² = 1`. -/
1880theorem calibration_value_costLambda (l : ℝ) :
1881 deriv (deriv (Cost.FunctionalEquation.G (costLambda l))) 0 = l ^ 2 := by
1882 have hlin : ∀ t : ℝ, HasDerivAt (fun t => l * t) l t := by
1883 intro t; simpa using (hasDerivAt_id t).const_mul l
1884 have hd1 : ∀ t : ℝ,
1885 HasDerivAt (fun t => Real.cosh (l * t) - 1) (Real.sinh (l * t) * l) t := by
1886 intro t; exact ((hlin t).cosh).sub_const 1
1887 have hderiv1 : deriv (fun t => Real.cosh (l * t) - 1)
1888 = fun t => Real.sinh (l * t) * l := by
1889 funext t; exact (hd1 t).deriv
1890 have hd2 : HasDerivAt (fun t => Real.sinh (l * t) * l)
1891 (Real.cosh (l * 0) * l * l) 0 := ((hlin 0).sinh).mul_const l
1892 rw [G_costLambda l, hderiv1, hd2.deriv]
1893 simp [Real.cosh_zero]
1894 ring
1895
1896/-- **J is the unique calibrated member of the cost family (exact).**
1897
1898`costLambda l` satisfies the calibration condition of `law_of_logic_forces_jcost`
1899iff `l² = 1`. So among the gauge family `{F_λ}`, calibration is precisely the
1900equation that selects `λ = ±1`; with `λ > 0` it selects `λ = 1`, the member
1901equal to `Cost.Jcost` (`costLambda 1 x = Cost.Jcost x` for `x > 0`). This is the
1902within-family selection that, combined with
1903`calibration_is_mul_automorphism_gauge`, makes the stratification exact:
1904δ + algebra force the family; calibration `l² = 1` selects J; and the value of
1905the calibration constant (the gauge) is not itself fixed by δ. -/
1906theorem isCalibrated_costLambda_iff (l : ℝ) :
1907 Cost.FunctionalEquation.IsCalibrated (costLambda l) ↔ l ^ 2 = 1 := by
1908 unfold Cost.FunctionalEquation.IsCalibrated
1909 rw [calibration_value_costLambda l]
1910
1911/-- For positive exponents, the calibrated member is exactly `λ = 1`. -/
1912theorem isCalibrated_costLambda_pos_iff {l : ℝ} (hl : 0 < l) :
1913 Cost.FunctionalEquation.IsCalibrated (costLambda l) ↔ l = 1 := by
1914 rw [isCalibrated_costLambda_iff l]
1915 constructor
1916 · intro h
1917 nlinarith [sq_nonneg (l - 1), sq_nonneg (l + 1)]
1918 · intro h; rw [h]; norm_num
1919
1920/-- The `λ = 1` member is `Cost.Jcost` on the positive reals, and it is
1921calibrated. -/
1922theorem costLambda_one_eq_jcost (x : ℝ) (hx : 0 < x) :
1923 costLambda 1 x = Cost.Jcost x := by
1924 unfold costLambda Cost.Jcost
1925 rw [Real.rpow_one, Real.rpow_neg (le_of_lt hx), Real.rpow_one]
1926
1927/-- **The cost family is a single gauge orbit: the automorphism action is
1928transitive (exact).**
1929
1930For any two positive exponents `λ, μ` and any `x > 0`,
1931`costLambda l x = costLambda m (x ^ (l / m))`. That is, the multiplicative
1932automorphism `x ↦ x^(l/m)` of `(ℝ_{>0}, ×)` carries the family member `F_μ` onto
1933`F_λ`. Since the action is transitive (any member reaches any other), the family
1934`{F_λ : λ > 0}` is a single homogeneous orbit under
1935`Aut(ℝ_{>0}, ×)`, with no member distinguished by the algebra. This is the
1936precise mathematical content of "the calibration is a gauge": J is singled out
1937only by the external unit calibration `λ = 1`, never by the composition law,
1938which is invariant along the whole orbit. It strengthens
1939`calibration_is_mul_automorphism_gauge` (each member is `J ∘ (·^λ)`) to the orbit
1940being homogeneous (any member is any other, post-automorphism), so there is no
1941algebraically preferred basepoint to call canonical without importing the unit. -/
1942theorem costLambda_gauge_transitive (l m x : ℝ) (hm : 0 < m) (hx : 0 < x) :
1943 costLambda l x = costLambda m (x ^ (l / m)) := by
1944 have hx0 : (0 : ℝ) ≤ x := le_of_lt hx
1945 have e1 : (l / m) * m = l := div_mul_cancel₀ l (ne_of_gt hm)
1946 have e2 : (l / m) * (-m) = -l := by rw [mul_neg, e1]
1947 unfold costLambda
1948 rw [← Real.rpow_mul hx0, ← Real.rpow_mul hx0, e1, e2]
1949
1950/-- **The gauge parameterization is faithful: the automorphism action is free
1951(exact).**
1952
1953Distinct positive exponents give distinct costs: if `costLambda l = costLambda m`
1954as functions and `l, m > 0`, then `l = m`. (Proof: the log-coordinate curvature
1955at the unit is `λ²` by `calibration_value_costLambda`; equal functions have equal
1956curvature, so `l² = m²`, and positivity gives `l = m`.)
1957
1958Together with `costLambda_gauge_transitive` (transitivity) this says the family
1959`{F_λ : λ > 0}` is a **torsor** (principal homogeneous space) under the gauge
1960group: the action is both free (here) and transitive (there). That is the exact,
1961gold-standard sense in which the calibration is a gauge: the admissible costs,
1962modulo the calibration datum, form a faithful continuum of choices isomorphic to
1963the gauge group itself, with no algebraically preferred member. Calibration
1964`λ = 1` removes exactly this one real degree of freedom to single out `J`. -/
1965theorem costLambda_injective {l m : ℝ} (hl : 0 < l) (hm : 0 < m)
1966 (h : ∀ x : ℝ, costLambda l x = costLambda m x) : l = m := by
1967 have hG : Cost.FunctionalEquation.G (costLambda l)
1968 = Cost.FunctionalEquation.G (costLambda m) := by
1969 funext t; simp only [Cost.FunctionalEquation.G]; rw [h]
1970 have hsq : l ^ 2 = m ^ 2 := by
1971 have e := calibration_value_costLambda l
1972 rw [hG, calibration_value_costLambda m] at e
1973 exact e.symm
1974 have h1 : (l - m) * (l + m) = 0 := by linear_combination hsq
1975 rcases mul_eq_zero.mp h1 with h0 | h0
1976 · linarith
1977 · linarith
1978
1979/-- **A single point-evaluation fixes the gauge: one real datum suffices.**
1980
1981This is strictly sharper than `costLambda_injective`. That theorem needs the
1982two costs to agree *everywhere* (equivalently, equal log-coordinate curvature)
1983to conclude `l = m`. Here we need agreement at a **single** point `x₀ > 1`:
1984if `F_l(x₀) = F_m(x₀)` and `l, m > 0`, then `l = m`.
1985
1986Operationally this is the load-bearing statement of the gauge story. The
1987family `{F_λ : λ > 0}` is a torsor under the multiplicative-automorphism group
1988(`costLambda_gauge_transitive` + `costLambda_injective`), so fixing the gauge
1989costs exactly one real degree of freedom. This theorem says that degree of
1990freedom is pinned by one measurement: the value of the cost at any single
1991distinction ratio `x₀ ≠ 1`. The recognition quantum, viewed through δ, is
1992precisely this one datum; no further structure is needed to single out `J`
1993once it is supplied.
1994
1995Proof: write `a = x₀^l`, `b = x₀^m`; both exceed `1` (base `> 1`, exponent
1996`> 0`). Equality of `F` gives `a + a⁻¹ = b + b⁻¹`, i.e. `(a-b)(ab-1) = 0`.
1997Since `ab > 1`, the second factor is nonzero, so `a = b`, and strict
1998monotonicity of `t ↦ x₀^t` (base `> 1`) gives `l = m`. -/
1999theorem costLambda_single_point_calibration {x₀ l m : ℝ}
2000 (hx₀ : 1 < x₀) (hl : 0 < l) (hm : 0 < m)
2001 (h : costLambda l x₀ = costLambda m x₀) : l = m := by
2002 have hx0pos : (0 : ℝ) < x₀ := lt_trans one_pos hx₀
2003 have hapos : 0 < x₀ ^ l := Real.rpow_pos_of_pos hx0pos l
2004 have hbpos : 0 < x₀ ^ m := Real.rpow_pos_of_pos hx0pos m
2005 have ha1 : 1 < x₀ ^ l := (Real.one_lt_rpow_iff_of_pos hx0pos).mpr (Or.inl ⟨hx₀, hl⟩)
2006 have hb1 : 1 < x₀ ^ m := (Real.one_lt_rpow_iff_of_pos hx0pos).mpr (Or.inl ⟨hx₀, hm⟩)
2007 unfold costLambda at h
2008 rw [Real.rpow_neg (le_of_lt hx0pos) l, Real.rpow_neg (le_of_lt hx0pos) m] at h
2009 have h2 : x₀ ^ l + (x₀ ^ l)⁻¹ = x₀ ^ m + (x₀ ^ m)⁻¹ := by linarith
2010 have hane : x₀ ^ l ≠ 0 := ne_of_gt hapos
2011 have hbne : x₀ ^ m ≠ 0 := ne_of_gt hbpos
2012 -- Clear denominators: a + a⁻¹ = b + b⁻¹ becomes the factored cubic identity.
2013 have hexpand : (x₀ ^ l) ^ 2 * x₀ ^ m + x₀ ^ m
2014 = x₀ ^ l * (x₀ ^ m) ^ 2 + x₀ ^ l := by
2015 have lhs : (x₀ ^ l + (x₀ ^ l)⁻¹) * (x₀ ^ l * x₀ ^ m)
2016 = (x₀ ^ l) ^ 2 * x₀ ^ m + x₀ ^ m := by field_simp
2017 have rhs : (x₀ ^ m + (x₀ ^ m)⁻¹) * (x₀ ^ l * x₀ ^ m)
2018 = x₀ ^ l * (x₀ ^ m) ^ 2 + x₀ ^ l := by field_simp
2019 rw [← lhs, ← rhs, h2]
2020 have key : (x₀ ^ l - x₀ ^ m) * (x₀ ^ l * x₀ ^ m - 1) = 0 := by
2021 linear_combination hexpand
2022 have hab : x₀ ^ l = x₀ ^ m := by
2023 rcases mul_eq_zero.mp key with hd | hd
2024 · linarith
2025 · exfalso; nlinarith [ha1, hb1, hapos, hbpos]
2026 have hle : l ≤ m := (Real.rpow_le_rpow_left_iff hx₀).mp (le_of_eq hab)
2027 have hge : m ≤ l := (Real.rpow_le_rpow_left_iff hx₀).mp (le_of_eq hab.symm)
2028 linarith
2029
2030/-- **Honest stratification of the load-bearing cost joint (single exact
2031object).**
2032
2033This structure states, as one Lean object, exactly what is forced and what is a
2034gauge at the joint where the δ-program forces (or fails to force) the cost
2035function J. Each field is discharged by a named theorem; nothing here is prose.
2036
2037* `form_forced`: the algebraic laws (reciprocal symmetry, normalization, the
2038 composition law/RCL, continuity) hold for the entire one-parameter family
2039 `F_λ = costLambda λ`, `λ > 0`. So the algebra forces the cost *form*, not a
2040 single function. (`composition_law_admits_full_scale_family`.)
2041* `gauge_orbit`: that family is the orbit of `Cost.Jcost` under the automorphism
2042 group of `(ℝ_{>0}, ×)`: `F_λ(x) = J(x^λ)` with `x ↦ x^λ` multiplicative.
2043 (`calibration_is_mul_automorphism_gauge`.)
2044* `calibration_selects_jcost`: within the family, the calibration condition of
2045 `law_of_logic_forces_jcost` holds iff `λ = 1` (for `λ > 0`), and that member is
2046 `Cost.Jcost` on the positives. So calibration is exactly the within-form
2047 selector of J. (`isCalibrated_costLambda_pos_iff`, `costLambda_one_eq_jcost`.)
2048* `gauge_not_forced`: there is a member of the family (`λ = 2`) clearing every
2049 algebraic law yet differing from J, so the algebra alone does not fix the gauge
2050 (the calibration constant). (`composition_law_without_calibration_does_not_force_jcost`.)
2051
2052Read together: δ and the algebraic laws force the cost form; calibration
2053`λ² = 1` selects J within it; and the value of the calibration constant is a
2054multiplicative-automorphism gauge that the δ structure does not pin. This is the
2055honest terminal statement of the joint. -/
2056structure PRCCostJointStratification : Prop where
2057 form_forced :
2058 ∀ l : ℝ, 0 < l →
2059 Cost.FunctionalEquation.IsReciprocalCost (costLambda l) ∧
2060 Cost.FunctionalEquation.IsNormalized (costLambda l) ∧
2061 Cost.FunctionalEquation.SatisfiesCompositionLaw (costLambda l) ∧
2062 ContinuousOn (costLambda l) (Set.Ioi 0)
2063 gauge_orbit :
2064 (∀ l x : ℝ, 0 < x → costLambda l x = Cost.Jcost (x ^ l)) ∧
2065 (∀ l x y : ℝ, 0 < x → 0 < y → (x * y) ^ l = x ^ l * y ^ l)
2066 calibration_selects_jcost :
2067 (∀ l : ℝ, 0 < l →
2068 (Cost.FunctionalEquation.IsCalibrated (costLambda l) ↔ l = 1)) ∧
2069 (∀ x : ℝ, 0 < x → costLambda 1 x = Cost.Jcost x)
2070 gauge_not_forced :
2071 ∃ F : ℝ → ℝ,
2072 Cost.FunctionalEquation.IsReciprocalCost F ∧
2073 Cost.FunctionalEquation.IsNormalized F ∧
2074 Cost.FunctionalEquation.SatisfiesCompositionLaw F ∧
2075 ContinuousOn F (Set.Ioi 0) ∧
2076 F ≠ Cost.Jcost
2077
2078/-- The honest stratification of the cost joint holds, assembled from the
2079pass 331/331b/332/333 theorems. -/
2080theorem prc_cost_joint_stratification : PRCCostJointStratification where
2081 form_forced := composition_law_admits_full_scale_family
2082 gauge_orbit :=
2083 ⟨calibration_is_mul_automorphism_gauge.1,
2084 calibration_is_mul_automorphism_gauge.2.1⟩
2085 calibration_selects_jcost :=
2086 ⟨fun _ hl => isCalibrated_costLambda_pos_iff hl, costLambda_one_eq_jcost⟩
2087 gauge_not_forced := composition_law_without_calibration_does_not_force_jcost
2088
2089/-- **Strength separation for J-forcing (single exact object).**
2090
2091The program's central claim, stated as a checked proposition rather than a
2092docstring: J is *not* forced at δ-only carrier strength, but *is* selected at
2093completion (trace-closure) strength, and trace-closure is a strictly stronger
2094commitment than δ-only in the K1 ledger order. This is the type-level form of
2095"J is forced only on the continuous completion": the same forcing question
2096gets opposite answers at two strengths, with a genuine strengthening between
2097them.
2098
2099* `delta_only_does_not_force`: on the δ-native rational carrier, for every
2100 prime orbit there is a PRC ratio character fixing every other prime axis and
2101 inverting that one, an orientation distinct from J's. So no δ-only datum
2102 forces J. (`prc_every_prime_axis_orientation_free`.)
2103* `completion_selects_jcost`: on the completion, within the forced cost form,
2104 the calibration condition holds iff `λ = 1`, selecting J.
2105 (`isCalibrated_costLambda_pos_iff`.)
2106* `strength_strictly_increases`: `deltaOnly < traceClosure` in the commitment
2107 order, so the strength that forces J strictly exceeds the strength at which it
2108 provably fails. (`StrengthTag.deltaOnly_lt_traceClosure`.)
2109
2110Without the third field this would be two unrelated facts; with it the object
2111asserts that the gap between the failing strength and the forcing strength is
2112real and ordered, which is exactly the non-bookkeeping content. -/
2113structure PRCJCostStrengthSeparation : Prop where
2114 delta_only_does_not_force :
2115 ∀ (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p),
2116 ∃ χ : RatioOrbit → RatioOrbit,
2117 PRCRatioCharacter χ ∧
2118 (∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
2119 r ≠ p →
2120 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)) ∧
2121 ¬ RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
2122 completion_selects_jcost :
2123 ∀ l : ℝ, 0 < l →
2124 (Cost.FunctionalEquation.IsCalibrated (costLambda l) ↔ l = 1)
2125 strength_strictly_increases :
2126 StrengthTag.deltaOnly < StrengthTag.traceClosure
2127
2128/-- The strength separation holds: δ-only fails to force J, the completion
2129selects it, and the completion strength is strictly stronger. No project-local
2130axioms. -/
2131theorem prc_jcost_strength_separation : PRCJCostStrengthSeparation where
2132 delta_only_does_not_force := prc_every_prime_axis_orientation_free
2133 completion_selects_jcost := fun _ hl => isCalibrated_costLambda_pos_iff hl
2134 strength_strictly_increases := StrengthTag.deltaOnly_lt_traceClosure
2135
2136/-- **The gauge group acts on the entire cost-solution set (exact).**
2137
2138The cost-joint stratification proves the `costLambda` family *is* a set of
2139solutions (`form_forced`: family ⊆ solutions) and exhibits one non-`J` solution
2140(`gauge_not_forced`). What it does not prove is that the gauge action stays
2141inside the solution set at all. This theorem supplies that: for every `a > 0`,
2142the gauge substitution `x ↦ x^a` carries any solution of the four algebraic
2143laws (reciprocal symmetry, normalization, the composition law/RCL, continuity
2144on the positives) to another solution of the same four laws.
2145
2146This is the structural half of completeness. The full completeness claim is
2147`{four-law solutions} = {costLambda λ : λ > 0}` (the gauge orbit is the *entire*
2148residual freedom, not merely *some* of it). The family ⊆ solutions direction is
2149`form_forced`; the reverse needs (i) the gauge acting on all solutions (proved
2150here) and (ii) every solution being gauge-equivalent to a calibrated one, which
2151is the curvature-normalization fact isolated in
2152`PRCFourLawCompletenessTarget` below. With this theorem the solution set is
2153*gauge-stable*: it is a union of `Aut(ℝ_{>0}, ×)`-orbits, so the calibration
2154freedom is the only freedom that can possibly distinguish members. -/
2155theorem cost_laws_gauge_invariant {F : ℝ → ℝ} {a : ℝ} (ha : 0 < a)
2156 (hRecip : Cost.FunctionalEquation.IsReciprocalCost F)
2157 (hNorm : Cost.FunctionalEquation.IsNormalized F)
2158 (hComp : Cost.FunctionalEquation.SatisfiesCompositionLaw F)
2159 (hCont : ContinuousOn F (Set.Ioi 0)) :
2160 Cost.FunctionalEquation.IsReciprocalCost (fun x => F (x ^ a)) ∧
2161 Cost.FunctionalEquation.IsNormalized (fun x => F (x ^ a)) ∧
2162 Cost.FunctionalEquation.SatisfiesCompositionLaw (fun x => F (x ^ a)) ∧
2163 ContinuousOn (fun x => F (x ^ a)) (Set.Ioi 0) := by
2164 refine ⟨?_, ?_, ?_, ?_⟩
2165 · intro x hx
2166 have hxa : (0 : ℝ) < x ^ a := Real.rpow_pos_of_pos hx a
2167 show F (x ^ a) = F (x⁻¹ ^ a)
2168 rw [Real.inv_rpow (le_of_lt hx) a]
2169 exact hRecip _ hxa
2170 · show F ((1 : ℝ) ^ a) = 0
2171 rw [Real.one_rpow]; exact hNorm
2172 · intro x y hx hy
2173 have hxa : (0 : ℝ) < x ^ a := Real.rpow_pos_of_pos hx a
2174 have hya : (0 : ℝ) < y ^ a := Real.rpow_pos_of_pos hy a
2175 show F ((x * y) ^ a) + F ((x / y) ^ a)
2176 = 2 * F (x ^ a) * F (y ^ a) + 2 * F (x ^ a) + 2 * F (y ^ a)
2177 rw [Real.mul_rpow (le_of_lt hx) (le_of_lt hy),
2178 Real.div_rpow (le_of_lt hx) (le_of_lt hy) a]
2179 exact hComp _ _ hxa hya
2180 · have hf : ContinuousOn (fun x : ℝ => x ^ a) (Set.Ioi 0) :=
2181 (Real.continuous_rpow_const (le_of_lt ha)).continuousOn
2182 have hmaps : Set.MapsTo (fun x : ℝ => x ^ a) (Set.Ioi 0) (Set.Ioi 0) :=
2183 fun x hx => Real.rpow_pos_of_pos hx a
2184 exact hCont.comp hf hmaps
2185
2186/-- **The isolated analytic blocker for four-law completeness (exact Prop).**
2187
2188This is the one fact that, together with `cost_laws_gauge_invariant` and
2189`law_of_logic_forces_jcost`, would close completeness
2190(`{four-law solutions} ⊆ {costLambda λ}`). It says: every non-trivial solution
2191of the four algebraic laws is gauge-equivalent to a *calibrated* solution: that
2192is, there is a positive gauge exponent `c` that rescales `F` to unit log-curvature.
2193
2194It is stated, not proved, because the proof requires the uncalibrated
2195d'Alembert classification (continuous solutions are `cosh(c·)` for a *free*
2196frequency `c`), whereas the existing `FunctionalEquation` pipeline bakes in the
2197calibration `c = 1` from the start (`dAlembert_cosh_solution` assumes
2198`deriv (deriv H) 0 = 1`). Generalizing that to a free frequency, and excluding
2199the oscillatory `cos(c·)` branch via the cost positivity, is a genuine piece of
2200analysis. Isolating it here as an exact statement, rather than asserting
2201completeness, is the honest terminal form of this track. -/
2202def PRCFourLawCompletenessTarget : Prop :=
2203 ∀ F : ℝ → ℝ,
2204 Cost.FunctionalEquation.IsReciprocalCost F →
2205 Cost.FunctionalEquation.IsNormalized F →
2206 Cost.FunctionalEquation.SatisfiesCompositionLaw F →
2207 ContinuousOn F (Set.Ioi 0) →
2208 (0 < deriv (deriv (Cost.FunctionalEquation.G F)) 0) →
2209 ∃ c : ℝ, 0 < c ∧
2210 Cost.FunctionalEquation.IsCalibrated (fun x => F (x ^ c⁻¹))
2211
2212/-- **Four-law completeness, conditional on the isolated blocker (exact).**
2213
2214Given the calibratability fact `PRCFourLawCompletenessTarget`, every non-trivial
2215solution of the four algebraic laws *is* a member of the `costLambda` family.
2216Combined with `composition_law_admits_full_scale_family` (family ⊆ solutions),
2217this is the biconditional: the four-law solution set with positive log-curvature
2218is *exactly* the gauge orbit `{costLambda c : c > 0}`. So the calibration unit
2219is provably the *only* residual freedom: nothing outside the gauge orbit
2220satisfies the laws. The hypothesis is the sole analytic input; the rest is the
2221rescaling reduction discharged through `law_of_logic_forces_jcost` and the
2222gauge-orbit identity `costLambda c x = J(x^c)`. -/
2223theorem cost_laws_complete_of_calibratable
2224 [Cost.FunctionalEquation.AczelSmoothnessPackage]
2225 (hTarget : PRCFourLawCompletenessTarget)
2226 {F : ℝ → ℝ}
2227 (hRecip : Cost.FunctionalEquation.IsReciprocalCost F)
2228 (hNorm : Cost.FunctionalEquation.IsNormalized F)
2229 (hComp : Cost.FunctionalEquation.SatisfiesCompositionLaw F)
2230 (hCont : ContinuousOn F (Set.Ioi 0))
2231 (hκ : 0 < deriv (deriv (Cost.FunctionalEquation.G F)) 0) :
2232 ∃ c : ℝ, 0 < c ∧ ∀ x : ℝ, 0 < x → F x = costLambda c x := by
2233 obtain ⟨c, hc, hCalib⟩ := hTarget F hRecip hNorm hComp hCont hκ
2234 -- The rescaled solution `F̃(y) = F(y^(1/c))` satisfies all four laws (gauge
2235 -- invariance with exponent `c⁻¹`) and is calibrated (the hypothesis), so it
2236 -- equals `J` by `law_of_logic_forces_jcost`.
2237 have hcinv : 0 < c⁻¹ := inv_pos.mpr hc
2238 obtain ⟨hR, hN, hC, hCo⟩ := cost_laws_gauge_invariant hcinv hRecip hNorm hComp hCont
2239 have hJ : ∀ x : ℝ, 0 < x → F (x ^ c⁻¹) = Cost.Jcost x :=
2240 Cost.FunctionalEquation.law_of_logic_forces_jcost
2241 (fun x => F (x ^ c⁻¹)) hR hN hC hCalib hCo
2242 refine ⟨c, hc, ?_⟩
2243 intro x hx
2244 -- `F x = F((x^c)^(1/c)) = J(x^c) = costLambda c x`.
2245 have hxc : (0 : ℝ) < x ^ c := Real.rpow_pos_of_pos hx c
2246 have hpow : (x ^ c) ^ c⁻¹ = x := by
2247 rw [← Real.rpow_mul (le_of_lt hx), mul_inv_cancel₀ (ne_of_gt hc), Real.rpow_one]
2248 calc F x = F ((x ^ c) ^ c⁻¹) := by rw [hpow]
2249 _ = Cost.Jcost (x ^ c) := hJ (x ^ c) hxc
2250 _ = costLambda c x := (calibration_is_mul_automorphism_gauge.1 c x hx).symm
2251
2252/-- Second derivative of a left-scaled function at the origin: for `g`
2253with `deriv g` differentiable, `(t ↦ g(m·t))'' (0) = m² · g''(0)`. Pure
2254calculus; the scaling factor squares because it is pulled out once per
2255differentiation. Used to transport the calibration (log-curvature) of a cost
2256under the gauge substitution `x ↦ x^a`. -/
2257theorem deriv2_comp_mul_left_at_zero (g : ℝ → ℝ) (m : ℝ)
2258 (hg2 : Differentiable ℝ (deriv g)) :
2259 deriv (deriv (fun s => g (m * s))) 0 = m ^ 2 * deriv (deriv g) 0 := by
2260 have h1 : deriv (fun s => g (m * s)) = fun s => m * deriv g (m * s) := by
2261 funext s
2262 simpa [smul_eq_mul] using deriv_comp_mul_left m g s
2263 rw [h1]
2264 have hd : DifferentiableAt ℝ (fun s => deriv g (m * s)) 0 :=
2265 (hg2 (m * 0)).comp 0 (by fun_prop)
2266 rw [deriv_const_mul m hd]
2267 have h3 : deriv (fun s => deriv g (m * s)) 0 = m * deriv (deriv g) (m * 0) := by
2268 simpa [smul_eq_mul] using deriv_comp_mul_left m (deriv g) 0
2269 rw [h3]; simp only [mul_zero]; ring
2270
2271/-- **The isolated analytic blocker is a theorem (T1′ discharged).**
2272
2273Every positive-log-curvature solution of the four algebraic laws is
2274gauge-equivalent to a calibrated one. This proves `PRCFourLawCompletenessTarget`
2275outright, so the conditional `cost_laws_complete_of_calibratable` becomes
2276unconditional (`prc_four_law_completeness` below).
2277
2278Proof: a four-law `F` has `G F = F ∘ exp` smooth, because `H F = G F + 1` is a
2279continuous d'Alembert solution and `AczelSmoothnessPackage` makes such solutions
2280`C^∞`. Let `κ = G F''(0) > 0` and `c = √κ`. The gauge substitution
2281`x ↦ x^{1/c}` sends `G F` to `t ↦ G F(t/c)`, whose second derivative at the
2282origin is `c⁻² · κ = 1` (`deriv2_comp_mul_left_at_zero`). So the rescaled cost
2283is calibrated. -/
2284theorem prc_four_law_completeness_target
2285 [Cost.FunctionalEquation.AczelSmoothnessPackage] :
2286 PRCFourLawCompletenessTarget := by
2287 intro F hRecip hNorm hComp hCont hκ
2288 set Gf := Cost.FunctionalEquation.G F with hGf_def
2289 set Hf := Cost.FunctionalEquation.H F with hHf_def
2290 -- H F is a continuous d'Alembert solution with H F 0 = 1.
2291 have h_H0 : Hf 0 = 1 := by
2292 show Cost.FunctionalEquation.H F 0 = 1
2293 simp only [Cost.FunctionalEquation.H, Cost.FunctionalEquation.G, Real.exp_zero]
2294 rw [hNorm]; ring
2295 have h_G_cont : Continuous Gf := by
2296 have h := ContinuousOn.comp_continuous hCont Real.continuous_exp
2297 have h' : Continuous (fun t => F (Real.exp t)) :=
2298 h (by intro t; exact Set.mem_Ioi.mpr (Real.exp_pos t))
2299 simpa [hGf_def, Cost.FunctionalEquation.G] using h'
2300 have h_H_cont : Continuous Hf := by
2301 simpa [hHf_def, Cost.FunctionalEquation.H] using h_G_cont.add continuous_const
2302 have hCoshAdd : Cost.FunctionalEquation.CoshAddIdentity F :=
2303 Cost.FunctionalEquation.composition_law_equiv_coshAdd F |>.mp hComp
2304 have h_direct : Cost.FunctionalEquation.DirectCoshAdd Gf :=
2305 Cost.FunctionalEquation.CoshAddIdentity_implies_DirectCoshAdd F hCoshAdd
2306 have h_dAlembert : ∀ t u, Hf (t + u) + Hf (t - u) = 2 * Hf t * Hf u := by
2307 intro t u
2308 have hG := h_direct t u
2309 have h_goal : (Gf (t + u) + 1) + (Gf (t - u) + 1)
2310 = 2 * (Gf t + 1) * (Gf u + 1) := by
2311 calc (Gf (t + u) + 1) + (Gf (t - u) + 1)
2312 = (Gf (t + u) + Gf (t - u)) + 2 := by ring
2313 _ = (2 * (Gf t * Gf u) + 2 * (Gf t + Gf u)) + 2 := by rw [hG]
2314 _ = 2 * (Gf t + 1) * (Gf u + 1) := by ring
2315 simpa [hHf_def, Cost.FunctionalEquation.H, hGf_def] using h_goal
2316 -- Smoothness, hence twice-differentiability of G F.
2317 have hHsmooth : ContDiff ℝ ⊤ Hf :=
2318 Cost.FunctionalEquation.aczel_dAlembert_smooth Hf h_H0 h_H_cont h_dAlembert
2319 have hGf_smooth : ContDiff ℝ ⊤ Gf := by
2320 have he : Gf = fun t => Hf t - 1 := by
2321 funext t; simp [hGf_def, hHf_def, Cost.FunctionalEquation.H]
2322 rw [he]; exact hHsmooth.sub contDiff_const
2323 have hGf_diff2 : Differentiable ℝ (deriv Gf) :=
2324 (contDiff_infty_iff_deriv.mp
2325 (contDiff_infty_iff_deriv.mp (hGf_smooth.of_le le_top)).2).1
2326 -- Curvature and the calibrating exponent.
2327 set c := Real.sqrt (deriv (deriv Gf) 0) with hc_def
2328 have hcpos : 0 < c := Real.sqrt_pos.mpr hκ
2329 have hc2 : c ^ 2 = deriv (deriv Gf) 0 := Real.sq_sqrt (le_of_lt hκ)
2330 refine ⟨c, hcpos, ?_⟩
2331 show deriv (deriv (Cost.FunctionalEquation.G (fun x => F (x ^ c⁻¹)))) 0 = 1
2332 have hGtilde :
2333 Cost.FunctionalEquation.G (fun x => F (x ^ c⁻¹)) = fun t => Gf (c⁻¹ * t) := by
2334 funext t
2335 show F ((Real.exp t) ^ c⁻¹) = Gf (c⁻¹ * t)
2336 rw [Real.rpow_def_of_pos (Real.exp_pos t), Real.log_exp, mul_comm t c⁻¹]
2337 simp [hGf_def, Cost.FunctionalEquation.G]
2338 rw [hGtilde, deriv2_comp_mul_left_at_zero Gf c⁻¹ hGf_diff2,
2339 inv_pow, ← hc2, inv_mul_cancel₀ (pow_ne_zero 2 (ne_of_gt hcpos))]
2340
2341/-- **Four-law completeness, unconditional (T1′ closed).**
2342
2343Every positive-log-curvature solution of the four algebraic laws equals
2344`costLambda c` for some `c > 0`. With `composition_law_admits_full_scale_family`
2345(family ⊆ solutions) this is the biconditional: the positive-curvature four-law
2346solution set is *exactly* the gauge orbit `{costLambda c : c > 0}`. The
2347calibration unit is therefore provably the only residual freedom: nothing
2348outside the gauge orbit satisfies the laws. -/
2349theorem prc_four_law_completeness
2350 [Cost.FunctionalEquation.AczelSmoothnessPackage]
2351 {F : ℝ → ℝ}
2352 (hRecip : Cost.FunctionalEquation.IsReciprocalCost F)
2353 (hNorm : Cost.FunctionalEquation.IsNormalized F)
2354 (hComp : Cost.FunctionalEquation.SatisfiesCompositionLaw F)
2355 (hCont : ContinuousOn F (Set.Ioi 0))
2356 (hκ : 0 < deriv (deriv (Cost.FunctionalEquation.G F)) 0) :
2357 ∃ c : ℝ, 0 < c ∧ ∀ x : ℝ, 0 < x → F x = costLambda c x :=
2358 cost_laws_complete_of_calibratable prc_four_law_completeness_target
2359 hRecip hNorm hComp hCont hκ
2360
2361/-- **The residual cost freedom is exactly one positive real (gauge is a torsor).**
2362
2363`prc_four_law_completeness` gives *existence* of a calibrating exponent
2364(`∃ c > 0`). This upgrades it to *unique* existence (`∃!`): every
2365positive-curvature four-law solution `F` equals `costLambda c` for one and only
2366one `c > 0`. So the gauge orbit is a torsor under the multiplicative-automorphism
2367group with no redundancy: the freedom δ leaves in the cost is precisely one
2368positive real, and that real is pinned by `F` itself. This is the exact
2369quantification of the program's "what is forced versus assumed": the cost *form*
2370is forced (the four laws plus positive curvature), and exactly one positive-real
2371*unit* is assumed, uniquely.
2372
2373The uniqueness half is `costLambda_single_point_calibration`: two calibrating
2374exponents both reproduce `F`, hence agree at the single distinction ratio
2375`x₀ = 2 > 1`, which already forces them equal. No new analysis; this packages
2376free action (`costLambda_injective`), transitive action
2377(`costLambda_gauge_transitive`), and surjectivity (`prc_four_law_completeness`)
2378into the one torsor statement those docstrings only asserted in prose. -/
2379theorem prc_cost_freedom_is_one_real
2380 [Cost.FunctionalEquation.AczelSmoothnessPackage]
2381 {F : ℝ → ℝ}
2382 (hRecip : Cost.FunctionalEquation.IsReciprocalCost F)
2383 (hNorm : Cost.FunctionalEquation.IsNormalized F)
2384 (hComp : Cost.FunctionalEquation.SatisfiesCompositionLaw F)
2385 (hCont : ContinuousOn F (Set.Ioi 0))
2386 (hκ : 0 < deriv (deriv (Cost.FunctionalEquation.G F)) 0) :
2387 ∃! c : ℝ, 0 < c ∧ ∀ x : ℝ, 0 < x → F x = costLambda c x := by
2388 obtain ⟨c, hcpos, hc⟩ := prc_four_law_completeness hRecip hNorm hComp hCont hκ
2389 refine ⟨c, ⟨hcpos, hc⟩, ?_⟩
2390 rintro d ⟨hdpos, hd⟩
2391 have h2 : costLambda d 2 = costLambda c 2 := by
2392 rw [← hd 2 (by norm_num), ← hc 2 (by norm_num)]
2393 exact costLambda_single_point_calibration (by norm_num : (1 : ℝ) < 2) hdpos hcpos h2
2394
2395/-- **The completion strictly extends the δ-native carrier (cost-independent).**
2396
2397The strength separation `prc_jcost_strength_separation` witnesses the
2398carrier/completion gap *through the cost*: J-forcing fails on the δ-native
2399carrier and holds on the completion. This theorem gives the same gap at the most
2400primitive level, with no reference to cost at all: the completion `ℝ` contains a
2401square root of `2`, while no element of the δ-native rational carrier
2402`RatioOrbit` has a value squaring to `2` (its verifier image lies in `ℚ`, and
2403`√2` is irrational). So the move from the carrier to the completion is a genuine
2404extension: the carrier cannot even express the limits the completion supplies,
2405quite apart from whether any cost is forced. This is the algebraic root of the
2406program's "J is forced only on the continuous completion": the completion is a
2407strictly larger object, tagged `traceClosure` and provably above the δ-only
2408floor (`StrengthTag.deltaOnly_lt_traceClosure`). -/
2409theorem prc_completion_strictly_extends_carrier :
2410 (∃ x : ℝ, x ^ 2 = 2) ∧
2411 ¬ ∃ q : RatioOrbit, ((RatioOrbit.toRat q : ℝ)) ^ 2 = 2 := by
2412 refine ⟨⟨Real.sqrt 2, Real.sq_sqrt (by norm_num)⟩, ?_⟩
2413 rintro ⟨q, hq⟩
2414 have hirr : Irrational (Real.sqrt 2) := irrational_sqrt_two
2415 have hsqrt : Real.sqrt 2 = |(RatioOrbit.toRat q : ℝ)| := by
2416 have h := Real.sqrt_sq_eq_abs (RatioOrbit.toRat q : ℝ)
2417 rw [hq] at h; exact h
2418 rw [hsqrt] at hirr
2419 exact hirr ⟨|RatioOrbit.toRat q|, by rw [Rat.cast_abs]⟩
2420
2421/-- The δ-native rational field (standard model `ℚ`) has no square root of `2`:
2422the carrier is not even real-closed, let alone complete. -/
2423theorem rat_no_sqrt_two : ¬ ∃ q : ℚ, q ^ 2 = 2 := by
2424 rintro ⟨q, hq⟩
2425 have hcast : ((q : ℝ)) ^ 2 = 2 := by exact_mod_cast hq
2426 have hirr : Irrational (Real.sqrt 2) := irrational_sqrt_two
2427 have h := Real.sqrt_sq_eq_abs (q : ℝ)
2428 rw [hcast] at h
2429 rw [h] at hirr
2430 exact hirr ⟨|q|, by rw [Rat.cast_abs]⟩
2431
2432/-- The continuum `ℝ` is not countable (type-level). -/
2433theorem real_not_countable : ¬ Countable ℝ := by
2434 intro h
2435 haveI := h
2436 exact Cardinal.not_countable_real Set.countable_univ
2437
2438/-- `√2` is algebraic over `ℚ`: it is a root of `X^2 - 2`, the cleanest
2439δ-posable polynomial comparison that the bare rational field cannot answer
2440(`forced_field_has_gap`). -/
2441theorem sqrt_two_isAlgebraic : IsAlgebraic ℚ (Real.sqrt 2) := by
2442 refine ⟨Polynomial.X ^ 2 - Polynomial.C 2, ?_, ?_⟩
2443 · exact Polynomial.X_pow_sub_C_ne_zero (by norm_num) 2
2444 · have h2 : (Real.sqrt 2) ^ 2 = 2 := Real.sq_sqrt (by norm_num)
2445 simp only [map_sub, map_pow, Polynomial.aeval_X, Polynomial.aeval_C]
2446 rw [show (algebraMap ℚ ℝ) 2 = (2 : ℝ) by norm_num, h2, sub_self]
2447
2448/-- **§5.1 / §9 backing: closing δ's algebraic questions never escapes
2449countability.**
2450
2451The `prc_continuum_not_forced` docstring asserts in prose that even the *real
2452closure* of the δ-forced field — the real algebraic numbers, the carrier in
2453which every δ-posable *polynomial* comparison resolves, including the `√2` gap
2454that the bare rational field `ℚ` misses — stays countable, so closing δ's
2455algebraic questions never escapes countability. That claim is here a checked
2456theorem rather than a label:
2457
2458* the set of reals algebraic over `ℚ` is countable (`Algebraic.countable`);
2459* it does contain `√2`, the specific gap `ℚ` lacks (`sqrt_two_isAlgebraic`);
2460* `ℝ` is uncountable (`real_not_countable`).
2461
2462So the most generous algebraic closure of the δ-forced field is still strictly
2463below the continuum. This pins the precise arena for the §9 target
2464(now CLOSED, positive — see `dAlembert_cosh_of_monotone` and
2465`composition_law_monotone_forces_costLambda` below): a countable field in which
2466all polynomial δ-questions resolve is exactly where one asks whether `J` can be
2467forced *without* completeness, and the answer is yes. The cardinality gap
2468survives the algebraic closure; only the completeness posit crosses it. -/
2469theorem delta_algebraic_closure_stays_countable :
2470 Set.Countable { x : ℝ | IsAlgebraic ℚ x }
2471 ∧ IsAlgebraic ℚ (Real.sqrt 2)
2472 ∧ ¬ Countable ℝ :=
2473 ⟨Algebraic.countable ℚ ℝ, sqrt_two_isAlgebraic, real_not_countable⟩
2474
2475/-- **§9 payoff, family form: monotonicity forces `F` into the `costLambda` family.**
2476
2477Sharpens `composition_law_monotone_forces_cosh_family` to the statement directly
2478comparable to the `ContinuousOn` family theorem `composition_law_admits_full_scale_family`:
2479a reciprocal-symmetric, normalized, composition-law cost that is monotone (via
2480`H_F` on `[0,∞)`) equals `costLambda c` on `(0,∞)` for a single real `c`. The
2481residual `c` is exactly the one unit-of-scale posit; with the calibration
2482`c = 1` this is `Cost.Jcost`. No completeness is used anywhere. -/
2483theorem composition_law_monotone_forces_costLambda (F : ℝ → ℝ)
2484 (hRecip : Cost.FunctionalEquation.IsReciprocalCost F)
2485 (hNorm : Cost.FunctionalEquation.IsNormalized F)
2486 (hComp : Cost.FunctionalEquation.SatisfiesCompositionLaw F)
2487 (hMono : MonotoneOn (Cost.FunctionalEquation.H F) (Set.Ici (0 : ℝ))) :
2488 ∃ c : ℝ, ∀ x : ℝ, 0 < x → F x = costLambda c x := by
2489 obtain ⟨c, hc⟩ :=
2490 composition_law_monotone_forces_cosh_family F hRecip hNorm hComp hMono
2491 refine ⟨c, ?_⟩
2492 intro x hx
2493 have htx : x = Real.exp (Real.log x) := (Real.exp_log hx).symm
2494 have h1 : Cost.FunctionalEquation.H F (Real.log x) = Real.cosh (c * Real.log x) := hc _
2495 have h2 : Cost.FunctionalEquation.H F (Real.log x) = F x + 1 := by
2496 simp only [Cost.FunctionalEquation.H, Cost.FunctionalEquation.G]
2497 rw [← htx]
2498 have h3 : costLambda c x = Real.cosh (c * Real.log x) - 1 := by
2499 have hg := congrFun (G_costLambda c) (Real.log x)
2500 simp only [Cost.FunctionalEquation.G] at hg
2501 rw [← htx] at hg
2502 exact hg
2503 have hsum : F x + 1 = Real.cosh (c * Real.log x) := by rw [← h2, h1]
2504 rw [h3]; linarith
2505
2506/-- **§9 capstone: the residual freedom is EXACTLY one positive real.**
2507
2508The scale family `costLambda` is injective in its positive exponent: if
2509`costLambda l` and `costLambda l'` agree on all of `(0,∞)` with `l, l' > 0`, then
2510`l = l'`. Evaluating at `x = 2` turns the equality into
2511`cosh (log 2 · l) = cosh (log 2 · l')`, and `cosh` is injective on `[0,∞)`
2512(`Real.cosh_strictMonoOn`), so `log 2 · l = log 2 · l'`, hence `l = l'`. No
2513completeness is used. Combined with `composition_law_monotone_forces_costLambda`
2514(every monotone solution IS some `costLambda c`), this is the complete
2515completeness-free classification: the monotone, reciprocal, normalized,
2516composition-law costs are faithfully parameterized by exactly one positive real.
2517The residual unit of scale is therefore genuine and irreducible, not an artifact
2518of a loose argument: no order-only datum can collapse it further. -/
2519theorem costLambda_injOn_pos {l l' : ℝ} (hl : 0 < l) (hl' : 0 < l')
2520 (h : ∀ x : ℝ, 0 < x → costLambda l x = costLambda l' x) : l = l' := by
2521 have e : ∀ a : ℝ, (2 : ℝ) ^ a = Real.exp (Real.log 2 * a) := fun a =>
2522 Real.rpow_def_of_pos (by norm_num) a
2523 have hcosh : ∀ a : ℝ,
2524 ((2 : ℝ) ^ a + (2 : ℝ) ^ (-a)) / 2 = Real.cosh (Real.log 2 * a) := by
2525 intro a
2526 rw [Real.cosh_eq, e a, e (-a), show Real.log 2 * (-a) = -(Real.log 2 * a) by ring]
2527 have h2 := h 2 (by norm_num)
2528 unfold costLambda at h2
2529 have h3 : ((2 : ℝ) ^ l + (2 : ℝ) ^ (-l)) / 2
2530 = ((2 : ℝ) ^ l' + (2 : ℝ) ^ (-l')) / 2 := by linarith [h2]
2531 rw [hcosh l, hcosh l'] at h3
2532 have hlog2 : 0 < Real.log 2 := Real.log_pos (by norm_num)
2533 have ha : Real.log 2 * l ∈ Set.Ici (0 : ℝ) := Set.mem_Ici.mpr (by positivity)
2534 have hb : Real.log 2 * l' ∈ Set.Ici (0 : ℝ) := Set.mem_Ici.mpr (by positivity)
2535 have hmul : Real.log 2 * l = Real.log 2 * l' := Real.cosh_strictMonoOn.injOn ha hb h3
2536 exact mul_left_cancel₀ (ne_of_gt hlog2) hmul
2537
2538/-! ### The countability premise, formalized (paper §"Finitary generative systems")
2539
2540The δ non-forcing result rests on one standing premise: distinction is a
2541*finitary generative system*, so its reach is countable. The paper states this as
2542Theorem "Generative systems reach only countable collections" (`thm:countgen`).
2543Here that theorem is upgraded from prose to a machine-checked statement, together
2544with its contrapositive (escaping countability requires a genuinely infinitary
2545input) and the `ℝ` corollary (no finitary system exhausts the real line). This is
2546the formal backing for the premise the paper names, not a closure of the
2547interpretive question of whether distinction *is* such a system. -/
2548
2549/-- Stage `k` of a finitary generative system: seed `S0`, rule set `R` (each rule
2550a finite-arity map `List α → α`). `G₀ = S0`; `G_{k+1}` adjoins every rule applied
2551to a finite tuple of already-reached objects. -/
2552def genStage {α : Type*} (S0 : Set α) (R : Set (List α → α)) : ℕ → Set α
2553 | 0 => S0
2554 | (k + 1) =>
2555 genStage S0 R k ∪
2556 {x | ∃ ρ ∈ R, ∃ l : List α, (∀ y ∈ l, y ∈ genStage S0 R k) ∧ ρ l = x}
2557
2558/-- The generated collection: everything reached in finitely many stages. -/
2559def generated {α : Type*} (S0 : Set α) (R : Set (List α → α)) : Set α :=
2560 ⋃ k, genStage S0 R k
2561
2562/-- The set of lists all of whose entries lie in a countable set is countable. -/
2563theorem countable_setOf_lists_mem {α : Type*} {s : Set α} (hs : s.Countable) :
2564 {l : List α | ∀ y ∈ l, y ∈ s}.Countable := by
2565 have hc : Countable s := hs.to_subtype
2566 rw [← Set.countable_coe_iff]
2567 have key : ∀ (L : {l : List α // ∀ y ∈ l, y ∈ s}),
2568 (L.1.attach.map (fun x => (⟨x.1, L.2 x.1 x.2⟩ : s))).map Subtype.val = L.1 := by
2569 intro L; simp
2570 have hinj : Function.Injective
2571 (fun (L : {l : List α // ∀ y ∈ l, y ∈ s}) =>
2572 L.1.attach.map (fun x => (⟨x.1, L.2 x.1 x.2⟩ : s))) := by
2573 intro L1 L2 hL
2574 apply Subtype.ext
2575 have hL' := congrArg (List.map Subtype.val) hL
2576 rw [key L1, key L2] at hL'
2577 exact hL'
2578 exact hinj.countable
2579
2580/-- **`thm:countgen`: each stage of a finitary generative system is countable.** -/
2581theorem genStage_countable {α : Type*} {S0 : Set α} {R : Set (List α → α)}
2582 (hS0 : S0.Countable) (hR : R.Countable) : ∀ k, (genStage S0 R k).Countable := by
2583 intro k
2584 induction k with
2585 | zero => simpa only [genStage] using hS0
2586 | succ k ih =>
2587 simp only [genStage]
2588 refine Set.Countable.union ih ?_
2589 have hlists : {l : List α | ∀ y ∈ l, y ∈ genStage S0 R k}.Countable :=
2590 countable_setOf_lists_mem ih
2591 have hsub :
2592 {x | ∃ ρ ∈ R, ∃ l : List α,
2593 (∀ y ∈ l, y ∈ genStage S0 R k) ∧ ρ l = x}
2594 = ⋃ ρ ∈ R, ρ '' {l : List α | ∀ y ∈ l, y ∈ genStage S0 R k} := by
2595 ext x
2596 simp only [Set.mem_setOf_eq, Set.mem_iUnion, Set.mem_image]
2597 constructor
2598 · rintro ⟨ρ, hρ, l, hl, rfl⟩; exact ⟨ρ, hρ, l, hl, rfl⟩
2599 · rintro ⟨ρ, hρ, l, hl, rfl⟩; exact ⟨ρ, hρ, l, hl, rfl⟩
2600 rw [hsub]
2601 exact hR.biUnion (fun ρ _ => hlists.image ρ)
2602
2603/-- **`thm:countgen`: the generated collection of a finitary generative system is
2604countable.** Seed countable + countably many finite-arity rules ⇒ reach countable.
2605Completeness-free; the only inputs are countable unions, countable products of
2606countable sets, and images. -/
2607theorem generated_countable {α : Type*} {S0 : Set α} {R : Set (List α → α)}
2608 (hS0 : S0.Countable) (hR : R.Countable) : (generated S0 R).Countable := by
2609 unfold generated
2610 exact Set.countable_iUnion (genStage_countable hS0 hR)
2611
2612/-- **Contrapositive: escaping countability requires a genuinely infinitary input.**
2613If a generative system's reach is uncountable, then either its seed is uncountable
2614or it has uncountably many rules. So the only way distinction could reach the
2615continuum is by an uncountable seed or uncountably many simultaneous rules, i.e. by
2616positing an infinitary act, which is the completeness principle smuggled in. This
2617is the exact "the escape is circular" point of the paper, made precise. -/
2618theorem uncountable_generated_needs_infinitary {α : Type*}
2619 {S0 : Set α} {R : Set (List α → α)}
2620 (h : ¬ (generated S0 R).Countable) : ¬ S0.Countable ∨ ¬ R.Countable := by
2621 by_contra hc
2622 push_neg at hc
2623 exact h (generated_countable hc.1 hc.2)
2624
2625/-- **`ℝ` corollary: no finitary generative system exhausts the real line.**
2626A countable seed closed under countably many finite-arity rules can never reach
2627all of `ℝ`. This is the formal statement that distinction, read as a finitary
2628generative system, does not force the continuum. -/
2629theorem generated_ne_univ_real {S0 : Set ℝ} {R : Set (List ℝ → ℝ)}
2630 (hS0 : S0.Countable) (hR : R.Countable) : generated S0 R ≠ Set.univ := by
2631 intro huniv
2632 have huniv_c : (Set.univ : Set ℝ).Countable := huniv ▸ generated_countable hS0 hR
2633 exact real_not_countable (Set.countable_univ_iff.mp huniv_c)
2634
2635/-- **`cor:measure`: the reach of a finitary generative system on `ℝ` has Lebesgue
2636measure zero.** Countable sets are null for any atomless measure, and Lebesgue
2637volume on `ℝ` is atomless. This is the measure-theoretic form of non-forcing: the
2638reachable reals occupy none of the line. -/
2639theorem generated_volume_zero {S0 : Set ℝ} {R : Set (List ℝ → ℝ)}
2640 (hS0 : S0.Countable) (hR : R.Countable) :
2641 MeasureTheory.volume (generated S0 R) = 0 :=
2642 Set.Countable.measure_zero (generated_countable hS0 hR) MeasureTheory.volume
2643
2644/-- **Almost every real is unreachable.** A real drawn at random (Lebesgue-a.e.)
2645lies outside the reach of any finitary generative system: the reachable reals are
2646a null set, so their complement is conull. This is the sharpest "size" statement of
2647the four non-forcing arguments. -/
2648theorem generated_ae_unreachable {S0 : Set ℝ} {R : Set (List ℝ → ℝ)}
2649 (hS0 : S0.Countable) (hR : R.Countable) :
2650 ∀ᵐ x : ℝ, x ∉ generated S0 R := by
2651 rw [MeasureTheory.ae_iff]
2652 simpa using generated_volume_zero hS0 hR
2653
2654/-! ### Non-vacuity: the completeness-free forcing applies to the actual cost
2655
2656The monotone forcing theorems above are not abstract possibilities; their
2657hypotheses are satisfied by the canonical recognition cost `Cost.Jcost`. The
2658log-coordinate transform of `J` is exactly `cosh`, which is monotone on `[0,∞)`, so
2659`composition_law_monotone_forces_costLambda` fires on `J` itself and places it in
2660the forced one-parameter family with no completeness assumption anywhere. -/
2661
2662/-- The log-coordinate transform of the recognition cost is `cosh`:
2663`H J t = G J t + 1 = (cosh t - 1) + 1 = cosh t`. -/
2664theorem H_Jcost_eq_cosh (t : ℝ) :
2665 Cost.FunctionalEquation.H Cost.Jcost t = Real.cosh t := by
2666 simp only [Cost.FunctionalEquation.H]
2667 rw [Cost.FunctionalEquation.Jcost_G_eq_cosh_sub_one]; ring
2668
2669/-- `H J` is monotone on `[0,∞)` (it is `cosh`), so `J` satisfies the
2670completeness-free regularity hypothesis of the monotone forcing theorems. -/
2671theorem H_Jcost_monotoneOn :
2672 MonotoneOn (Cost.FunctionalEquation.H Cost.Jcost) (Set.Ici (0 : ℝ)) := by
2673 intro a ha b hb hab
2674 rw [H_Jcost_eq_cosh, H_Jcost_eq_cosh]
2675 exact Real.cosh_strictMonoOn.monotoneOn ha hb hab
2676
2677/-- **Non-vacuity capstone: the recognition cost `J` is forced by monotonicity.**
2678`Cost.Jcost` satisfies reciprocal symmetry, normalization, the composition law, and
2679the monotonicity of its log-transform, so the completeness-free
2680`composition_law_monotone_forces_costLambda` applies and places `J` in the forced
2681scale family `costLambda c` for some `c > 0`. With the scale calibration `c = 1`
2682(`costLambda 1 = J`) this recovers `J` exactly. The order-only forcing route is
2683therefore not merely abstract: it forces the actual recognition cost. -/
2684theorem Jcost_forced_by_monotonicity :
2685 ∃ c : ℝ, ∀ x : ℝ, 0 < x → Cost.Jcost x = costLambda c x :=
2686 composition_law_monotone_forces_costLambda Cost.Jcost
2687 (fun x _ => by simp only [Cost.Jcost, inv_inv]; ring)
2688 (by show Cost.Jcost 1 = 0; norm_num [Cost.Jcost])
2689 ((Cost.FunctionalEquation.composition_law_equiv_coshAdd Cost.Jcost).mpr
2690 Cost.FunctionalEquation.Jcost_cosh_add_identity)
2691 H_Jcost_monotoneOn
2692
2693/-- **Headline capstone: the recognition cost `J` is forced by ORDER alone
2694(completeness-free analogue of `law_of_logic_forces_jcost`).**
2695
2696`Cost.FunctionalEquation.law_of_logic_forces_jcost` pins `F = J` using a
2697`ContinuousOn` hypothesis. This theorem replaces continuity by *monotonicity* of
2698the log-transform `H F` on `[0,∞)`: any reciprocal-symmetric, normalized,
2699composition-law cost whose log-transform is monotone and which satisfies the unit
2700calibration `G''(0) = 1` equals `Cost.Jcost` on the positive reals. No
2701completeness, no continuity, and no derivative-of-a-limit on the real line is
2702used.
2703
2704Proof skeleton: `composition_law_monotone_forces_costLambda` places `F` in the
2705scale family `costLambda c` on `(0,∞)`. Because the log-coordinate transform
2706`G F t = F (exp t)` only ever evaluates `F` at the positive point `exp t`, the
2707positive-domain equality `F = costLambda c` lifts to `G F = G (costLambda c)`
2708*everywhere*, so the calibration `deriv (deriv (G F)) 0 = 1` transfers verbatim to
2709`costLambda c`. The within-family calibration identity `isCalibrated_costLambda_iff`
2710then forces `c² = 1`, i.e. `c = ±1`, and both members collapse to `J` by the
2711reciprocal symmetry of the family (`costLambda (-1) x = costLambda 1 x`). The
2712load-bearing cost joint is therefore pinned to `J` using order in place of the
2713continuum. -/
2714theorem law_of_logic_forces_jcost_monotone (F : ℝ → ℝ)
2715 (hRecip : Cost.FunctionalEquation.IsReciprocalCost F)
2716 (hNorm : Cost.FunctionalEquation.IsNormalized F)
2717 (hComp : Cost.FunctionalEquation.SatisfiesCompositionLaw F)
2718 (hMono : MonotoneOn (Cost.FunctionalEquation.H F) (Set.Ici (0 : ℝ)))
2719 (hCalib : Cost.FunctionalEquation.IsCalibrated F) :
2720 ∀ x : ℝ, 0 < x → F x = Cost.Jcost x := by
2721 obtain ⟨c, hc⟩ :=
2722 composition_law_monotone_forces_costLambda F hRecip hNorm hComp hMono
2723 -- The log-coordinate transform sees only positive arguments (`exp t > 0`),
2724 -- so positive-domain equality lifts to equality of `G F` everywhere.
2725 have hG : Cost.FunctionalEquation.G F = Cost.FunctionalEquation.G (costLambda c) := by
2726 funext t
2727 simp only [Cost.FunctionalEquation.G]
2728 exact hc (Real.exp t) (Real.exp_pos t)
2729 have hCalibC : Cost.FunctionalEquation.IsCalibrated (costLambda c) := by
2730 unfold Cost.FunctionalEquation.IsCalibrated at hCalib ⊢
2731 rw [← hG]; exact hCalib
2732 have hc2 : c ^ 2 = 1 := (isCalibrated_costLambda_iff c).mp hCalibC
2733 have hcpm : c = 1 ∨ c = -1 := by
2734 have hfac : (c - 1) * (c + 1) = 0 := by nlinarith [hc2]
2735 rcases mul_eq_zero.mp hfac with h | h
2736 · exact Or.inl (by linarith)
2737 · exact Or.inr (by linarith)
2738 intro x hx
2739 rw [hc x hx]
2740 rcases hcpm with h1 | hm1
2741 · subst h1; exact costLambda_one_eq_jcost x hx
2742 · subst hm1
2743 have hsymm : costLambda (-1) x = costLambda 1 x := by
2744 unfold costLambda
2745 rw [show -(-1 : ℝ) = 1 by norm_num]
2746 ring
2747 rw [hsymm]; exact costLambda_one_eq_jcost x hx
2748
2749/-- **The δ-act cost is an exact closed form: distinguishing successor orbits
2750`n` and `n+1` costs `1/(2n(n+1))`.**
2751
2752The most primitive δ-act along the integer ladder is the step from orbit `n` to
2753orbit `n+1`, carried by the ratio `(n+1)/n`. Its recognition cost is *exactly*
2754`1/(2n(n+1))` — a closed rational identity, with no limit, no Taylor expansion,
2755and no calibration posit. This is the literal "cost of one δ-act" object named as
2756Move 1 in the δ publication program. Two facts fall out of it:
2757
2758* `1/(2n(n+1)) = ½(1/n − 1/(n+1))`, so the costs along the ladder *telescope*:
2759 the total recognition cost of building the entire integer ladder from the unit
2760 orbit is `∑_{n≥1} 1/(2n(n+1)) = 1/2`, exactly.
2761* The leading per-step coefficient is `n² · J((n+1)/n) → 1/2`
2762 (`jcost_successor_increment_tendsto`).
2763
2764Honest reading (this does *not* force `J`): a scale-family member `costLambda c`
2765is `cosh (c·t) - 1` in log coordinates, so its discrete per-step act cost has
2766leading coefficient `c²/2`. The δ-act ladder therefore sees exactly the
2767calibration invariant `c²` — the same invariant the continuous condition
2768`G''(0) = c²` sees — and not the absolute scale; the closed form here is the
2769canonical `c = 1` instance. What the result establishes is that the calibration
2770is *not analytic in nature*: it is the leading coefficient of an exact rational
2771ladder of δ-act costs, a discrete object. The residual freedom is one positive
2772number (which `c²` counts as the unit), recorded as the faithfulness of the
2773family (`costLambda_injOn_pos`). -/
2774theorem jcost_successor_increment (n : ℝ) (hn : 0 < n) :
2775 Cost.Jcost ((n + 1) / n) = 1 / (2 * n * (n + 1)) := by
2776 have hn' : n ≠ 0 := ne_of_gt hn
2777 have hn1 : n + 1 ≠ 0 := by positivity
2778 unfold Cost.Jcost
2779 field_simp
2780 ring
2781
2782/-- **The δ-act cost carried to the completion recovers the calibration coefficient
2783`1/2`.**
2784
2785The leading coefficient of the per-step δ-act cost along the integer ladder is
2786`n² · J((n+1)/n) → 1/2`. This is the canonical `c = 1` instance of the family
2787pattern `n² · costLambda c ((n+1)/n) → c²/2`: the discrete act-cost ladder
2788exhibits the calibration invariant as a leading coefficient, a discrete datum
2789rather than an analytic one. It does not pin the absolute scale (see
2790`jcost_successor_increment`). The proof is elementary: on `n ≥ 1` the term equals
2791`n/(2(n+1)) = 1/2 − 1/(2(n+1))`, and `1/(2(n+1)) → 0`. -/
2792theorem jcost_successor_increment_tendsto :
2793 Filter.Tendsto
2794 (fun n : ℕ => (n : ℝ) ^ 2 * Cost.Jcost (((n : ℝ) + 1) / (n : ℝ)))
2795 Filter.atTop (nhds (1 / 2)) := by
2796 have h0 : Filter.Tendsto (fun n : ℕ => (1 : ℝ) / ((n : ℝ) + 1))
2797 Filter.atTop (nhds 0) := tendsto_one_div_add_atTop_nhds_zero_nat
2798 have h1 : Filter.Tendsto (fun n : ℕ => (1 : ℝ) / (2 * ((n : ℝ) + 1)))
2799 Filter.atTop (nhds 0) := by
2800 have := h0.const_mul (1 / 2 : ℝ)
2801 simpa [mul_comm, mul_div_assoc, div_div, one_div] using this
2802 have hbase : Filter.Tendsto
2803 (fun n : ℕ => (1 : ℝ) / 2 - (1 : ℝ) / (2 * ((n : ℝ) + 1)))
2804 Filter.atTop (nhds (1 / 2)) := by
2805 have := (tendsto_const_nhds (x := (1 / 2 : ℝ))).sub h1
2806 simpa using this
2807 apply hbase.congr'
2808 filter_upwards [Filter.eventually_ge_atTop 1] with n hn
2809 have hnpos : (0 : ℝ) < (n : ℝ) := by
2810 have : (1 : ℕ) ≤ n := hn
2811 exact_mod_cast Nat.lt_of_lt_of_le Nat.zero_lt_one this
2812 have hnz : (n : ℝ) ≠ 0 := ne_of_gt hnpos
2813 have hn1 : ((n : ℝ) + 1) ≠ 0 := by positivity
2814 rw [jcost_successor_increment (n : ℝ) hnpos]
2815 field_simp
2816 ring
2817
2818/-- **The δ-act ladder sees exactly the calibration invariant `c²`, for the whole
2819scale family.**
2820
2821Generalizing `jcost_successor_increment_tendsto` (the `c = 1` instance) to every
2822member of the forced scale family: the leading per-step coefficient of the
2823δ-act cost is `n² · costLambda c ((n+1)/n) → c²/2`. This is the precise statement
2824of "the discrete δ-act cost determines the calibration invariant `c²` and nothing
2825more" (Move 1, adjudicated to the second falsifier branch): the act-cost ladder
2826sees the same `c²` the continuous calibration `G''(0) = c²` sees, so it does *not*
2827pin the absolute scale; the canonical `c = 1` gives `1/2`.
2828
2829Proof: write `p = ((n+1)/n)^c`; then `costLambda c ((n+1)/n) = (p + p⁻¹)/2 - 1 =
2830(p-1)²/(2p)`, so `n² · costLambda c = (n(p-1))²/(2p)`. The base `(n+1)/n → 1`, so
2831`p → 1`; and `n(p-1) = n((1+1/n)^c - 1) → c` is the slope of `x ↦ x^c` at `1`
2832(its derivative there is `c`). Hence the quotient tends to `c²/2`. -/
2833theorem costLambda_successor_increment_tendsto (c : ℝ) :
2834 Filter.Tendsto
2835 (fun n : ℕ => (n : ℝ) ^ 2 * costLambda c (((n : ℝ) + 1) / (n : ℝ)))
2836 Filter.atTop (nhds (c ^ 2 / 2)) := by
2837 -- `n · ((1+1/n)^c - 1) → c` is the slope of `x ↦ x^c` at `1`.
2838 have hderiv : HasDerivAt (fun y : ℝ => y ^ c) c 1 := by
2839 have h := Real.hasDerivAt_rpow_const (x := (1 : ℝ)) (p := c) (Or.inl one_ne_zero)
2840 simpa using h
2841 have hslope : Filter.Tendsto (slope (fun y : ℝ => y ^ c) 1) (nhdsWithin 1 {1}ᶜ)
2842 (nhds c) := hasDerivAt_iff_tendsto_slope.mp hderiv
2843 -- `1 + 1/n → 1`, staying away from `1`.
2844 have hy : Filter.Tendsto (fun n : ℕ => (1 : ℝ) + 1 / (n : ℝ))
2845 Filter.atTop (nhdsWithin 1 {1}ᶜ) := by
2846 rw [tendsto_nhdsWithin_iff]
2847 refine ⟨?_, ?_⟩
2848 · have h0 : Filter.Tendsto (fun n : ℕ => (1 : ℝ) / (n : ℝ))
2849 Filter.atTop (nhds 0) := tendsto_one_div_atTop_nhds_zero_nat
2850 have := (tendsto_const_nhds (x := (1 : ℝ))).add h0
2851 simpa using this
2852 · filter_upwards [Filter.eventually_ge_atTop 1] with n hn
2853 have hnpos : (0 : ℝ) < (n : ℝ) := by
2854 have : (1 : ℝ) ≤ (n : ℝ) := by exact_mod_cast hn
2855 linarith
2856 have hdpos : (0 : ℝ) < 1 / (n : ℝ) := by positivity
2857 simp only [Set.mem_compl_iff, Set.mem_singleton_iff]
2858 intro hc; nlinarith [hdpos]
2859 have hcomp : Filter.Tendsto
2860 (fun n : ℕ => slope (fun y : ℝ => y ^ c) 1 ((1 : ℝ) + 1 / (n : ℝ)))
2861 Filter.atTop (nhds c) := hslope.comp hy
2862 have hslope_n : Filter.Tendsto
2863 (fun n : ℕ => (n : ℝ) * (((1 : ℝ) + 1 / (n : ℝ)) ^ c - 1))
2864 Filter.atTop (nhds c) := by
2865 apply hcomp.congr'
2866 filter_upwards [Filter.eventually_ge_atTop 1] with n hn
2867 have hnpos : (0 : ℝ) < (n : ℝ) := by
2868 have : (1 : ℝ) ≤ (n : ℝ) := by exact_mod_cast hn
2869 linarith
2870 have hnz : (n : ℝ) ≠ 0 := ne_of_gt hnpos
2871 rw [slope_def_field, Real.one_rpow]
2872 rw [show ((1 : ℝ) + 1 / (n : ℝ)) - 1 = 1 / (n : ℝ) by ring]
2873 rw [div_eq_mul_inv, inv_div, div_one]
2874 ring
2875 -- `p = (1+1/n)^c → 1`.
2876 have hp1 : Filter.Tendsto (fun n : ℕ => ((1 : ℝ) + 1 / (n : ℝ)) ^ c)
2877 Filter.atTop (nhds 1) := by
2878 have hbase : Filter.Tendsto (fun n : ℕ => (1 : ℝ) + 1 / (n : ℝ))
2879 Filter.atTop (nhds 1) := by
2880 have h0 : Filter.Tendsto (fun n : ℕ => (1 : ℝ) / (n : ℝ))
2881 Filter.atTop (nhds 0) := tendsto_one_div_atTop_nhds_zero_nat
2882 have := (tendsto_const_nhds (x := (1 : ℝ))).add h0
2883 simpa using this
2884 have hcont : ContinuousAt (fun y : ℝ => y ^ c) 1 :=
2885 Real.continuousAt_rpow_const 1 c (Or.inl one_ne_zero)
2886 have := hcont.tendsto.comp hbase
2887 simpa [Real.one_rpow] using this
2888 -- Assemble the quotient `(n(p-1))²/(2p) → c²/2`.
2889 have hnum : Filter.Tendsto
2890 (fun n : ℕ => ((n : ℝ) * (((1 : ℝ) + 1 / (n : ℝ)) ^ c - 1)) ^ 2)
2891 Filter.atTop (nhds (c ^ 2)) := hslope_n.pow 2
2892 have hden : Filter.Tendsto (fun n : ℕ => 2 * ((1 : ℝ) + 1 / (n : ℝ)) ^ c)
2893 Filter.atTop (nhds 2) := by
2894 have := hp1.const_mul (2 : ℝ)
2895 simpa using this
2896 have hquot : Filter.Tendsto
2897 (fun n : ℕ => ((n : ℝ) * (((1 : ℝ) + 1 / (n : ℝ)) ^ c - 1)) ^ 2
2898 / (2 * ((1 : ℝ) + 1 / (n : ℝ)) ^ c))
2899 Filter.atTop (nhds (c ^ 2 / 2)) := hnum.div hden (by norm_num)
2900 apply hquot.congr'
2901 filter_upwards [Filter.eventually_ge_atTop 1] with n hn
2902 have hnpos : (0 : ℝ) < (n : ℝ) := by
2903 have : (1 : ℝ) ≤ (n : ℝ) := by exact_mod_cast hn
2904 linarith
2905 have hnz : (n : ℝ) ≠ 0 := ne_of_gt hnpos
2906 have hxe : ((n : ℝ) + 1) / (n : ℝ) = 1 + 1 / (n : ℝ) := by field_simp
2907 have hxpos : (0 : ℝ) < 1 + 1 / (n : ℝ) := by positivity
2908 have hp : (0 : ℝ) < ((1 : ℝ) + 1 / (n : ℝ)) ^ c := Real.rpow_pos_of_pos hxpos c
2909 have hpne : ((1 : ℝ) + 1 / (n : ℝ)) ^ c ≠ 0 := ne_of_gt hp
2910 have hxneg : ((1 : ℝ) + 1 / (n : ℝ)) ^ (-c) = (((1 : ℝ) + 1 / (n : ℝ)) ^ c)⁻¹ :=
2911 Real.rpow_neg (le_of_lt hxpos) c
2912 unfold costLambda
2913 rw [hxe, hxneg]
2914 field_simp
2915 ring
2916
2917/-
2918================================================================================
2919PROGRAM-GOAL PAPER TRAIL (recorded 2026-05-28, pass 349). READ THIS.
2920
2921This block exists so that no future session re-opens a question that is closed,
2922and so the GOAL of the whole δ effort is not forgotten or quietly inflated.
2923
2924WHAT WAS THE GOAL.
2925 The δ / PRC program asks: how much of mathematics and physics is FORCED by the
2926 single primitive act of distinction (δ), and where exactly does forcing stop
2927 and posit begin? The load-bearing joint is the forcing of the cost function J.
2928 J is pinned down only on a CONTINUOUS domain (the argument uses limits and
2929 derivatives). So the real final target was always: is that continuous
2930 completion (the real line) FORCED by δ, or merely ASSUMED?
2931
2932 That boundary question, "where does necessity end," was the correct target all
2933 along. A program claiming "everything is forced, nothing arbitrary" has no
2934 successful outcome: taken literally it is false (see below), softened it is an
2935 unfalsifiable slogan. The result with content is the LOCATION OF THE SEAM.
2936
2937WHAT WAS PROVEN (theorem `prc_continuum_not_forced`, this file).
2938 Distinction does NOT force the continuum. The answer is the NEGATIVE direction
2939 and it is a real theorem, not a missing lemma. Two independent classical
2940 pillars force it:
2941 (1) Cantor. δ proceeds one act at a time; its native index is ℕ
2942 (DistinctionNat ≃ ℕ); so everything δ generates is countable, including
2943 the rational field and even its algebraic closure. ℝ is uncountable.
2944 A countable generator cannot produce an uncountable object.
2945 (2) Löwenheim–Skolem. Any first-order theory with an infinite model has a
2946 countable model; no first-order theory forces uncountability.
2947 Completeness (the axiom singling out ℝ) is irreducibly second-order; the
2948 only way to "force ℝ from logic" is to admit full second-order logic,
2949 which smuggles in the power set = the continuum under another name.
2950
2951WHY THE NEGATIVE IS STRONGER THAN "ℝ IS FORCED" WOULD HAVE BEEN.
2952 (a) True and unassailable; a forcing claim would have been circular (the J
2953 argument imports the very ℝ it would claim to force).
2954 (b) More information: a forced countable core, ℝ not in it, gap measured
2955 exactly as ℵ₀ < 𝔠.
2956 (c) Minimal posits: the entire arbitrary content of the framework is now
2957 exactly TWO nested posits, one continuum and one unit of scale within it
2958 (the unit is `prc_cost_freedom_is_one_real`). Everything else (counting,
2959 ratios, the cost FORM) is proven forced.
2960 (d) The seam lands on the fault line of mathematics itself: the countable /
2961 uncountable jump is exactly where CH, Gödel–Cohen independence, and
2962 constructive-vs-classical analysis live. δ must posit at precisely the
2963 point set theory itself must choose.
2964
2965THE HONEST TERMINAL CLAIM OF THE PROGRAM (do not inflate past this):
2966 δ FORCES the discrete number tower and the rational field (arithmetic, derived).
2967 The continuous completion is the FIRST genuine posit beyond δ (analysis,
2968 assumed; size = ℵ₀ < 𝔠). On the completion the cost FORM is forced, and the
2969 residual freedom is exactly ONE positive real. Every link, including this
2970 boundary where forcing stops, is an exact theorem.
2971
2972ONE PREMISE, STATED PLAINLY: the countability argument reads δ as a generative
2973 act proceeding one step at a time (grounded in DistinctionNat ≃ ℕ). That
2974 reading is high-confidence but is a premise about what a δ-act is, not itself a
2975 theorem. Escaping it requires letting δ pose uncountably many comparisons at
2976 once, which IS completeness, so that route is circular.
2977
2978THE ONE SHARPER TARGET THAT REMAINS (not closed by this theorem): we proved δ
2979 does not force ℝ. We did NOT prove the continuum is NECESSARY to force J. Open
2980 question worth future sessions: can J be forced on a countable real-closed
2981 field with no completeness at all? If yes, the continuum posit dissolves and
2982 the framework's arbitrary content drops from two posits to one. If no, a
2983 theorem explaining WHY completeness is required would promote the continuum
2984 from assumption to proven necessity.
2985
2986 PASS 350 (2026-05-28): the ARENA of that target is now a checked theorem, not
2987 prose. `delta_algebraic_closure_stays_countable` proves the set of reals
2988 algebraic over ℚ is countable (Mathlib `Algebraic.countable`), contains √2
2989 (`sqrt_two_isAlgebraic`, the gap ℚ lacks), while ℝ is uncountable. So the
2990 countable field in which every δ-posable POLYNOMIAL comparison resolves is
2991 pinned: it stays strictly below the continuum, and that is exactly where the
2992 §9 question lives. This UPGRADES the §5.1 prose remark to a theorem; it does
2993 NOT close the §9 target (whether J is forceable on that arena without
2994 completeness is still open). Honest tag: prose→theorem on the sub-claim,
2995 open on the main question.
2996
2997 PASS 351 (2026-05-28): the regularity-substitute brick is now a theorem.
2998 `monotone_additive_isLinear` proves a Monotone solution of Cauchy's additive
2999 equation is linear (`f x = f 1 · x`), using ONLY Archimedean density of ℚ
3000 (`exists_rat_btwn`), never completeness. This is the exact lemma a
3001 completeness-free re-proof of J-uniqueness would consume: the RCL's d'Alembert
3002 reduction lands on an additive exponent, and monotonicity (an order property
3003 present on any ordered field) forces that exponent linear, hence `J`. It does
3004 NOT yet re-prove `law_of_logic_forces_jcost` with `MonotoneOn` in place of
3005 `ContinuousOn`; it supplies the missing analytic-free regularity step. Next:
3006 thread it through the d'Alembert layer (`Cost.FunctionalEquation.G`) to a
3007 `MonotoneOn (Set.Ioi 0)` variant of the uniqueness theorem; if a Hamel-basis
3008 pathology survives monotonicity that obstruction is the "why completeness is
3009 required" theorem, otherwise the continuum dependence of the cost dissolves.
3010
3011 PASS 352 (2026-05-28): two order-only, completeness-free constraints on the
3012 d'Alembert solution landed. `dAlembert_duplication`: H(2t)=2(H t)²−1 (cosh
3013 duplication, pure algebra). `dAlembert_ge_one_of_monotone`: a d'Alembert
3014 solution monotone on [0,∞) with H(0)=1 stays ≥1, so the bounded cosine branch
3015 H=cos(c·) is excluded BY ORDER ALONE — no analytic input. This is exactly the
3016 job continuity used to do (rule out the oscillatory branch). The remaining
3017 CRUX, now precisely located: from d'Alembert one gets
3018 H(s+t)−H(s−t) = ±2√((H(s)²−1)(H(t)²−1)) (the "sinh product"); proving the
3019 associated φ(t)=H(t)+√(H(t)²−1) is multiplicative (φ(s+t)=φ(s)φ(t)) requires
3020 matching that sign consistently. Sign-matching is the suspected exact point
3021 where the present argument uses continuity. The §9 question reduces to: can
3022 monotonicity alone fix the sign? If yes, log∘φ is additive+monotone, hence
3023 linear by `monotone_additive_isLinear`, hence H=cosh(linear), and completeness
3024 is NOT required for J. If the sign genuinely needs a limit, that is the
3025 "why completeness is required" theorem. Next target: the sign-matching lemma.
3026
3027 PASS 353 (2026-05-28): THE SIGN CRUX IS RESOLVED — monotonicity fixes the sign.
3028 Key algebra: `dAlembert_prod` (apply d'Alembert to (s+t),(s−t):
3029 H(2s)+H(2t)=2H(s+t)H(s−t)) and `dAlembert_diff_sq`
3030 ((H(s+t)−H(s−t))²=4(H(s)²−1)(H(t)²−1)). Then `dAlembert_diff_eq_of_monotone`:
3031 for 0≤t≤s both s±t are in [0,∞) where H is monotone, so H(s+t)≥H(s−t), and the
3032 difference is the NONNEGATIVE root: H(s+t)−H(s−t)=2√(H(s)²−1)√(H(t)²−1). The
3033 sign — the single place the analytic proof used continuity — is pinned by ORDER
3034 ALONE. `dAlembert_add_of_monotone` gives the cosh addition formula
3035 H(s+t)=H s·H t+√√. So the §9 answer is now in view and POSITIVE: the cost form
3036 does NOT require completeness, only the order structure. Remaining tail (pure
3037 follow-through, no new obstruction expected): S-addition
3038 √(H(s+t)²−1)=H s·S t+S s·H t ⇒ φ=H+√(H²−1) multiplicative on [0,∞) ⇒ log∘φ
3039 additive+monotone ⇒ linear (`monotone_additive_isLinear`) ⇒ H=cosh(c·) ⇒ swap
3040 MonotoneOn for ContinuousOn in `law_of_logic_forces_jcost`. Next: that assembly.
3041
3042 PASS 354 (2026-05-28): the multiplicative structure is now a theorem.
3043 `dAlembert_S_add_of_monotone`: the sinh-addition identity
3044 √(H(s+t)²−1)=H s·√(H t²−1)+√(H s²−1)·H t (squared, nonnegative root, via the
3045 H-addition formula; linear_combination over the sqrt-square facts). Packaged in
3046 `phi_mul_of_monotone`: φ(s+t)=φ(s)·φ(t) for 0≤t≤s with φ x=H x+√(H x²−1). So φ
3047 is multiplicative on [0,∞) with NO completeness used — only order + field +
3048 sqrt. Remaining tail to close §9 positively: φ>0 ⇒ log∘φ additive on [0,∞);
3049 monotone (H,√(H²−1) both increase) ⇒ extend odd to ℝ ⇒ linear by
3050 `monotone_additive_isLinear` ⇒ H=cosh(c·) ⇒ a MonotoneOn variant of
3051 `law_of_logic_forces_jcost`. The mathematical content is finished; the tail is
3052 the odd-extension bookkeeping and the cosh identification. Next: that assembly.
3053
3054 PASS 355 (2026-05-28): §9 IS CLOSED, POSITIVE. The assembly is a theorem:
3055 `dAlembert_cosh_of_monotone`. An even, normalized (H 0=1), monotone-on-[0,∞)
3056 d'Alembert solution IS H t=cosh(c·t) for a single real c. Built from
3057 `monotone_additive_nonneg_isLinear` (odd-extension of an additive-on-[0,∞)
3058 monotone function to all of ℝ, then `monotone_additive_isLinear`, completeness-
3059 free) + log∘φ additive (from `phi_mul_of_monotone`) + monotone (φ increasing)
3060 ⇒ log φ(t)=c·t ⇒ φ(t)=exp(c·t) ⇒ H t=(φ+φ⁻¹)/2=cosh(c·t); evenness extends to
3061 t<0 via `Real.cosh_neg`. NO continuity, NO smoothness, NO Aczél package, NO
3062 least-upper-bound. Only field ops, sqrt, order, and Archimedean density. So the
3063 proof transfers verbatim to ANY Archimedean real-closed field — including the
3064 countable arena pinned in pass 350. CONCLUSION FOR THE δ PROGRAM: the continuum
3065 is NOT required to force the cost form. Monotonicity (an order property of any
3066 ordered field) does everything continuity did. The framework's arbitrary
3067 content drops from TWO nested posits (continuum + unit) to ONE (unit of scale,
3068 the residual c = `prc_cost_freedom_is_one_real`). The continuum posit for the
3069 cost DISSOLVES. The sharper §9 target — open since pass 350 — is resolved in the
3070 positive direction. Honest tag: THEOREM (0 sorry, 0 new axiom; depends only on
3071 Mathlib + the in-file monotone/d'Alembert chain). What remains is purely a
3072 downstream convenience: re-skinning `Cost.FunctionalEquation.law_of_logic_forces_jcost`
3073 to consume `MonotoneOn` instead of `ContinuousOn`+Aczél — the math is done; that
3074 is an API edit, not an open question. The δ frontier as posed in the paper's §9
3075 is now answered.
3076
3077 PASS 356 (2026-05-28): the API edit is DONE too. `composition_law_monotone_forces_cosh_family`
3078 takes the actual cost hypotheses (`Cost.FunctionalEquation.IsReciprocalCost` +
3079 `IsNormalized` + `SatisfiesCompositionLaw`) plus `MonotoneOn (H F) [0,∞)` and
3080 returns `∃ c, H F t = cosh(c·t)` — composition law ⇒ d'Alembert on H F (via
3081 `composition_law_equiv_coshAdd`), reciprocal symmetry ⇒ evenness, normalization
3082 ⇒ H F 0 = 1, then `dAlembert_cosh_of_monotone`. `composition_law_monotone_forces_costLambda`
3083 sharpens this to `∃ c, ∀ x>0, F x = costLambda c x` — the exact completeness-free
3084 counterpart of `composition_law_admits_full_scale_family` (which used `ContinuousOn`).
3085 So the swap "MonotoneOn for ContinuousOn+Aczél" is now a checked theorem in the
3086 cost layer, not a promise. Nothing about §9 remains open: the continuum is not
3087 needed to force the cost, monotonicity suffices, and the residual is one real c.
3088
3089 PASS 357 (2026-05-28): the classification is now COMPLETE in both directions.
3090 `costLambda_injOn_pos`: the scale family is injective in its positive exponent
3091 (agreement on (0,∞) for l,l'>0 ⇒ l=l'), proved by evaluating at x=2, reducing to
3092 cosh(log2·l)=cosh(log2·l'), and `Real.cosh_strictMonoOn.injOn` on [0,∞). No
3093 completeness. Together with `composition_law_monotone_forces_costLambda` (every
3094 monotone solution IS some costLambda c) this is the full completeness-free
3095 classification: the monotone, reciprocal, normalized, composition-law costs are
3096 faithfully parameterized by exactly one positive real. So "the residual is one
3097 unit of scale" is now a THEOREM on BOTH sides — the family covers all solutions
3098 AND no two distinct positive scales coincide. No order-only datum collapses the
3099 scale further; the one posit is genuine and irreducible, not an artifact of a
3100 loose argument. The δ §9 architecture is closed end to end: forcing reaches the
3101 cost FORM with monotonicity alone, and the freedom that remains is exactly ℝ_{>0}.
3102
3103 PASS 358 (2026-05-28): the OTHER δ load-bearer, the countability premise, is now
3104 Lean-backed too. The paper's central premise-theorem `thm:countgen` ("a finitary
3105 generative system reaches only a countable collection") is formalized:
3106 `genStage`/`generated` define the seed-plus-finite-arity-rule closure;
3107 `generated_countable` proves the reach is countable from `S0.Countable` +
3108 `R.Countable` (via `countable_setOf_lists_mem`: lists over a countable set are
3109 countable, by injection into `List ↥s`); `uncountable_generated_needs_infinitary`
3110 is the contrapositive (escaping countability forces an uncountable seed or
3111 uncountably many rules, i.e. an infinitary act, which is the completeness
3112 principle smuggled in, the paper's "circular" point made exact); and
3113 `generated_ne_univ_real` is the ℝ corollary (no finitary system exhausts the real
3114 line). HONEST SCOPE: this formalizes the MATH under the premise (IF distinction is
3115 a finitary generative system THEN its reach is countable, and cannot be ℝ). It
3116 does NOT close the interpretive question of whether distinction IS such a system;
3117 that remains a reading of the primitive, exactly as the paper says. So both δ
3118 load-bearers now have Lean backing: the cost FORM is forced by order alone
3119 (passes 355-357), and the countability boundary is a theorem given the finitary
3120 reading (pass 358). The sole genuinely-open item is the interpretive premise, and
3121 it is open by nature, not for lack of formalization.
3122
3123 PASS 359 (2026-05-28): the measure-theoretic non-forcing argument is now Lean-
3124 backed too, as a direct corollary of pass 358. `generated_volume_zero`: the reach
3125 of a finitary generative system on ℝ has Lebesgue measure zero (countable ⇒ null
3126 for the atomless volume measure). `generated_ae_unreachable`: almost every real is
3127 outside the reach (the reachable set is null, its complement conull). This is the
3128 paper's `cor:measure`. So THREE of the paper's four non-forcing arguments are now
3129 machine-checked: cardinality (pass 350, `real_not_countable` + algebraic-closure
3130 countability), generative-system countability (pass 358, `thm:countgen`), and
3131 measure zero (pass 359). The fourth, definability in a countable language /
3132 Löwenheim-Skolem model theory, was at this pass still prose-only (superseded by
3133 pass 361, which formalizes it after all). The δ architecture is fully load-bearing in Lean: cost FORM
3134 forced by order alone, residual freedom exactly ℝ_{>0}, countability boundary a
3135 theorem under the finitary reading, and the reachable reals null in ℝ.
3136
3137 PASS 360 (2026-05-28): non-vacuity. The monotone forcing route is shown to apply
3138 to the ACTUAL recognition cost, not just abstractly. `H_Jcost_eq_cosh`: the
3139 log-transform of J is exactly cosh (H J t = G J t + 1 = cosh t).
3140 `H_Jcost_monotoneOn`: hence H J is monotone on [0,∞). `Jcost_forced_by_monotonicity`:
3141 feeding J's reciprocal symmetry, normalization, composition law, and that
3142 monotonicity into `composition_law_monotone_forces_costLambda` yields
3143 ∃ c, ∀ x>0, J x = costLambda c x — so the completeness-free order-only route forces
3144 the real J into the scale family (c=1 recovers J exactly). The forcing theorem is
3145 therefore non-vacuous: its hypotheses are satisfied by the canonical cost, and the
3146 conclusion recovers J with no continuity, no smoothness, no completeness. This
3147 closes the loop between the abstract §9 result and the concrete recognition cost.
3148
3149 PASS 361 (2026-05-28): the FOURTH non-forcing argument is now Lean-backed, so all
3150 four of the paper's independent routes are machine-checked. New sibling module
3151 `PRCModelTheoryNonForcing` (heavy `Mathlib.ModelTheory` import isolated there).
3152 `real_has_countable_ee_model`: for any countable first-order language L carrying a
3153 structure on ℝ (card L ≤ ℵ₀), there is a structure N with ℝ ≅[L] N (elementarily
3154 equivalent: same first-order sentences) and #N = ℵ₀ — a direct instantiation of
3155 Mathlib's downward Löwenheim-Skolem `exists_elementarilyEquivalent_card_eq` at the
3156 cardinal ℵ₀. `real_not_first_order_categorical`: that companion has #ℝ ≠ #N (from
3157 `mk_real` : #ℝ = 𝔠 and `aleph0_lt_continuum`), so it is not equinumerous with ℝ,
3158 hence not isomorphic by any structure map. `real_first_order_underdetermined`
3159 bundles all three. CONTENT: no first-order description in a countable language pins
3160 ℝ up to isomorphism — whatever complete first-order theory distinction writes about
3161 its number line, a countable model of that very theory exists. The continuum is not
3162 forced by any amount of first-order distinction, independently of cardinality,
3163 generative countability, and measure. Reversal of the pass-359 stance: the fourth
3164 argument was called "not worth formalizing"; on reflection it is one Mathlib
3165 theorem away and completes the paper's stated "four independent proofs" in Lean, so
3166 it was worth the small cost. ALL FOUR non-forcing arguments now have machine-checked
3167 Lean witnesses. The δ §9 frontier is closed on every front the paper claims.
3168
3169Long-form prose version (no Lean references), saved as the canonical record:
3170 δ/Delta_Continuum_Is_Not_Forced.tex (compiled: .pdf).
3171================================================================================
3172-/
3173
3174/-- **T0 resolved, NEGATIVE: distinction does not force the continuum.**
3175
3176This is the answer to the program's last load-bearing question, and it is a
3177*non-forcing* result. The whole J-forcing argument lives on the continuous
3178completion. The question was whether δ *forces* that completion or merely
3179*assumes* it. The answer is: δ does not force it, and the obstruction is exact
3180and quantitative, a cardinality gap.
3181
3182The argument, from first principles:
3183
31841. δ's native counting is exactly `ℕ` (`DistinctionNat ≃ ℕ`,
3185 `delta_index_countable`). Distinction proceeds one act at a time, so every
3186 object it generates by iteration is indexed by `ℕ` and is therefore
3187 *countable*.
31882. The δ-forced rational field is `ℚ` (`forced_field_countable`), countable.
3189 Even its real closure (the real algebraic numbers, where every δ-posable
3190 *polynomial* comparison resolves) is countable; closing δ's algebraic
3191 questions never escapes countability. The carrier is not even real-closed:
3192 it has no `√2` (`forced_field_has_gap`).
31933. The continuum `ℝ` is *uncountable* (`completion_uncountable`). Concretely,
3194 every enumeration `f : ℕ → ℝ`, i.e. everything a countable δ-process can ever
3195 name, misses some real (`completion_unnamable`). Almost every real number is
3196 never named by any sequence of distinction acts.
31974. `ℚ` embeds in `ℝ` as an ordered field (`shared_rational_field`), and `ℝ`
3198 fills the `√2` gap (`completion_fills_gap`), so the two share exactly the
3199 δ-forced rational structure and differ precisely on completeness.
3200
3201Therefore the completeness principle, "every gap a δ-comparison points at is
3202filled," is **not** a consequence of distinction. It posits uncountably many
3203points that no δ-act names. Distinction cannot force the existence of objects it
3204can never name. The completion is a genuine added axiom, strictly stronger than
3205δ (this is exactly the `traceClosure` tag, now justified by a theorem rather
3206than a label), and the cardinality gap `#ℚ = ℵ₀ < 𝔠 = #ℝ` is the exact measure
3207of what it adds.
3208
3209Honest consequence for the unification: δ forces the discrete tower and the
3210rational field; the continuous completion is the first genuine posit beyond
3211distinction, and J-forcing is conditional on it. The maximal "δ forces
3212everything including ℝ" reading is false. The true terminal claim is the
3213stratified one. -/
3214structure PRCContinuumNotForced : Prop where
3215 delta_index_countable : Nonempty (DistinctionNat ≃ ℕ)
3216 forced_field_countable : Countable ℚ
3217 forced_field_has_gap : ¬ ∃ q : ℚ, q ^ 2 = 2
3218 shared_rational_field : ∃ φ : ℚ →+* ℝ, Function.Injective φ ∧ StrictMono φ
3219 completion_fills_gap : ∃ r : ℝ, r ^ 2 = 2
3220 completion_uncountable : ¬ Countable ℝ
3221 completion_unnamable : ∀ f : ℕ → ℝ, ∃ r : ℝ, ∀ n : ℕ, f n ≠ r
3222
3223/-- The continuum is not δ-forced: proven, each field discharged from δ-native
3224facts (`DistinctionNat ≃ ℕ`) and Mathlib cardinality. No project-local axioms. -/
3225theorem prc_continuum_not_forced : PRCContinuumNotForced where
3226 delta_index_countable := ⟨DistinctionNat.equivNat⟩
3227 forced_field_countable := inferInstance
3228 forced_field_has_gap := rat_no_sqrt_two
3229 shared_rational_field := by
3230 refine ⟨Rat.castHom ℝ, (Rat.castHom ℝ).injective, ?_⟩
3231 have hco : (⇑(Rat.castHom ℝ) : ℚ → ℝ) = ((↑) : ℚ → ℝ) := by ext q; simp
3232 rw [hco]; exact Rat.cast_strictMono
3233 completion_fills_gap := ⟨Real.sqrt 2, Real.sq_sqrt (by norm_num)⟩
3234 completion_uncountable := real_not_countable
3235 completion_unnamable := by
3236 intro f
3237 by_contra h
3238 push_neg at h
3239 have hsurj : Function.Surjective f := h
3240 have hrange : (Set.range f).Countable := Set.countable_range f
3241 rw [hsurj.range_eq] at hrange
3242 exact Cardinal.not_countable_real hrange
3243
3244/-- **The full honest stratification, as one checked proposition (reconstructed).**
3245
3246This is the top-level "what is forced versus assumed" object the program
3247objective asks for, assembled entirely from proven theorems with no
3248project-local axioms. It supersedes the per-stratum prose and re-establishes the
3249`prc_full_stratification` object (lost when an earlier `UniversalFoundation.lean`
3250edit was reverted) in a stable location, scoped to the load-bearing joint rather
3251than the bookkeeping certificate.
3252
3253The seven fields are the complete honest accounting, bottom to top:
3254
3255* `delta_only_floor` (`KernelFirstPassCertificate`, tag `deltaOnly`): δ alone
3256 forces the number tower (`DistinctionNat ≃ Nat`), the integer surface, and the
3257 rational field. This is what is genuinely **forced** from distinction.
3258* `completion_boundary` (`TraceClosureCertificate`, tag `traceClosure`): the move
3259 to the continuous completion is a trace-closure commitment, strictly stronger
3260 than `deltaOnly`. This is the first thing **assumed** beyond δ.
3261* `carrier_strictly_below_completion` (pass 346): a cost-independent witness that
3262 the assumption is non-vacuous: the completion contains `√2` while the δ-native
3263 carrier provably does not. The completion genuinely adds elements.
3264* `completion_not_forced` (pass 349, the T0 resolution): the completion is not
3265 merely stronger, it is *not δ-forced at all*. δ's native index is `ℕ`, so every
3266 object it generates is countable; `ℝ` is uncountable; the completeness axiom
3267 posits uncountably many points no δ-act names. The cardinality gap
3268 `ℵ₀ < 𝔠` is the exact measure of the assumption. This is the negative answer
3269 to the program's last load-bearing question.
3270* `jcost_strength_separation` (pass 343): on the carrier J is not forced (every
3271 prime axis is orientation-free); on the completion the calibration selects J;
3272 and `deltaOnly < traceClosure`. The forcing of J lives strictly above the
3273 carrier.
3274* `cost_form_forced` (pass 331/332/333/334): on the completion the four algebraic
3275 laws force the cost *form*, the gauge orbit `{costLambda l : l > 0}`.
3276* `residual_freedom_is_one_real` (pass 347): the only thing left **assumed** on
3277 top of the forced form is exactly one positive real, uniquely pinned by the
3278 solution. Not zero (the unit is a gauge δ does not fix), not more than one.
3279* `jcost_forced_order_only` (pass 362): the continuum is removed even from the
3280 *selection* of the canonical cost. A reciprocal-symmetric, normalized,
3281 composition-law, unit-calibrated cost whose log-transform is monotone on
3282 `[0,∞)` **equals** `Cost.Jcost` on the positives, with `ContinuousOn` nowhere
3283 invoked. So the only continuous-analysis input the cost-forcing story ever used
3284 (continuity) is replaced by an order property present on any ordered field; the
3285 residual assumption collapses to the single calibration unit and nothing of the
3286 continuum survives in the cost joint.
3287
3288Read end to end: δ forces {number tower, rational field}; the completion and a
3289single cost unit are assumed; on the completion the cost form is forced, the
3290residual freedom is exactly one real, and the canonical cost itself is forced by
3291order alone. This is the terminal honest claim of the δ program's load-bearing
3292joint. -/
3293structure PRCFullStratification : Prop where
3294 delta_only_floor : KernelFirstPassCertificate
3295 completion_boundary : TraceClosureCertificate
3296 carrier_strictly_below_completion :
3297 (∃ x : ℝ, x ^ 2 = 2) ∧
3298 ¬ ∃ q : RatioOrbit, ((RatioOrbit.toRat q : ℝ)) ^ 2 = 2
3299 completion_not_forced : PRCContinuumNotForced
3300 jcost_strength_separation : PRCJCostStrengthSeparation
3301 cost_form_forced : PRCCostJointStratification
3302 residual_freedom_is_one_real :
3303 ∀ F : ℝ → ℝ,
3304 Cost.FunctionalEquation.IsReciprocalCost F →
3305 Cost.FunctionalEquation.IsNormalized F →
3306 Cost.FunctionalEquation.SatisfiesCompositionLaw F →
3307 ContinuousOn F (Set.Ioi 0) →
3308 0 < deriv (deriv (Cost.FunctionalEquation.G F)) 0 →
3309 ∃! c : ℝ, 0 < c ∧ ∀ x : ℝ, 0 < x → F x = costLambda c x
3310 jcost_forced_order_only :
3311 ∀ F : ℝ → ℝ,
3312 Cost.FunctionalEquation.IsReciprocalCost F →
3313 Cost.FunctionalEquation.IsNormalized F →
3314 Cost.FunctionalEquation.SatisfiesCompositionLaw F →
3315 MonotoneOn (Cost.FunctionalEquation.H F) (Set.Ici (0 : ℝ)) →
3316 Cost.FunctionalEquation.IsCalibrated F →
3317 ∀ x : ℝ, 0 < x → F x = Cost.Jcost x
3318
3319/-- The full stratification holds, discharged field-by-field from proven
3320theorems. No project-local axioms; the `AczelSmoothnessPackage` instance is a
3321proved instance, not an axiom. -/
3322theorem prc_full_stratification
3323 [Cost.FunctionalEquation.AczelSmoothnessPackage] :
3324 PRCFullStratification where
3325 delta_only_floor := kernel_first_pass_certificate
3326 completion_boundary := trace_closure_certificate
3327 carrier_strictly_below_completion := prc_completion_strictly_extends_carrier
3328 completion_not_forced := prc_continuum_not_forced
3329 jcost_strength_separation := prc_jcost_strength_separation
3330 cost_form_forced := prc_cost_joint_stratification
3331 residual_freedom_is_one_real := fun _ h1 h2 h3 h4 h5 =>
3332 prc_cost_freedom_is_one_real h1 h2 h3 h4 h5
3333 jcost_forced_order_only := fun F h1 h2 h3 h4 h5 =>
3334 law_of_logic_forces_jcost_monotone F h1 h2 h3 h4 h5
3335
3336/-- Verifier rational character that rebases the native `3` prime axis to `5`
3337while fixing the `2` axis. This is the narrow countermodel to two-calibration
3338forcing all prime calibrations. -/
3339noncomputable def threeToFiveRebaseRat (x : ℚ) : ℚ :=
3340 x * ((5 : ℚ) / 3) ^ (padicValRat 3 x)
3341
3342theorem threeToFiveRebaseRat_one :
3343 threeToFiveRebaseRat 1 = 1 := by
3344 unfold threeToFiveRebaseRat
3345 have h : padicValRat 3 (1 : ℚ) = 0 := by
3346 norm_num [padicValRat.of_int, padicValInt.eq_zero_of_not_dvd]
3347 rw [h]
3348 norm_num
3349
3350theorem threeToFiveRebaseRat_mul (x y : ℚ) :
3351 threeToFiveRebaseRat (x * y) =
3352 threeToFiveRebaseRat x * threeToFiveRebaseRat y := by
3353 unfold threeToFiveRebaseRat
3354 by_cases hx : x = 0
3355 · simp [hx]
3356 · by_cases hy : y = 0
3357 · simp [hy]
3358 · rw [padicValRat.mul hx hy]
3359 have hbase : ((5 : ℚ) / 3) ≠ 0 := by norm_num
3360 rw [zpow_add₀ hbase]
3361 ring
3362
3363theorem threeToFiveRebaseRat_inv (x : ℚ) :
3364 threeToFiveRebaseRat x⁻¹ = (threeToFiveRebaseRat x)⁻¹ := by
3365 unfold threeToFiveRebaseRat
3366 by_cases hx : x = 0
3367 · simp [hx]
3368 · rw [padicValRat.inv]
3369 have hbase : ((5 : ℚ) / 3) ≠ 0 := by norm_num
3370 have hxpow : ((5 : ℚ) / 3) ^ (padicValRat 3 x) ≠ 0 :=
3371 zpow_ne_zero _ hbase
3372 rw [zpow_neg]
3373 field_simp [hx, hxpow]
3374
3375theorem threeToFiveRebaseRat_ne_zero {x : ℚ}
3376 (hx : x ≠ 0) :
3377 threeToFiveRebaseRat x ≠ 0 := by
3378 unfold threeToFiveRebaseRat
3379 have hbase : ((5 : ℚ) / 3) ≠ 0 := by norm_num
3380 exact mul_ne_zero hx (zpow_ne_zero _ hbase)
3381
3382theorem padicValRat_three_two_eq_zero :
3383 padicValRat 3 (2 : ℚ) = 0 := by
3384 rw [show (2 : ℚ) = ((2 : ℤ) : ℚ) by norm_num]
3385 rw [padicValRat.of_int]
3386 have hInt : padicValInt 3 (2 : ℤ) = 0 := by
3387 apply padicValInt.eq_zero_of_not_dvd
3388 intro hdiv
3389 norm_num at hdiv
3390 exact_mod_cast hInt
3391
3392theorem threeToFiveRebaseRat_two :
3393 threeToFiveRebaseRat 2 = (2 : ℚ) := by
3394 unfold threeToFiveRebaseRat
3395 rw [padicValRat_three_two_eq_zero]
3396 norm_num
3397
3398theorem threeToFiveRebaseRat_three :
3399 threeToFiveRebaseRat 3 = (5 : ℚ) := by
3400 unfold threeToFiveRebaseRat
3401 have h : padicValRat 3 (3 : ℚ) = 1 :=
3402 padicValRat.self (by norm_num : 1 < 3)
3403 rw [h]
3404 norm_num
3405
3406noncomputable def threeToFiveRebaseCharacter (q : RatioOrbit) : RatioOrbit :=
3407 ratioOrbitOfRat (threeToFiveRebaseRat q.toRat)
3408
3409theorem threeToFiveRebaseCharacter_toRat (q : RatioOrbit) :
3410 (threeToFiveRebaseCharacter q).toRat =
3411 threeToFiveRebaseRat q.toRat := by
3412 unfold threeToFiveRebaseCharacter
3413 exact ratioOrbitOfRat_toRat _
3414
3415theorem threeToFiveRebaseCharacter_ratio_character :
3416 PRCRatioCharacter threeToFiveRebaseCharacter where
3417 unit := by
3418 rw [RatioOrbit.crossEq_iff_toRat_eq, threeToFiveRebaseCharacter_toRat,
3419 RatioOrbit.one_toRat]
3420 exact threeToFiveRebaseRat_one
3421 multiplicative := by
3422 intro x y
3423 rw [RatioOrbit.crossEq_iff_toRat_eq, threeToFiveRebaseCharacter_toRat,
3424 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat,
3425 threeToFiveRebaseCharacter_toRat, threeToFiveRebaseCharacter_toRat]
3426 exact threeToFiveRebaseRat_mul x.toRat y.toRat
3427 reciprocal := by
3428 intro x
3429 rw [RatioOrbit.crossEq_iff_toRat_eq, threeToFiveRebaseCharacter_toRat,
3430 RatioOrbit.recip_toRat, RatioOrbit.recip_toRat,
3431 threeToFiveRebaseCharacter_toRat]
3432 exact threeToFiveRebaseRat_inv x.toRat
3433 normalized_invariant := by
3434 intro q
3435 rw [RatioOrbit.crossEq_iff_toRat_eq, threeToFiveRebaseCharacter_toRat,
3436 threeToFiveRebaseCharacter_toRat, DistinctionNat.normalizeRatio_toRat]
3437 nonzero_preserving := by
3438 intro q hq
3439 rw [threeToFiveRebaseCharacter_toRat]
3440 exact threeToFiveRebaseRat_ne_zero hq
3441
3442theorem threeToFiveRebaseCharacter_two_identity :
3443 RatioOrbit.crossEq (threeToFiveRebaseCharacter two) two := by
3444 rw [RatioOrbit.crossEq_iff_toRat_eq, threeToFiveRebaseCharacter_toRat,
3445 two_toRat]
3446 exact threeToFiveRebaseRat_two
3447
3448theorem threeToFiveRebaseCharacter_three_to_five :
3449 (threeToFiveRebaseCharacter threePrimeDirection).toRat = 5 := by
3450 rw [threeToFiveRebaseCharacter_toRat, threePrimeDirection_toRat]
3451 exact threeToFiveRebaseRat_three
3452
3453theorem threeToFiveRebaseCharacter_two_calibrated :
3454 RatioOrbit.crossEq (costFromCharacter threeToFiveRebaseCharacter two)
3455 (onRatioOrbit two) := by
3456 unfold costFromCharacter
3457 exact onRatioOrbit_congr threeToFiveRebaseCharacter_two_identity
3458
3459theorem threeToFiveRebaseCharacter_not_three_prime_calibrated :
3460 ¬ RatioOrbit.crossEq
3461 (costFromCharacter threeToFiveRebaseCharacter threePrimeDirection)
3462 (onRatioOrbit threePrimeDirection) := by
3463 intro h
3464 rw [RatioOrbit.crossEq_iff_toRat_eq, costFromCharacter_toRat,
3465 onRatioOrbit_toRat, threeToFiveRebaseCharacter_three_to_five,
3466 threePrimeDirection_toRat] at h
3467 norm_num at h
3468
3469theorem PRCTwoCalibrationForcesPrimeCalibrationTarget_refuted :
3470 ¬ PRCTwoCalibrationForcesPrimeCalibrationTarget := by
3471 intro htarget
3472 exact threeToFiveRebaseCharacter_not_three_prime_calibrated
3473 (htarget threeToFiveRebaseCharacter
3474 threeToFiveRebaseCharacter_ratio_character
3475 threeToFiveRebaseCharacter_two_calibrated
3476 threeOrbit threeOrbit_primeOrbit)
3477
3478/-- The first mixed composite direction in the two-adic obstruction: `2 * 3`. -/
3479def twoThreePrimeCompositeDirection : RatioOrbit :=
3480 RatioOrbit.mul twoPrimeDirection threePrimeDirection
3481
3482@[simp] theorem twoThreePrimeCompositeDirection_toRat :
3483 twoThreePrimeCompositeDirection.toRat = 6 := by
3484 unfold twoThreePrimeCompositeDirection
3485 rw [RatioOrbit.mul_toRat, twoPrimeDirection_toRat, threePrimeDirection_toRat]
3486 norm_num
3487
3488/-- The mixed image forced by a two-adic axis twist at the composite `2 * 3`:
3489the `2` branch is reciprocal and the `3` branch is identity, giving `3/2`. -/
3490def twoThreePrimeMixedDirection : RatioOrbit :=
3491 RatioOrbit.mul (RatioOrbit.recip twoPrimeDirection) threePrimeDirection
3492
3493@[simp] theorem twoThreePrimeMixedDirection_toRat :
3494 twoThreePrimeMixedDirection.toRat = (3 / 2 : ℚ) := by
3495 unfold twoThreePrimeMixedDirection
3496 rw [RatioOrbit.mul_toRat, RatioOrbit.recip_toRat, twoPrimeDirection_toRat,
3497 threePrimeDirection_toRat]
3498 norm_num
3499
3500/-- Local orientation at the first mixed composite would require the character
3501image of `2*3` to be either the composite itself or its reciprocal. -/
3502def PRCCharacterTwoThreeCompositeLocalOrientation
3503 (χ : RatioOrbit → RatioOrbit) : Prop :=
3504 RatioOrbit.crossEq (χ twoThreePrimeCompositeDirection)
3505 twoThreePrimeCompositeDirection ∨
3506 RatioOrbit.crossEq (χ twoThreePrimeCompositeDirection)
3507 (RatioOrbit.recip twoThreePrimeCompositeDirection)
3508
3509/-- Positive `2*3` composite-local form of the current two-adic branch blocker:
3510every ratio character carrying the two-adic axis branch must still choose one
3511of the two canonical local orientations at the first mixed composite. -/
3512def PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :
3513 Prop :=
3514 ∀ χ : RatioOrbit → RatioOrbit,
3515 PRCRatioCharacter χ →
3516 PRCCharacterTwoAdicAxisTwist χ →
3517 PRCCharacterTwoThreeCompositeLocalOrientation χ
3518
3519/-- Witness form of the `2*3` composite-local failure. This is the constructive
3520countermodel surface equivalent to the reduced two-adic ratio-character target. -/
3521def PRCTwoThreeCompositeLocalOrientationFailureCharacter :
3522 Prop :=
3523 ∃ χ : RatioOrbit → RatioOrbit,
3524 PRCRatioCharacter χ ∧
3525 PRCCharacterTwoAdicAxisTwist χ ∧
3526 ¬ PRCCharacterTwoThreeCompositeLocalOrientation χ
3527
3528/-- Composite-defect form of the non-two mixed branch obstruction. A character
3529that sends orbit `2` to the reciprocal branch and a distinct native prime `p`
3530to identity must send the composite direction `2*p` to the mixed value `p/2`. -/
3531def PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect
3532 (χ : RatioOrbit → RatioOrbit) : Prop :=
3533 RatioOrbit.crossEq (χ twoPrimeDirection)
3534 (RatioOrbit.recip twoPrimeDirection) ∧
3535 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3536 p ≠ twoOrbit ∧
3537 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ∧
3538 RatioOrbit.crossEq
3539 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
3540 (RatioOrbit.mul
3541 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp))
3542
3543/-- Cost-visible composite defect: the mixed composite image is not J-cost
3544calibrated at the composite direction `2*p`. -/
3545def PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect
3546 (χ : RatioOrbit → RatioOrbit) : Prop :=
3547 RatioOrbit.crossEq (χ twoPrimeDirection)
3548 (RatioOrbit.recip twoPrimeDirection) ∧
3549 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3550 p ≠ twoOrbit ∧
3551 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ∧
3552 RatioOrbit.crossEq
3553 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
3554 (RatioOrbit.mul
3555 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)) ∧
3556 ¬ RatioOrbit.crossEq
3557 (costFromCharacter χ
3558 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
3559 (onRatioOrbit
3560 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
3561
3562/-- Universal target form of the cost-visible blocker: prime calibration must
3563calibrate the composite direction `2*p` even under the mixed orientation data
3564that sends orbit `2` reciprocal and a distinct native prime `p` identity. -/
3565def PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget :
3566 Prop :=
3567 ∀ χ : RatioOrbit → RatioOrbit,
3568 PRCRatioCharacter χ →
3569 PRCCharacterPrimeDirectionCalibrated χ →
3570 RatioOrbit.crossEq (χ twoPrimeDirection)
3571 (RatioOrbit.recip twoPrimeDirection) →
3572 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3573 p ≠ twoOrbit →
3574 RatioOrbit.crossEq (χ (primeDirection p hp))
3575 (primeDirection p hp) →
3576 RatioOrbit.crossEq
3577 (costFromCharacter χ
3578 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
3579 (onRatioOrbit
3580 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
3581
3582/-- Product-calibration target: prime calibration must propagate to the product
3583of any two native prime directions. This is the natural composite surface whose
3584`2*p` mixed-orientation instance is the current branch-rigidity blocker. -/
3585def PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget :
3586 Prop :=
3587 ∀ χ : RatioOrbit → RatioOrbit,
3588 PRCRatioCharacter χ →
3589 PRCCharacterPrimeDirectionCalibrated χ →
3590 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3591 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3592 RatioOrbit.crossEq
3593 (costFromCharacter χ
3594 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
3595 (onRatioOrbit
3596 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
3597
3598/-- Character-local form of prime-pair product cost consistency. Unlike
3599`PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget`, this is a
3600field that can be required of one character as part of admissibility. -/
3601def PRCCharacterPrimePairProductCostConsistent
3602 (χ : RatioOrbit → RatioOrbit) : Prop :=
3603 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3604 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3605 RatioOrbit.crossEq
3606 (costFromCharacter χ
3607 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
3608 (onRatioOrbit
3609 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
3610
3611/-- Repaired admissible-character interface after the two-adic countermodel:
3612a character must satisfy the ratio-character laws, prime calibration, and
3613prime-pair product cost consistency. This field preserves the two global
3614orientations but excludes valuation twists. -/
3615structure PRCAdmissibleRatioCharacter
3616 (χ : RatioOrbit → RatioOrbit) : Prop where
3617 ratio_character : PRCRatioCharacter χ
3618 prime_calibrated : PRCCharacterPrimeDirectionCalibrated χ
3619 prime_pair_product_cost :
3620 PRCCharacterPrimePairProductCostConsistent χ
3621
3622/-- Signed repaired admissible-character interface: prime and prime-pair
3623admissibility plus explicit preservation of the signed unit. Pass 279 proves
3624the unsigned interface cannot imply this field. -/
3625structure PRCSignedAdmissibleRatioCharacter
3626 (χ : RatioOrbit → RatioOrbit) : Prop where
3627 admissible : PRCAdmissibleRatioCharacter χ
3628 signed_unit : PRCCharacterSignedUnitCalibrated χ
3629
3630theorem absValueCharacter_prime_pair_product_cost :
3631 PRCCharacterPrimePairProductCostConsistent absValueCharacter := by
3632 intro p hp r hr
3633 have hprod :
3634 RatioOrbit.crossEq
3635 (absValueCharacter
3636 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
3637 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)) :=
3638 by
3639 rw [RatioOrbit.crossEq_iff_toRat_eq, absValueCharacter_toRat,
3640 RatioOrbit.mul_toRat, primeDirection_toRat, primeDirection_toRat]
3641 exact abs_of_nonneg
3642 (mul_nonneg
3643 (by exact_mod_cast Nat.zero_le p.toNat)
3644 (by exact_mod_cast Nat.zero_le r.toNat))
3645 exact onRatioOrbit_congr hprod
3646
3647theorem absValueCharacter_admissible :
3648 PRCAdmissibleRatioCharacter absValueCharacter where
3649 ratio_character := absValueCharacter_ratio_character
3650 prime_calibrated := absValueCharacter_prime_calibrated
3651 prime_pair_product_cost := absValueCharacter_prime_pair_product_cost
3652
3653theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_all_prime_calibrated_admissible :
3654 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
3655 ∀ χ : RatioOrbit → RatioOrbit,
3656 PRCRatioCharacter χ →
3657 PRCCharacterPrimeDirectionCalibrated χ →
3658 PRCAdmissibleRatioCharacter χ := by
3659 constructor
3660 · intro htarget χ hχ hprime
3661 exact
3662 ⟨hχ, hprime, htarget χ hχ hprime⟩
3663 · intro hadm χ hχ hprime
3664 exact (hadm χ hχ hprime).prime_pair_product_cost
3665
3666/-- Admissible replacement for the character-factorization blocker: every
3667native cost must factor through a character satisfying the repaired interface,
3668not merely through an arbitrary ratio character. -/
3669def PRCNativeCostAdmissibleCharacterFactorizationTarget : Prop :=
3670 ∀ F : RatioOrbit → RatioOrbit,
3671 PRCNativeCostHypotheses F →
3672 ∃ χ : RatioOrbit → RatioOrbit,
3673 PRCAdmissibleRatioCharacter χ ∧
3674 ∀ q : RatioOrbit,
3675 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
3676
3677/-- Exact upgrade lemma still missing on the factorization side: an arbitrary
3678ratio-character factor for a native cost must be replaceable by an admissible
3679factor with the same generated cost. This is weaker than demanding that the
3680original factor itself be admissible, and it is the right target because
3681`J(χ q)` cannot distinguish a direction from its reciprocal. -/
3682def PRCNativeCostFactorizationAdmissibilityUpgradeTarget : Prop :=
3683 ∀ F : RatioOrbit → RatioOrbit,
3684 PRCNativeCostHypotheses F →
3685 ∀ χ : RatioOrbit → RatioOrbit,
3686 PRCRatioCharacter χ →
3687 (∀ q : RatioOrbit,
3688 RatioOrbit.crossEq (F q) (costFromCharacter χ q)) →
3689 ∃ ψ : RatioOrbit → RatioOrbit,
3690 PRCAdmissibleRatioCharacter ψ ∧
3691 ∀ q : RatioOrbit,
3692 RatioOrbit.crossEq (F q) (costFromCharacter ψ q)
3693
3694/-- Admissible replacement for character rigidity. The cost, rather than the
3695character orientation itself, must collapse to canonical J-cost on all ratio
3696orbits. -/
3697def PRCNativeCostAdmissibleCharacterRigidityTarget : Prop :=
3698 ∀ χ : RatioOrbit → RatioOrbit,
3699 PRCAdmissibleRatioCharacter χ →
3700 ∀ q : RatioOrbit,
3701 RatioOrbit.crossEq (costFromCharacter χ q) (onRatioOrbit q)
3702
3703/-- Admissible-character rigidity reduced to orientation: under the repaired
3704interface, every admissible character should be globally identity-oriented or
3705reciprocal-oriented pointwise. -/
3706def PRCAdmissibleCharacterGlobalOrientationTarget : Prop :=
3707 ∀ χ : RatioOrbit → RatioOrbit,
3708 PRCAdmissibleRatioCharacter χ →
3709 PRCCharacterGlobalCostOrientation χ
3710
3711/-- Prime-orientation subtarget under admissibility: the repaired prime-pair
3712field should force all prime axes to choose one branch coherently. -/
3713def PRCAdmissibleCharacterPrimeOrientationCoherentTarget : Prop :=
3714 ∀ χ : RatioOrbit → RatioOrbit,
3715 PRCAdmissibleRatioCharacter χ →
3716 PRCCharacterPrimeOrientationCoherent χ
3717
3718theorem PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_global_orientation
3719 (horient : PRCAdmissibleCharacterGlobalOrientationTarget) :
3720 PRCNativeCostAdmissibleCharacterRigidityTarget := by
3721 intro χ hadm q
3722 rcases horient χ hadm q with hsame | hinv
3723 · exact onRatioOrbit_congr hsame
3724 · exact RatioOrbit.crossEq_trans
3725 (onRatioOrbit_congr hinv)
3726 (RatioOrbit.crossEq_symm (reciprocal_symmetric q))
3727
3728theorem PRCNativeCostCharacterFactorizationTarget_of_admissible_character_factorization
3729 (hfactor : PRCNativeCostAdmissibleCharacterFactorizationTarget) :
3730 PRCNativeCostCharacterFactorizationTarget := by
3731 intro F hF
3732 rcases hfactor F hF with ⟨χ, hadm, hFχ⟩
3733 exact ⟨χ, hadm.ratio_character, hFχ⟩
3734
3735theorem PRCNativeCostAdmissibleCharacterFactorizationTarget_of_character_factorization_and_admissibility_upgrade
3736 (hfactor : PRCNativeCostCharacterFactorizationTarget)
3737 (hupgrade : PRCNativeCostFactorizationAdmissibilityUpgradeTarget) :
3738 PRCNativeCostAdmissibleCharacterFactorizationTarget := by
3739 intro F hF
3740 rcases hfactor F hF with ⟨χ, hχ, hFχ⟩
3741 exact hupgrade F hF χ hχ hFχ
3742
3743theorem PRCNativeCostAdmissibleCharacterRigidityTarget_of_prime_calibration_propagation
3744 (hprop : PRCPrimeCalibrationPropagationTarget) :
3745 PRCNativeCostAdmissibleCharacterRigidityTarget := by
3746 intro χ hadm q
3747 exact hprop χ hadm.ratio_character hadm.prime_calibrated q
3748
3749theorem PRCNativeCostUniquenessTarget_of_admissible_character_targets
3750 (hfactor : PRCNativeCostAdmissibleCharacterFactorizationTarget)
3751 (hrigid : PRCNativeCostAdmissibleCharacterRigidityTarget) :
3752 PRCNativeCostUniquenessTarget := by
3753 intro F hF q
3754 rcases hfactor F hF with ⟨χ, hadm, hFχ⟩
3755 exact RatioOrbit.crossEq_trans (hFχ q) (hrigid χ hadm q)
3756
3757theorem PRCNativeCostUniquenessTarget_of_character_factorization_upgrade_and_prime_propagation
3758 (hfactor : PRCNativeCostCharacterFactorizationTarget)
3759 (hupgrade : PRCNativeCostFactorizationAdmissibilityUpgradeTarget)
3760 (hprop : PRCPrimeCalibrationPropagationTarget) :
3761 PRCNativeCostUniquenessTarget :=
3762 PRCNativeCostUniquenessTarget_of_admissible_character_targets
3763 (PRCNativeCostAdmissibleCharacterFactorizationTarget_of_character_factorization_and_admissibility_upgrade
3764 hfactor hupgrade)
3765 (PRCNativeCostAdmissibleCharacterRigidityTarget_of_prime_calibration_propagation
3766 hprop)
3767
3768/-- Positive reciprocal-branch transport normal form: if the distinguished
3769orbit-`2` prime axis is reciprocal-oriented, every native prime axis is
3770reciprocal-oriented. -/
3771def PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal
3772 (χ : RatioOrbit → RatioOrbit) : Prop :=
3773 RatioOrbit.crossEq (χ twoPrimeDirection)
3774 (RatioOrbit.recip twoPrimeDirection) →
3775 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3776 RatioOrbit.crossEq (χ (primeDirection p hp))
3777 (RatioOrbit.recip (primeDirection p hp))
3778
3779/-- Converse distinguished-axis reciprocal normal form: reciprocal orientation at
3780any calibrated prime axis forces reciprocal orientation at the orbit-`2` prime
3781axis. Together with the two-to-all reciprocal rule, this is exactly
3782reciprocal-witness globalization. -/
3783def PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal
3784 (χ : RatioOrbit → RatioOrbit) : Prop :=
3785 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3786 RatioOrbit.crossEq (χ (primeDirection p hp))
3787 (RatioOrbit.recip (primeDirection p hp)) →
3788 RatioOrbit.crossEq (χ twoPrimeDirection)
3789 (RatioOrbit.recip twoPrimeDirection)
3790
3791/-- Split distinguished-axis form of reciprocal-witness globalization. -/
3792def PRCCharacterPrimeReciprocalWitnessGlobalizesSplit
3793 (χ : RatioOrbit → RatioOrbit) : Prop :=
3794 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal χ ∧
3795 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ
3796
3797/-- Trace-connected form of the same positive reciprocal branch transport: the
3798reciprocal branch at orbit `2` transports along a finite δ-trace connection from
3799the orbit-`2` prime axis to the target native prime axis. -/
3800def PRCCharacterTwoPrimeReciprocalRespectsTraceConnected
3801 (χ : RatioOrbit → RatioOrbit) : Prop :=
3802 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3803 PRCPrimeAxisTraceConnected twoOrbit twoOrbit_primeOrbit p hp →
3804 RatioOrbit.crossEq (χ twoPrimeDirection)
3805 (RatioOrbit.recip twoPrimeDirection) →
3806 RatioOrbit.crossEq (χ (primeDirection p hp))
3807 (RatioOrbit.recip (primeDirection p hp))
3808
3809/-- Identity analogue of two-prime trace-connected branch transport: identity at
3810orbit `2` transports along a finite δ-trace connection from the orbit-`2` prime
3811axis to the target native prime axis. -/
3812def PRCCharacterTwoPrimeIdentityRespectsTraceConnected
3813 (χ : RatioOrbit → RatioOrbit) : Prop :=
3814 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3815 PRCPrimeAxisTraceConnected twoOrbit twoOrbit_primeOrbit p hp →
3816 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection →
3817 RatioOrbit.crossEq (χ (primeDirection p hp))
3818 (primeDirection p hp)
3819
3820/-- Local prime orientation says each prime axis is individually sent to itself
3821or to its reciprocal. This is the algebraic content of equality of J-costs on a
3822single prime direction. -/
3823def PRCCharacterPrimeLocalOrientation
3824 (χ : RatioOrbit → RatioOrbit) : Prop :=
3825 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3826 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ∨
3827 RatioOrbit.crossEq (χ (primeDirection p hp))
3828 (RatioOrbit.recip (primeDirection p hp))
3829
3830/-- No mixed prime orientation says a character cannot choose identity on one
3831prime axis and reciprocal on another. This is the trace-coherence condition that
3832rules out independent prime-axis inversions. -/
3833def PRCCharacterNoMixedPrimeOrientation
3834 (χ : RatioOrbit → RatioOrbit) : Prop :=
3835 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3836 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3837 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3838 RatioOrbit.crossEq (χ (primeDirection r hr))
3839 (RatioOrbit.recip (primeDirection r hr)) →
3840 False
3841
3842/-- Existential form of prime-axis no-mixing: no identity-oriented prime witness
3843can coexist with a reciprocal-oriented prime witness. -/
3844def PRCCharacterNoMixedPrimeWitnesses
3845 (χ : RatioOrbit → RatioOrbit) : Prop :=
3846 ¬ ((∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3847 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) ∧
3848 (∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
3849 RatioOrbit.crossEq (χ (primeDirection r hr))
3850 (RatioOrbit.recip (primeDirection r hr))))
3851
3852/-- Positive mixed-prime witness form: one native prime axis is identity-oriented
3853while one (possibly different) native prime axis is reciprocal-oriented. -/
3854def PRCCharacterMixedPrimeWitnesses
3855 (χ : RatioOrbit → RatioOrbit) : Prop :=
3856 (∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3857 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) ∧
3858 (∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
3859 RatioOrbit.crossEq (χ (primeDirection r hr))
3860 (RatioOrbit.recip (primeDirection r hr)))
3861
3862/-- Pair-packaged mixed-prime witness form: the two branch witnesses are named
3863in one existential package. This removes the last propositional wrapper around
3864the current mixed-prime obstruction. -/
3865def PRCCharacterMixedPrimePairWitnesses
3866 (χ : RatioOrbit → RatioOrbit) : Prop :=
3867 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3868 ∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
3869 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ∧
3870 RatioOrbit.crossEq (χ (primeDirection r hr))
3871 (RatioOrbit.recip (primeDirection r hr))
3872
3873/-- Same-axis mixed-prime pair witness: the identity-oriented and
3874reciprocal-oriented prime witnesses are carried by the same native prime
3875orbit. This is the self-reciprocal branch-conflict case. -/
3876def PRCCharacterSamePrimeMixedPairWitnesses
3877 (χ : RatioOrbit → RatioOrbit) : Prop :=
3878 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3879 ∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
3880 p = r ∧
3881 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ∧
3882 RatioOrbit.crossEq (χ (primeDirection r hr))
3883 (RatioOrbit.recip (primeDirection r hr))
3884
3885/-- Distinct-axis mixed-prime pair witness: the identity-oriented and
3886reciprocal-oriented prime witnesses live on different native prime orbits. -/
3887def PRCCharacterDistinctPrimeMixedPairWitnesses
3888 (χ : RatioOrbit → RatioOrbit) : Prop :=
3889 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3890 ∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
3891 p ≠ r ∧
3892 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) ∧
3893 RatioOrbit.crossEq (χ (primeDirection r hr))
3894 (RatioOrbit.recip (primeDirection r hr))
3895
3896/-- One-sided witness exclusion for prime axes: once an identity-oriented native
3897prime witness exists, no reciprocal-oriented native prime witness can coexist
3898with it. This is the atomic witness form of prime no-mixing. -/
3899def PRCCharacterPrimeIdentityWitnessExcludesReciprocal
3900 (χ : RatioOrbit → RatioOrbit) : Prop :=
3901 (∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3902 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) →
3903 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3904 RatioOrbit.crossEq (χ (primeDirection r hr))
3905 (RatioOrbit.recip (primeDirection r hr)) →
3906 False
3907
3908/-- Positive reciprocal-witness globalization for prime axes: if any native
3909prime witness is reciprocal-oriented, every native prime axis is
3910reciprocal-oriented. This is the reciprocal branch form of prime no-mixing. -/
3911def PRCCharacterPrimeReciprocalWitnessGlobalizes
3912 (χ : RatioOrbit → RatioOrbit) : Prop :=
3913 (∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
3914 RatioOrbit.crossEq (χ (primeDirection p hp))
3915 (RatioOrbit.recip (primeDirection p hp))) →
3916 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3917 RatioOrbit.crossEq (χ (primeDirection r hr))
3918 (RatioOrbit.recip (primeDirection r hr))
3919
3920/-- Prime identity orientation is trace-coherent when identity orientation at
3921one calibrated prime forces identity orientation at every calibrated prime. This
3922is the missing cross-prime relation; the current ratio-character laws are local
3923to multiplication and reciprocal and do not by themselves connect the orientation
3924choices of different prime axes. -/
3925def PRCCharacterPrimeIdentityTraceCoherent
3926 (χ : RatioOrbit → RatioOrbit) : Prop :=
3927 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3928 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3929 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3930 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)
3931
3932/-- The trace-free content of the prime identity transport blocker: if any native
3933prime axis is identity-oriented, then every native prime axis is
3934identity-oriented. This is definitionally the same proposition as prime
3935identity trace coherence, but the name records that the remaining obstruction is
3936branch uniformity, not trace construction. -/
3937def PRCCharacterPrimeIdentityBranchUniform
3938 (χ : RatioOrbit → RatioOrbit) : Prop :=
3939 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3940 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3941 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3942 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)
3943
3944/-- A character respects prime-axis trace connection when identity orientation
3945transports along the finite δ-trace component relating two prime axes. -/
3946def PRCCharacterPrimeIdentityRespectsTraceConnected
3947 (χ : RatioOrbit → RatioOrbit) : Prop :=
3948 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3949 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3950 PRCPrimeAxisTraceConnected p hp r hr →
3951 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3952 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)
3953
3954/-- A more explicit form of the trace-transport rule: identity orientation
3955transports when two prime-axis traces are witnessed inside the same finite
3956δ-trace extension. -/
3957def PRCCharacterPrimeIdentityRespectsCommonTraceExtension
3958 (χ : RatioOrbit → RatioOrbit) : Prop :=
3959 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3960 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3961 ∀ T : Trace,
3962 Trace.Extends (orbitPositionTrace p) T →
3963 Trace.Extends (orbitPositionTrace r) T →
3964 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3965 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)
3966
3967/-- Canonical-add-trace form: identity orientation transports through the
3968specific finite common extension `orbitPositionTrace (p + r)`. This removes the
3969arbitrary witness from common-trace transport; the only remaining content is that
3970the character respects the canonical finite δ-trace merger of two prime axes. -/
3971def PRCCharacterPrimeIdentityRespectsCanonicalAddTrace
3972 (χ : RatioOrbit → RatioOrbit) : Prop :=
3973 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3974 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3975 Trace.Extends (orbitPositionTrace p) (orbitPositionTrace (p + r)) →
3976 Trace.Extends (orbitPositionTrace r) (orbitPositionTrace (p + r)) →
3977 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3978 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)
3979
3980/-- The exact trace-order law: identity orientation transports between prime axes
3981whose finite δ-orbit traces are comparable by extension. The structural
3982comparability of any two orbit traces is proved above, so this is the part that
3983must come from the ratio character respecting trace order. -/
3984def PRCCharacterPrimeIdentityRespectsComparableTrace
3985 (χ : RatioOrbit → RatioOrbit) : Prop :=
3986 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
3987 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
3988 (Trace.Extends (orbitPositionTrace p) (orbitPositionTrace r) ∨
3989 Trace.Extends (orbitPositionTrace r) (orbitPositionTrace p)) →
3990 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
3991 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr)
3992
3993/-- Identity orientation for an arbitrary nonzero orbit direction, not only for
3994prime axes. This lets trace transport pass through composite orbit positions. -/
3995def PRCCharacterOrbitDirectionIdentity
3996 (χ : RatioOrbit → RatioOrbit)
3997 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero) : Prop :=
3998 RatioOrbit.crossEq (χ (orbitDirection p hp)) (orbitDirection p hp)
3999
4000/-- Reciprocal orientation for an arbitrary nonzero orbit direction. -/
4001def PRCCharacterOrbitDirectionReciprocal
4002 (χ : RatioOrbit → RatioOrbit)
4003 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero) : Prop :=
4004 RatioOrbit.crossEq
4005 (χ (orbitDirection p hp)) (RatioOrbit.recip (orbitDirection p hp))
4006
4007/-- Prime identity witness globalization says that once any calibrated prime axis
4008chooses the identity branch, identity propagates to every nonunit orbit
4009direction. The no-prime-identity case is handled separately by the prime-witness
4010reflection lemma. -/
4011def PRCCharacterPrimeIdentityWitnessGlobalizesNonunit
4012 (χ : RatioOrbit → RatioOrbit) : Prop :=
4013 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
4014 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) →
4015 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
4016 ¬ DistinctionNat.unit r →
4017 PRCCharacterOrbitDirectionIdentity χ r hr
4018
4019/-- The one-step trace-order law: identity orientation is invariant under one
4020successor step of the nonzero δ-orbit. This is smaller than prime-to-prime
4021transport, because it acts before primality is imposed. -/
4022def PRCCharacterOrbitIdentityRespectsSuccessorStep
4023 (χ : RatioOrbit → RatioOrbit) : Prop :=
4024 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
4025 PRCCharacterOrbitDirectionIdentity χ p hp ↔
4026 PRCCharacterOrbitDirectionIdentity χ
4027 (DistinctionNat.succ p) (orbit_succ_ne_zero p)
4028
4029/-- Forward one-step successor law for identity orientation on nonzero orbit
4030directions. -/
4031def PRCCharacterOrbitIdentityExtendsSuccessorStep
4032 (χ : RatioOrbit → RatioOrbit) : Prop :=
4033 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
4034 PRCCharacterOrbitDirectionIdentity χ p hp →
4035 PRCCharacterOrbitDirectionIdentity χ
4036 (DistinctionNat.succ p) (orbit_succ_ne_zero p)
4037
4038/-- Backward one-step successor law for identity orientation on nonzero orbit
4039directions. -/
4040def PRCCharacterOrbitIdentityContractsSuccessorStep
4041 (χ : RatioOrbit → RatioOrbit) : Prop :=
4042 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
4043 PRCCharacterOrbitDirectionIdentity χ
4044 (DistinctionNat.succ p) (orbit_succ_ne_zero p) →
4045 PRCCharacterOrbitDirectionIdentity χ p hp
4046
4047/-- The successor-step transport needed for trace coherence is exactly the
4048forward and backward one-step laws bundled together. -/
4049def PRCCharacterOrbitIdentitySuccessorTransport
4050 (χ : RatioOrbit → RatioOrbit) : Prop :=
4051 PRCCharacterOrbitIdentityExtendsSuccessorStep χ ∧
4052 PRCCharacterOrbitIdentityContractsSuccessorStep χ
4053
4054/-- Additive compatibility with the δ-successor operation on nonzero orbit
4055directions. This is the missing bridge between multiplicative ratio characters
4056and the trace/additive structure of the orbit. -/
4057def PRCCharacterOrbitSuccessorAdditiveCompatible
4058 (χ : RatioOrbit → RatioOrbit) : Prop :=
4059 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
4060 RatioOrbit.crossEq
4061 (χ (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p)))
4062 (RatioOrbit.add (χ (orbitDirection p hp)) RatioOrbit.one)
4063
4064theorem PRCCharacterOrbitIdentityExtendsSuccessorStep_of_additive_compat
4065 {χ : RatioOrbit → RatioOrbit}
4066 (hadd : PRCCharacterOrbitSuccessorAdditiveCompatible χ) :
4067 PRCCharacterOrbitIdentityExtendsSuccessorStep χ := by
4068 intro p hp hpId
4069 have hχsucc := hadd p hp
4070 rw [PRCCharacterOrbitDirectionIdentity] at hpId ⊢
4071 rw [RatioOrbit.crossEq_iff_toRat_eq] at hχsucc hpId ⊢
4072 rw [RatioOrbit.add_toRat, RatioOrbit.one_toRat] at hχsucc
4073 rw [hχsucc, hpId]
4074 rw [orbitDirection_toRat, orbitDirection_toRat, DistinctionNat.toNat_succ]
4075 norm_num
4076
4077theorem PRCCharacterOrbitIdentityContractsSuccessorStep_of_additive_compat
4078 {χ : RatioOrbit → RatioOrbit}
4079 (hadd : PRCCharacterOrbitSuccessorAdditiveCompatible χ) :
4080 PRCCharacterOrbitIdentityContractsSuccessorStep χ := by
4081 intro p hp hsuccId
4082 have hχsucc := hadd p hp
4083 rw [PRCCharacterOrbitDirectionIdentity] at hsuccId ⊢
4084 rw [RatioOrbit.crossEq_iff_toRat_eq] at hχsucc hsuccId ⊢
4085 rw [RatioOrbit.add_toRat, RatioOrbit.one_toRat] at hχsucc
4086 rw [hχsucc] at hsuccId
4087 rw [orbitDirection_toRat, DistinctionNat.toNat_succ] at hsuccId
4088 rw [orbitDirection_toRat]
4089 have hsuccCast :
4090 ((Nat.succ p.toNat : Nat) : ℚ) = (p.toNat : ℚ) + 1 := by
4091 norm_num
4092 rw [hsuccCast] at hsuccId
4093 linarith
4094
4095theorem PRCCharacterOrbitIdentitySuccessorTransport_of_additive_compat
4096 {χ : RatioOrbit → RatioOrbit}
4097 (hadd : PRCCharacterOrbitSuccessorAdditiveCompatible χ) :
4098 PRCCharacterOrbitIdentitySuccessorTransport χ :=
4099 ⟨PRCCharacterOrbitIdentityExtendsSuccessorStep_of_additive_compat hadd,
4100 PRCCharacterOrbitIdentityContractsSuccessorStep_of_additive_compat hadd⟩
4101
4102theorem orbit_succ_not_unit_of_nonzero_not_unit
4103 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero)
4104 (hunit : ¬ DistinctionNat.unit p) :
4105 ¬ DistinctionNat.unit (DistinctionNat.succ p) := by
4106 intro hsuccUnit
4107 have hpNat0 : p.toNat ≠ 0 := by
4108 intro hz
4109 apply hp
4110 apply DistinctionNat.toNat_inj
4111 rw [hz, DistinctionNat.toNat_zero]
4112 have hpNat1 : p.toNat ≠ 1 := by
4113 intro hone
4114 exact hunit ((DistinctionNat.unit_iff_toNat_eq_one p).mpr hone)
4115 have hsuccNat1 : (DistinctionNat.succ p).toNat = 1 :=
4116 (DistinctionNat.unit_iff_toNat_eq_one (DistinctionNat.succ p)).mp hsuccUnit
4117 rw [DistinctionNat.toNat_succ] at hsuccNat1
4118 omega
4119
4120/-- Every nonunit orbit direction is locally oriented: identity or reciprocal.
4121This is the nonprime analogue of the already proved local-prime orientation
4122alternative. -/
4123def PRCCharacterNonunitOrbitLocalOrientation
4124 (χ : RatioOrbit → RatioOrbit) : Prop :=
4125 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
4126 ¬ DistinctionNat.unit p →
4127 PRCCharacterOrbitDirectionIdentity χ p hp ∨
4128 PRCCharacterOrbitDirectionReciprocal χ p hp
4129
4130/-- Product-factor propagation for local orientation. If two nonunit factors are
4131locally identity-or-reciprocal oriented, their product is locally oriented too.
4132This is the exact multiplicative step needed to move from prime-axis
4133orientation to composite orbit directions. -/
4134def PRCCharacterOrbitProductLocalOrientationPropagates
4135 (χ : RatioOrbit → RatioOrbit) : Prop :=
4136 ∀ a b p : DistinctionNat,
4137 ∀ ha : a ≠ DistinctionNat.zero, ∀ hb : b ≠ DistinctionNat.zero,
4138 ¬ DistinctionNat.unit a →
4139 ¬ DistinctionNat.unit b →
4140 ∀ hp : p ≠ DistinctionNat.zero,
4141 ¬ DistinctionNat.unit p →
4142 a * b = p →
4143 (PRCCharacterOrbitDirectionIdentity χ a ha ∨
4144 PRCCharacterOrbitDirectionReciprocal χ a ha) →
4145 (PRCCharacterOrbitDirectionIdentity χ b hb ∨
4146 PRCCharacterOrbitDirectionReciprocal χ b hb) →
4147 PRCCharacterOrbitDirectionIdentity χ p hp ∨
4148 PRCCharacterOrbitDirectionReciprocal χ p hp
4149
4150theorem ratioOrbit_mul_congr {a₁ a₂ b₁ b₂ : RatioOrbit}
4151 (ha : RatioOrbit.crossEq a₁ a₂) (hb : RatioOrbit.crossEq b₁ b₂) :
4152 RatioOrbit.crossEq (RatioOrbit.mul a₁ b₁) (RatioOrbit.mul a₂ b₂) := by
4153 rw [RatioOrbit.crossEq_iff_toRat_eq] at ha hb ⊢
4154 rw [RatioOrbit.mul_toRat, RatioOrbit.mul_toRat, ha, hb]
4155
4156theorem ratioOrbit_add_congr {a₁ a₂ b₁ b₂ : RatioOrbit}
4157 (ha : RatioOrbit.crossEq a₁ a₂) (hb : RatioOrbit.crossEq b₁ b₂) :
4158 RatioOrbit.crossEq (RatioOrbit.add a₁ b₁) (RatioOrbit.add a₂ b₂) := by
4159 rw [RatioOrbit.crossEq_iff_toRat_eq] at ha hb ⊢
4160 rw [RatioOrbit.add_toRat, RatioOrbit.add_toRat, ha, hb]
4161
4162theorem ratioOrbit_recip_congr {a b : RatioOrbit}
4163 (h : RatioOrbit.crossEq a b) :
4164 RatioOrbit.crossEq (RatioOrbit.recip a) (RatioOrbit.recip b) := by
4165 rw [RatioOrbit.crossEq_iff_toRat_eq] at h ⊢
4166 rw [RatioOrbit.recip_toRat, RatioOrbit.recip_toRat, h]
4167
4168theorem ratioOrbit_recip_left_crossEq_iff (a b : RatioOrbit) :
4169 RatioOrbit.crossEq (RatioOrbit.recip a) b ↔
4170 RatioOrbit.crossEq a (RatioOrbit.recip b) := by
4171 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.crossEq_iff_toRat_eq,
4172 RatioOrbit.recip_toRat, RatioOrbit.recip_toRat]
4173 constructor
4174 · intro h
4175 rw [← h]
4176 exact (inv_inv a.toRat).symm
4177 · intro h
4178 rw [h]
4179 exact inv_inv b.toRat
4180
4181theorem ratioOrbit_recip_recip_crossEq_self (a : RatioOrbit) :
4182 RatioOrbit.crossEq (RatioOrbit.recip (RatioOrbit.recip a)) a := by
4183 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
4184 RatioOrbit.recip_toRat]
4185 exact inv_inv a.toRat
4186
4187theorem ratioOrbit_mul_recip_recip_crossEq_recip_mul
4188 (a b : RatioOrbit) :
4189 RatioOrbit.crossEq
4190 (RatioOrbit.mul (RatioOrbit.recip a) (RatioOrbit.recip b))
4191 (RatioOrbit.recip (RatioOrbit.mul a b)) := by
4192 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
4193 RatioOrbit.recip_toRat, RatioOrbit.recip_toRat, RatioOrbit.recip_toRat,
4194 RatioOrbit.mul_toRat]
4195 by_cases ha : a.toRat = 0
4196 · simp [ha]
4197 · by_cases hb : b.toRat = 0
4198 · simp [hb]
4199 · field_simp [ha, hb]
4200
4201def PRCCharacterReciprocalTwist (χ : RatioOrbit → RatioOrbit)
4202 (q : RatioOrbit) : RatioOrbit :=
4203 RatioOrbit.recip (χ q)
4204
4205theorem PRCRatioCharacter.reciprocalTwist
4206 {χ : RatioOrbit → RatioOrbit}
4207 (hχ : PRCRatioCharacter χ) :
4208 PRCRatioCharacter (PRCCharacterReciprocalTwist χ) where
4209 unit := by
4210 have hone := ratioOrbit_recip_congr hχ.unit
4211 have hrecOne : RatioOrbit.crossEq (RatioOrbit.recip RatioOrbit.one)
4212 RatioOrbit.one := by
4213 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
4214 RatioOrbit.one_toRat]
4215 norm_num
4216 exact RatioOrbit.crossEq_trans hone hrecOne
4217 multiplicative := by
4218 intro x y
4219 exact RatioOrbit.crossEq_trans
4220 (ratioOrbit_recip_congr (hχ.multiplicative x y))
4221 (RatioOrbit.crossEq_symm
4222 (ratioOrbit_mul_recip_recip_crossEq_recip_mul (χ x) (χ y)))
4223 reciprocal := by
4224 intro x
4225 exact ratioOrbit_recip_congr (hχ.reciprocal x)
4226 normalized_invariant := by
4227 intro q
4228 exact ratioOrbit_recip_congr (hχ.normalized_invariant q)
4229 nonzero_preserving := by
4230 intro q hq
4231 rw [PRCCharacterReciprocalTwist, RatioOrbit.recip_toRat]
4232 exact inv_ne_zero (hχ.nonzero_preserving hq)
4233
4234theorem PRCCharacterPrimeDirectionCalibrated.reciprocalTwist
4235 {χ : RatioOrbit → RatioOrbit}
4236 (hprime : PRCCharacterPrimeDirectionCalibrated χ) :
4237 PRCCharacterPrimeDirectionCalibrated (PRCCharacterReciprocalTwist χ) := by
4238 intro p hp
4239 exact RatioOrbit.crossEq_trans
4240 (RatioOrbit.crossEq_symm (reciprocal_symmetric (χ (primeDirection p hp))))
4241 (hprime p hp)
4242
4243theorem PRCCharacterPrimePairProductCostConsistent.reciprocalTwist
4244 {χ : RatioOrbit → RatioOrbit}
4245 (hpair : PRCCharacterPrimePairProductCostConsistent χ) :
4246 PRCCharacterPrimePairProductCostConsistent
4247 (PRCCharacterReciprocalTwist χ) := by
4248 intro p hp r hr
4249 exact RatioOrbit.crossEq_trans
4250 (RatioOrbit.crossEq_symm
4251 (reciprocal_symmetric
4252 (χ (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))))
4253 (hpair p hp r hr)
4254
4255theorem PRCAdmissibleRatioCharacter.reciprocalTwist
4256 {χ : RatioOrbit → RatioOrbit}
4257 (hadm : PRCAdmissibleRatioCharacter χ) :
4258 PRCAdmissibleRatioCharacter (PRCCharacterReciprocalTwist χ) where
4259 ratio_character := hadm.ratio_character.reciprocalTwist
4260 prime_calibrated := hadm.prime_calibrated.reciprocalTwist
4261 prime_pair_product_cost :=
4262 hadm.prime_pair_product_cost.reciprocalTwist
4263
4264theorem PRCCharacterReciprocalTwist_prime_identity_iff_reciprocal
4265 (χ : RatioOrbit → RatioOrbit)
4266 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
4267 RatioOrbit.crossEq
4268 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
4269 (primeDirection p hp) ↔
4270 RatioOrbit.crossEq (χ (primeDirection p hp))
4271 (RatioOrbit.recip (primeDirection p hp)) := by
4272 exact ratioOrbit_recip_left_crossEq_iff
4273 (χ (primeDirection p hp)) (primeDirection p hp)
4274
4275theorem PRCCharacterReciprocalTwist_two_identity_iff_reciprocal
4276 (χ : RatioOrbit → RatioOrbit) :
4277 RatioOrbit.crossEq
4278 (PRCCharacterReciprocalTwist χ twoPrimeDirection)
4279 twoPrimeDirection ↔
4280 RatioOrbit.crossEq (χ twoPrimeDirection)
4281 (RatioOrbit.recip twoPrimeDirection) := by
4282 exact ratioOrbit_recip_left_crossEq_iff (χ twoPrimeDirection) twoPrimeDirection
4283
4284theorem PRCCharacterReciprocalTwist_prime_reciprocal_iff_identity
4285 (χ : RatioOrbit → RatioOrbit)
4286 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
4287 RatioOrbit.crossEq
4288 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
4289 (RatioOrbit.recip (primeDirection p hp)) ↔
4290 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) := by
4291 constructor
4292 · intro h
4293 have htoDoubleRecip :
4294 RatioOrbit.crossEq (χ (primeDirection p hp))
4295 (RatioOrbit.recip (RatioOrbit.recip (primeDirection p hp))) :=
4296 (ratioOrbit_recip_left_crossEq_iff
4297 (χ (primeDirection p hp))
4298 (RatioOrbit.recip (primeDirection p hp))).mp
4299 (by simpa [PRCCharacterReciprocalTwist] using h)
4300 exact RatioOrbit.crossEq_trans htoDoubleRecip
4301 (ratioOrbit_recip_recip_crossEq_self (primeDirection p hp))
4302 · intro h
4303 simpa [PRCCharacterReciprocalTwist] using ratioOrbit_recip_congr h
4304
4305theorem PRCCharacterReciprocalTwist_two_reciprocal_iff_identity
4306 (χ : RatioOrbit → RatioOrbit) :
4307 RatioOrbit.crossEq
4308 (PRCCharacterReciprocalTwist χ twoPrimeDirection)
4309 (RatioOrbit.recip twoPrimeDirection) ↔
4310 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection := by
4311 constructor
4312 · intro h
4313 have htoDoubleRecip :
4314 RatioOrbit.crossEq (χ twoPrimeDirection)
4315 (RatioOrbit.recip (RatioOrbit.recip twoPrimeDirection)) :=
4316 (ratioOrbit_recip_left_crossEq_iff
4317 (χ twoPrimeDirection)
4318 (RatioOrbit.recip twoPrimeDirection)).mp
4319 (by simpa [PRCCharacterReciprocalTwist] using h)
4320 exact RatioOrbit.crossEq_trans htoDoubleRecip
4321 (ratioOrbit_recip_recip_crossEq_self twoPrimeDirection)
4322 · intro h
4323 simpa [PRCCharacterReciprocalTwist] using ratioOrbit_recip_congr h
4324
4325theorem orbitDirection_mul_crossEq
4326 (a b p : DistinctionNat)
4327 (ha : a ≠ DistinctionNat.zero) (hb : b ≠ DistinctionNat.zero)
4328 (hp : p ≠ DistinctionNat.zero)
4329 (hmul : a * b = p) :
4330 RatioOrbit.crossEq (orbitDirection p hp)
4331 (RatioOrbit.mul (orbitDirection a ha) (orbitDirection b hb)) := by
4332 rw [RatioOrbit.crossEq_iff_toRat_eq, orbitDirection_toRat,
4333 RatioOrbit.mul_toRat, orbitDirection_toRat, orbitDirection_toRat]
4334 have hnat := congrArg DistinctionNat.toNat hmul
4335 rw [DistinctionNat.toNat_mul] at hnat
4336 exact_mod_cast hnat.symm
4337
4338/-- A character is compatible with the native display of an orbit product when
4339the character value on the product orbit agrees with the character value on the
4340ratio product of the factor orbits. This is not automatic from
4341cross-equivalence; it is the quotient-respect step missing from the bare
4342character interface. -/
4343def PRCCharacterOrbitProductDisplayCompatible
4344 (χ : RatioOrbit → RatioOrbit) : Prop :=
4345 ∀ a b p : DistinctionNat,
4346 ∀ ha : a ≠ DistinctionNat.zero, ∀ hb : b ≠ DistinctionNat.zero,
4347 ∀ hp : p ≠ DistinctionNat.zero,
4348 a * b = p →
4349 RatioOrbit.crossEq (χ (orbitDirection p hp))
4350 (χ (RatioOrbit.mul (orbitDirection a ha) (orbitDirection b hb)))
4351
4352/-- Quotient-respect for a ratio character: equivalent ratio-orbit displays
4353must receive equivalent character values. This is the missing map-respects-setoid
4354condition for using a raw `RatioOrbit → RatioOrbit` function as a quotient-native
4355PRC character. -/
4356def PRCCharacterRespectsCrossEq (χ : RatioOrbit → RatioOrbit) : Prop :=
4357 ∀ q r : RatioOrbit,
4358 RatioOrbit.crossEq q r → RatioOrbit.crossEq (χ q) (χ r)
4359
4360/-- Quotient-respect for doubled traces: equivalent ratio-orbit displays must
4361carry equivalent trace values. -/
4362def PRCDoubledTraceRespectsCrossEq (T : RatioOrbit → RatioOrbit) : Prop :=
4363 ∀ q r : RatioOrbit,
4364 RatioOrbit.crossEq q r → RatioOrbit.crossEq (T q) (T r)
4365
4366/-- Canonical-normalization target for ratio orbits. If two raw ratio displays
4367are cross-equivalent, native GCD normalization should return the same raw
4368representative. This is the exact quotient-normalization uniqueness statement
4369needed to turn `normalized_invariant` into general quotient respect. -/
4370def PRCNormalizeRatioCanonicalTarget : Prop :=
4371 ∀ q r : RatioOrbit,
4372 RatioOrbit.crossEq q r →
4373 DistinctionNat.normalizeRatio q = DistinctionNat.normalizeRatio r
4374
4375/-- A signed-orbit display is sign-canonical when it is literally the
4376nonnegative orbit display of its absolute value, or literally the negated
4377nonnegative display of its absolute value. This records the raw representative
4378condition supplied by `signedQuotient`, not just balanced integer equality. -/
4379def PRCSignedOrbitSignCanonical (z : SignedOrbit) : Prop :=
4380 (0 ≤ z.toInt ∧ z = SignedOrbit.ofOrbit z.abs) ∨
4381 (z.toInt < 0 ∧ z = SignedOrbit.negate (SignedOrbit.ofOrbit z.abs))
4382
4383/-- A raw ratio display is reduced and sign-canonical when its numerator
4384absolute value is coprime to the positive denominator and the signed numerator
4385itself is in the canonical raw signed-orbit form. -/
4386def PRCRatioReducedSignCanonical (q : RatioOrbit) : Prop :=
4387 DistinctionNat.coprime q.num.abs q.den ∧
4388 PRCSignedOrbitSignCanonical q.num
4389
4390theorem signedOrbit_ofOrbit_abs_self (n : DistinctionNat) :
4391 (SignedOrbit.ofOrbit n).abs = n := by
4392 apply DistinctionNat.toNat_inj
4393 rw [SignedOrbit.abs_toNat, SignedOrbit.ofOrbit_toInt]
4394 simp
4395
4396theorem signedOrbit_neg_ofOrbit_abs_self (n : DistinctionNat) :
4397 (SignedOrbit.negate (SignedOrbit.ofOrbit n)).abs = n := by
4398 apply DistinctionNat.toNat_inj
4399 rw [SignedOrbit.abs_toNat, SignedOrbit.negate_toInt,
4400 SignedOrbit.ofOrbit_toInt]
4401 simp
4402
4403theorem signedQuotient_signCanonical_of_divides
4404 (z : SignedOrbit) (d : DistinctionNat) (hd : d ≠ DistinctionNat.zero)
4405 (hdiv : DistinctionNat.divides d z.abs) :
4406 PRCSignedOrbitSignCanonical (DistinctionNat.signedQuotient z d hd) := by
4407 unfold DistinctionNat.signedQuotient
4408 by_cases hflag : z.nonnegFlag = true
4409 · left
4410 constructor
4411 · simp [hflag, SignedOrbit.ofOrbit_toInt]
4412 · rw [if_pos hflag]
4413 rw [signedOrbit_ofOrbit_abs_self]
4414 · have hflagFalse : z.nonnegFlag = false := by
4415 cases h : z.nonnegFlag with
4416 | false => rfl
4417 | true =>
4418 exfalso
4419 exact hflag h
4420 right
4421 have hzneg : z.toInt < 0 :=
4422 (SignedOrbit.nonnegFlag_eq_false_iff z).mp hflagFalse
4423 have hzabs_ne : z.abs ≠ DistinctionNat.zero := by
4424 apply SignedOrbit.abs_ne_zero_of_toInt_ne_zero
4425 omega
4426 have hq_ne :
4427 DistinctionNat.quotient z.abs d hd ≠ DistinctionNat.zero :=
4428 DistinctionNat.quotient_ne_zero_of_divides
4429 (n := z.abs) (d := d) hd hdiv hzabs_ne
4430 have hq_pos : 0 < (DistinctionNat.quotient z.abs d hd).toNat := by
4431 have hq_nat_ne : (DistinctionNat.quotient z.abs d hd).toNat ≠ 0 := by
4432 intro hzero
4433 apply hq_ne
4434 apply DistinctionNat.toNat_inj
4435 rw [hzero, DistinctionNat.toNat_zero]
4436 omega
4437 constructor
4438 · simp [hflagFalse, SignedOrbit.negate_toInt,
4439 SignedOrbit.ofOrbit_toInt]
4440 exact hq_pos
4441 · rw [if_neg hflag]
4442 rw [signedOrbit_neg_ofOrbit_abs_self]
4443
4444theorem normalizeRatio_reduced_signCanonical (q : RatioOrbit) :
4445 PRCRatioReducedSignCanonical (DistinctionNat.normalizeRatio q) := by
4446 constructor
4447 · exact DistinctionNat.normalizeRatio_coprime q
4448 · unfold DistinctionNat.normalizeRatio
4449 exact signedQuotient_signCanonical_of_divides
4450 q.num (DistinctionNat.gcd q.num.abs q.den)
4451 (DistinctionNat.gcd_ne_zero_of_right_ne_zero
4452 q.num.abs q.den q.den_ne_zero)
4453 (DistinctionNat.gcd_divides_left q.num.abs q.den)
4454
4455theorem PRCSignedOrbitSignCanonical.eq_of_toInt_eq
4456 {z w : SignedOrbit}
4457 (hz : PRCSignedOrbitSignCanonical z)
4458 (hw : PRCSignedOrbitSignCanonical w)
4459 (hzw : z.toInt = w.toInt) :
4460 z = w := by
4461 rcases hz with ⟨hzNonneg, hzCanon⟩ | ⟨hzNeg, hzCanon⟩
4462 · rcases hw with ⟨_hwNonneg, hwCanon⟩ | ⟨hwNeg, _hwCanon⟩
4463 · calc
4464 z = SignedOrbit.ofOrbit z.abs := hzCanon
4465 _ = SignedOrbit.ofOrbit w.abs := by
4466 have habs : z.abs = w.abs := by
4467 apply DistinctionNat.toNat_inj
4468 rw [SignedOrbit.abs_toNat, SignedOrbit.abs_toNat, hzw]
4469 exact congrArg SignedOrbit.ofOrbit habs
4470 _ = w := hwCanon.symm
4471 · rw [hzw] at hzNonneg
4472 omega
4473 · rcases hw with ⟨hwNonneg, _hwCanon⟩ | ⟨_hwNeg, hwCanon⟩
4474 · rw [hzw] at hzNeg
4475 omega
4476 · calc
4477 z = SignedOrbit.negate (SignedOrbit.ofOrbit z.abs) := hzCanon
4478 _ = SignedOrbit.negate (SignedOrbit.ofOrbit w.abs) := by
4479 have habs : z.abs = w.abs := by
4480 apply DistinctionNat.toNat_inj
4481 rw [SignedOrbit.abs_toNat, SignedOrbit.abs_toNat, hzw]
4482 exact congrArg (fun n => SignedOrbit.negate (SignedOrbit.ofOrbit n)) habs
4483 _ = w := hwCanon.symm
4484
4485theorem PRCReducedSignCanonical_den_divides_of_crossEq
4486 {q r : RatioOrbit}
4487 (hq : PRCRatioReducedSignCanonical q)
4488 (_hr : PRCRatioReducedSignCanonical r)
4489 (hqr : RatioOrbit.crossEq q r) :
4490 DistinctionNat.divides q.den r.den := by
4491 have hcrossZ : q.num.toInt * (r.den.toNat : ℤ) =
4492 r.num.toInt * (q.den.toNat : ℤ) := by
4493 unfold RatioOrbit.crossEq at hqr
4494 have hdisplay :=
4495 (SignedOrbit.balanced_iff_toInt_eq
4496 (q.num.scaleByNat r.den) (r.num.scaleByNat q.den)).mp hqr
4497 rw [SignedOrbit.scaleByNat_toInt, SignedOrbit.scaleByNat_toInt] at hdisplay
4498 exact hdisplay
4499 have hcrossNat :
4500 q.num.abs.toNat * r.den.toNat =
4501 r.num.abs.toNat * q.den.toNat := by
4502 have h := congrArg Int.natAbs hcrossZ
4503 rw [Int.natAbs_mul, Int.natAbs_mul,
4504 ← SignedOrbit.abs_toNat q.num, ← SignedOrbit.abs_toNat r.num,
4505 Int.natAbs_natCast, Int.natAbs_natCast] at h
4506 exact h
4507 have hdivMul :
4508 DistinctionNat.divides q.den (q.num.abs * r.den) := by
4509 rw [DistinctionNat.divides_iff_toNat_dvd, DistinctionNat.toNat_mul]
4510 rw [hcrossNat]
4511 exact Nat.dvd_mul_left q.den.toNat r.num.abs.toNat
4512 exact DistinctionNat.coprime_divides_of_divides_mul_left hq.1 hdivMul
4513
4514theorem PRCReducedSignCanonical_den_dvd_of_crossEq
4515 {q r : RatioOrbit}
4516 (hq : PRCRatioReducedSignCanonical q)
4517 (hr : PRCRatioReducedSignCanonical r)
4518 (hqr : RatioOrbit.crossEq q r) :
4519 q.den.toNat ∣ r.den.toNat := by
4520 exact (DistinctionNat.divides_iff_toNat_dvd q.den r.den).mp
4521 (PRCReducedSignCanonical_den_divides_of_crossEq hq hr hqr)
4522
4523theorem PRCReducedSignCanonical_den_eq_of_crossEq
4524 {q r : RatioOrbit}
4525 (hq : PRCRatioReducedSignCanonical q)
4526 (hr : PRCRatioReducedSignCanonical r)
4527 (hqr : RatioOrbit.crossEq q r) :
4528 q.den = r.den := by
4529 exact DistinctionNat.divides_antisymm
4530 (PRCReducedSignCanonical_den_divides_of_crossEq hq hr hqr)
4531 (PRCReducedSignCanonical_den_divides_of_crossEq hr hq
4532 (RatioOrbit.crossEq_symm hqr))
4533
4534theorem PRCReducedSignCanonical_num_eq_of_crossEq
4535 {q r : RatioOrbit}
4536 (hq : PRCRatioReducedSignCanonical q)
4537 (hr : PRCRatioReducedSignCanonical r)
4538 (hqr : RatioOrbit.crossEq q r) :
4539 q.num = r.num := by
4540 have hden : q.den = r.den :=
4541 PRCReducedSignCanonical_den_eq_of_crossEq hq hr hqr
4542 have hcrossZ : q.num.toInt * (r.den.toNat : ℤ) =
4543 r.num.toInt * (q.den.toNat : ℤ) := by
4544 unfold RatioOrbit.crossEq at hqr
4545 have hdisplay :=
4546 (SignedOrbit.balanced_iff_toInt_eq
4547 (q.num.scaleByNat r.den) (r.num.scaleByNat q.den)).mp hqr
4548 rw [SignedOrbit.scaleByNat_toInt, SignedOrbit.scaleByNat_toInt] at hdisplay
4549 exact hdisplay
4550 have hdenInt : (q.den.toNat : ℤ) ≠ 0 := by
4551 exact_mod_cast q.den_toNat_ne_zero
4552 have hnum : q.num.toInt = r.num.toInt := by
4553 rw [← hden] at hcrossZ
4554 exact mul_right_cancel₀ hdenInt hcrossZ
4555 exact PRCSignedOrbitSignCanonical.eq_of_toInt_eq hq.2 hr.2 hnum
4556
4557/-- Reduced sign-canonical uniqueness is the exact remaining raw-display
4558number-theory blocker for canonical normalization. It says two reduced,
4559sign-canonical ratio displays with the same cross-multiplication class are
4560definitionally the same raw ratio orbit. -/
4561def PRCReducedSignCanonicalRatioUniqueTarget : Prop :=
4562 ∀ q r : RatioOrbit,
4563 PRCRatioReducedSignCanonical q →
4564 PRCRatioReducedSignCanonical r →
4565 RatioOrbit.crossEq q r →
4566 q = r
4567
4568theorem PRCReducedSignCanonicalRatioUniqueTarget_proved :
4569 PRCReducedSignCanonicalRatioUniqueTarget := by
4570 intro q r hq hr hqr
4571 cases q with
4572 | mk qnum qden qden_ne_zero =>
4573 cases r with
4574 | mk rnum rden rden_ne_zero =>
4575 have hnum :
4576 qnum = rnum :=
4577 PRCReducedSignCanonical_num_eq_of_crossEq
4578 (q := ⟨qnum, qden, qden_ne_zero⟩)
4579 (r := ⟨rnum, rden, rden_ne_zero⟩) hq hr hqr
4580 have hden :
4581 qden = rden :=
4582 PRCReducedSignCanonical_den_eq_of_crossEq
4583 (q := ⟨qnum, qden, qden_ne_zero⟩)
4584 (r := ⟨rnum, rden, rden_ne_zero⟩) hq hr hqr
4585 subst hnum
4586 subst hden
4587 rfl
4588
4589theorem PRCNormalizeRatioCanonicalTarget_of_reduced_signCanonical_unique
4590 (hunique : PRCReducedSignCanonicalRatioUniqueTarget) :
4591 PRCNormalizeRatioCanonicalTarget := by
4592 intro q r hqr
4593 apply hunique
4594 · exact normalizeRatio_reduced_signCanonical q
4595 · exact normalizeRatio_reduced_signCanonical r
4596 · exact RatioOrbit.crossEq_trans
4597 (RatioOrbit.crossEq_symm (DistinctionNat.normalizeRatio_crossEq q))
4598 (RatioOrbit.crossEq_trans hqr (DistinctionNat.normalizeRatio_crossEq r))
4599
4600theorem PRCNormalizeRatioCanonicalTarget_proved :
4601 PRCNormalizeRatioCanonicalTarget :=
4602 PRCNormalizeRatioCanonicalTarget_of_reduced_signCanonical_unique
4603 PRCReducedSignCanonicalRatioUniqueTarget_proved
4604
4605theorem PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical
4606 {χ : RatioOrbit → RatioOrbit}
4607 (hχ : PRCRatioCharacter χ)
4608 (hcanon : PRCNormalizeRatioCanonicalTarget) :
4609 PRCCharacterRespectsCrossEq χ := by
4610 intro q r hqr
4611 exact RatioOrbit.crossEq_trans
4612 (hχ.normalized_invariant q)
4613 (RatioOrbit.crossEq_trans
4614 (by
4615 rw [hcanon q r hqr]
4616 exact RatioOrbit.crossEq_refl (χ (DistinctionNat.normalizeRatio r)))
4617 (RatioOrbit.crossEq_symm (hχ.normalized_invariant r)))
4618
4619theorem PRCDoubledTraceRespectsCrossEq_of_normalizeRatio_canonical
4620 {T : RatioOrbit → RatioOrbit}
4621 (hT : PRCDoubledTraceHypotheses T)
4622 (hcanon : PRCNormalizeRatioCanonicalTarget) :
4623 PRCDoubledTraceRespectsCrossEq T := by
4624 intro q r hqr
4625 exact RatioOrbit.crossEq_trans
4626 (hT.normalized_invariant q)
4627 (RatioOrbit.crossEq_trans
4628 (by
4629 rw [hcanon q r hqr]
4630 exact RatioOrbit.crossEq_refl (T (DistinctionNat.normalizeRatio r)))
4631 (RatioOrbit.crossEq_symm (hT.normalized_invariant r)))
4632
4633theorem PRCDoubledTraceRespectsCrossEq_proved
4634 {T : RatioOrbit → RatioOrbit}
4635 (hT : PRCDoubledTraceHypotheses T) :
4636 PRCDoubledTraceRespectsCrossEq T :=
4637 PRCDoubledTraceRespectsCrossEq_of_normalizeRatio_canonical hT
4638 PRCNormalizeRatioCanonicalTarget_proved
4639
4640theorem traceRootCandidate_one_of_trace_respect
4641 {T : RatioOrbit → RatioOrbit}
4642 (hT : PRCDoubledTraceHypotheses T)
4643 (hrespect : PRCDoubledTraceRespectsCrossEq T) :
4644 RatioOrbit.crossEq (traceRootCandidate T RatioOrbit.one) RatioOrbit.one := by
4645 have htwoOne :
4646 RatioOrbit.crossEq (RatioOrbit.mul two RatioOrbit.one) two := by
4647 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat, two_toRat,
4648 RatioOrbit.one_toRat]
4649 norm_num
4650 have htwoMulVal :
4651 (T (RatioOrbit.mul two RatioOrbit.one)).toRat = (T two).toRat := by
4652 exact (RatioOrbit.crossEq_iff_toRat_eq
4653 (T (RatioOrbit.mul two RatioOrbit.one)) (T two)).mp
4654 (hrespect (RatioOrbit.mul two RatioOrbit.one) two htwoOne)
4655 have htwoVal : (T two).toRat = (5 / 2 : ℚ) := by
4656 have h := hT.two_trace
4657 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
4658 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.mul_toRat,
4659 RatioOrbit.add_toRat, two_toRat, RatioOrbit.one_toRat,
4660 onRatioOrbit_toRat, two_toRat] at h
4661 norm_num at h
4662 exact h
4663 have honeVal : (T RatioOrbit.one).toRat = 2 := by
4664 have h := hT.unit_trace
4665 rw [RatioOrbit.crossEq_iff_toRat_eq, two_toRat] at h
4666 exact h
4667 rw [RatioOrbit.crossEq_iff_toRat_eq]
4668 rw [traceRootCandidate_toRat_of_nonzero T (by
4669 rw [RatioOrbit.one_toRat]
4670 norm_num : RatioOrbit.one.toRat ≠ 0)]
4671 rw [htwoMulVal, htwoVal, honeVal, RatioOrbit.one_toRat]
4672 norm_num
4673
4674theorem traceRootCandidate_recip_toRat_of_nonzero
4675 {T : RatioOrbit → RatioOrbit}
4676 (hT : PRCDoubledTraceHypotheses T)
4677 (hrespect : PRCDoubledTraceRespectsCrossEq T)
4678 {q : RatioOrbit} (hq : q.toRat ≠ 0) :
4679 (traceRootCandidate T (RatioOrbit.recip q)).toRat =
4680 (T q).toRat - (traceRootCandidate T q).toRat := by
4681 have hrecNonzero : (RatioOrbit.recip q).toRat ≠ 0 := by
4682 rw [RatioOrbit.recip_toRat]
4683 exact inv_ne_zero hq
4684 have htwoVal : (T two).toRat = (5 / 2 : ℚ) := by
4685 have h := hT.two_trace
4686 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
4687 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.mul_toRat,
4688 RatioOrbit.add_toRat, two_toRat, RatioOrbit.one_toRat,
4689 onRatioOrbit_toRat, two_toRat] at h
4690 norm_num at h
4691 exact h
4692 have hrecTraceVal : (T (RatioOrbit.recip q)).toRat = (T q).toRat := by
4693 exact (RatioOrbit.crossEq_iff_toRat_eq
4694 (T (RatioOrbit.recip q)) (T q)).mp
4695 (RatioOrbit.crossEq_symm (hT.reciprocal q))
4696 have htwoRecEq :
4697 RatioOrbit.crossEq
4698 (RatioOrbit.mul two (RatioOrbit.recip q))
4699 (div two q) := by
4700 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat, div_toRat,
4701 RatioOrbit.recip_toRat]
4702 rfl
4703 have htwoRecVal :
4704 (T (RatioOrbit.mul two (RatioOrbit.recip q))).toRat =
4705 (T (div two q)).toRat := by
4706 exact (RatioOrbit.crossEq_iff_toRat_eq
4707 (T (RatioOrbit.mul two (RatioOrbit.recip q))) (T (div two q))).mp
4708 (hrespect (RatioOrbit.mul two (RatioOrbit.recip q)) (div two q)
4709 htwoRecEq)
4710 have hdA := hT.dAlembert (x := two) (y := q)
4711 (by
4712 rw [two_toRat]
4713 norm_num : two.toRat ≠ 0)
4714 hq
4715 have hdAVal :
4716 (T (RatioOrbit.mul two q)).toRat + (T (div two q)).toRat =
4717 (T two).toRat * (T q).toRat := by
4718 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
4719 RatioOrbit.mul_toRat] at hdA
4720 exact hdA
4721 have hsum :
4722 (T (RatioOrbit.mul two q)).toRat + (T (div two q)).toRat =
4723 (5 / 2 : ℚ) * (T q).toRat := by
4724 rw [hdAVal, htwoVal]
4725 rw [traceRootCandidate_toRat_of_nonzero T hrecNonzero,
4726 traceRootCandidate_toRat_of_nonzero T hq]
4727 rw [htwoRecVal, hrecTraceVal]
4728 linarith
4729
4730def PRCDoubledTraceLinearRootQuadraticTarget
4731 (T : RatioOrbit → RatioOrbit) : Prop :=
4732 ∀ q : RatioOrbit, q.toRat ≠ 0 →
4733 RatioOrbit.crossEq
4734 (RatioOrbit.mul
4735 (traceRootCandidate T q)
4736 (RatioOrbit.sub (T q) (traceRootCandidate T q)))
4737 RatioOrbit.one
4738
4739theorem traceRootCandidate_quadratic_of_trace_respect
4740 {T : RatioOrbit → RatioOrbit}
4741 (hT : PRCDoubledTraceHypotheses T)
4742 (hrespect : PRCDoubledTraceRespectsCrossEq T) :
4743 PRCDoubledTraceLinearRootQuadraticTarget T := by
4744 intro q hq
4745 have htwoNonzero : two.toRat ≠ 0 := by
4746 rw [two_toRat]
4747 norm_num
4748 have htwoVal : (T two).toRat = (5 / 2 : ℚ) := by
4749 have h := hT.two_trace
4750 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
4751 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.mul_toRat,
4752 RatioOrbit.add_toRat, two_toRat, RatioOrbit.one_toRat,
4753 onRatioOrbit_toRat, two_toRat] at h
4754 norm_num at h
4755 exact h
4756 have honeVal : (T RatioOrbit.one).toRat = 2 := by
4757 have h := hT.unit_trace
4758 rw [RatioOrbit.crossEq_iff_toRat_eq, two_toRat] at h
4759 exact h
4760 have htwoTwoDA := hT.dAlembert (x := two) (y := two)
4761 htwoNonzero htwoNonzero
4762 have hdivTwoTwoEq :
4763 RatioOrbit.crossEq (div two two) RatioOrbit.one := by
4764 rw [RatioOrbit.crossEq_iff_toRat_eq, div_toRat, two_toRat,
4765 RatioOrbit.one_toRat]
4766 norm_num
4767 have hdivTwoTwoVal :
4768 (T (div two two)).toRat = (T RatioOrbit.one).toRat := by
4769 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4770 (hrespect _ _ hdivTwoTwoEq)
4771 have htwoTwoVal :
4772 (T (RatioOrbit.mul two two)).toRat = (17 / 4 : ℚ) := by
4773 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
4774 RatioOrbit.mul_toRat] at htwoTwoDA
4775 rw [hdivTwoTwoVal, htwoVal, honeVal] at htwoTwoDA
4776 linarith
4777 have hqqDA := hT.dAlembert (x := q) (y := q) hq hq
4778 have hdivqqEq :
4779 RatioOrbit.crossEq (div q q) RatioOrbit.one := by
4780 rw [RatioOrbit.crossEq_iff_toRat_eq, div_toRat, RatioOrbit.one_toRat]
4781 field_simp [hq]
4782 have hdivqqVal :
4783 (T (div q q)).toRat = (T RatioOrbit.one).toRat := by
4784 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4785 (hrespect _ _ hdivqqEq)
4786 have hqqVal :
4787 (T (RatioOrbit.mul q q)).toRat = (T q).toRat ^ 2 - 2 := by
4788 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
4789 RatioOrbit.mul_toRat] at hqqDA
4790 rw [hdivqqVal, honeVal] at hqqDA
4791 nlinarith
4792 have hdivNonzero : (div two q).toRat ≠ 0 := by
4793 rw [div_toRat]
4794 exact div_ne_zero htwoNonzero hq
4795 have htwoqNonzero : (RatioOrbit.mul two q).toRat ≠ 0 := by
4796 rw [RatioOrbit.mul_toRat]
4797 exact mul_ne_zero htwoNonzero hq
4798 have hprodEq :
4799 RatioOrbit.crossEq
4800 (RatioOrbit.mul (RatioOrbit.mul two q) (div two q))
4801 (RatioOrbit.mul two two) := by
4802 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
4803 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat, div_toRat]
4804 field_simp [hq]
4805 have hquotEq :
4806 RatioOrbit.crossEq
4807 (div (RatioOrbit.mul two q) (div two q))
4808 (RatioOrbit.mul q q) := by
4809 rw [RatioOrbit.crossEq_iff_toRat_eq, div_toRat, RatioOrbit.mul_toRat,
4810 RatioOrbit.mul_toRat, div_toRat]
4811 field_simp [hq]
4812 have hprodVal :
4813 (T (RatioOrbit.mul (RatioOrbit.mul two q) (div two q))).toRat =
4814 (T (RatioOrbit.mul two two)).toRat := by
4815 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4816 (hrespect _ _ hprodEq)
4817 have hquotVal :
4818 (T (div (RatioOrbit.mul two q) (div two q))).toRat =
4819 (T (RatioOrbit.mul q q)).toRat := by
4820 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4821 (hrespect _ _ hquotEq)
4822 have hBDDA := hT.dAlembert
4823 (x := RatioOrbit.mul two q) (y := div two q)
4824 htwoqNonzero hdivNonzero
4825 have hBDVal :
4826 (T (RatioOrbit.mul two q)).toRat * (T (div two q)).toRat =
4827 (T q).toRat ^ 2 + (9 / 4 : ℚ) := by
4828 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
4829 RatioOrbit.mul_toRat] at hBDDA
4830 rw [hprodVal, hquotVal, htwoTwoVal, hqqVal] at hBDDA
4831 nlinarith
4832 have hsumDA := hT.dAlembert (x := two) (y := q) htwoNonzero hq
4833 have hsumVal :
4834 (T (RatioOrbit.mul two q)).toRat + (T (div two q)).toRat =
4835 (5 / 2 : ℚ) * (T q).toRat := by
4836 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
4837 RatioOrbit.mul_toRat] at hsumDA
4838 rw [htwoVal] at hsumDA
4839 exact hsumDA
4840 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
4841 RatioOrbit.sub_toRat, RatioOrbit.one_toRat]
4842 rw [traceRootCandidate_toRat_of_nonzero T hq]
4843 have hgoal :
4844 ((2 * (T (RatioOrbit.mul two q)).toRat - (T q).toRat) / 3) *
4845 ((T q).toRat -
4846 ((2 * (T (RatioOrbit.mul two q)).toRat - (T q).toRat) / 3)) =
4847 1 := by
4848 have hDexpr :
4849 (T (div two q)).toRat =
4850 (5 / 2 : ℚ) * (T q).toRat -
4851 (T (RatioOrbit.mul two q)).toRat := by
4852 linarith
4853 have hBrel :
4854 (T (RatioOrbit.mul two q)).toRat *
4855 ((5 / 2 : ℚ) * (T q).toRat -
4856 (T (RatioOrbit.mul two q)).toRat) =
4857 (T q).toRat ^ 2 + (9 / 4 : ℚ) := by
4858 rw [← hDexpr]
4859 exact hBDVal
4860 nlinarith
4861 exact hgoal
4862
4863theorem traceRootCandidate_reciprocal_of_quadratic
4864 {T : RatioOrbit → RatioOrbit}
4865 (hT : PRCDoubledTraceHypotheses T)
4866 (hrespect : PRCDoubledTraceRespectsCrossEq T)
4867 (hquadratic : PRCDoubledTraceLinearRootQuadraticTarget T) :
4868 ∀ q : RatioOrbit,
4869 RatioOrbit.crossEq
4870 (traceRootCandidate T (RatioOrbit.recip q))
4871 (RatioOrbit.recip (traceRootCandidate T q)) := by
4872 intro q
4873 by_cases hq : q.toRat = 0
4874 · rw [RatioOrbit.crossEq_iff_toRat_eq]
4875 have hrecZero : (RatioOrbit.recip q).toRat = 0 := by
4876 rw [RatioOrbit.recip_toRat, hq]
4877 norm_num
4878 rw [traceRootCandidate, if_pos hrecZero]
4879 rw [traceRootCandidate, if_pos hq]
4880 rw [RatioOrbit.recip_toRat, RatioOrbit.zero_toRat]
4881 norm_num
4882 · have hrecSum := traceRootCandidate_recip_toRat_of_nonzero
4883 hT hrespect hq
4884 have hquad := hquadratic q hq
4885 rw [RatioOrbit.crossEq_iff_toRat_eq] at hquad ⊢
4886 rw [RatioOrbit.mul_toRat, RatioOrbit.sub_toRat,
4887 RatioOrbit.one_toRat] at hquad
4888 rw [RatioOrbit.recip_toRat]
4889 rw [hrecSum]
4890 have hx :
4891 (traceRootCandidate T q).toRat ≠ 0 := by
4892 intro hzero
4893 rw [hzero] at hquad
4894 norm_num at hquad
4895 field_simp [hx]
4896 exact hquad
4897
4898theorem traceRootCandidate_nonzero_of_quadratic
4899 {T : RatioOrbit → RatioOrbit}
4900 (hquadratic : PRCDoubledTraceLinearRootQuadraticTarget T) :
4901 ∀ {q : RatioOrbit}, q.toRat ≠ 0 → (traceRootCandidate T q).toRat ≠ 0 := by
4902 intro q hq hzero
4903 have hquad := hquadratic q hq
4904 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
4905 RatioOrbit.sub_toRat, RatioOrbit.one_toRat] at hquad
4906 rw [hzero] at hquad
4907 norm_num at hquad
4908
4909theorem traceRootCandidate_trace_of_quadratic
4910 {T : RatioOrbit → RatioOrbit}
4911 (hT : PRCDoubledTraceHypotheses T)
4912 (hrespect : PRCDoubledTraceRespectsCrossEq T)
4913 (hzero : PRCDoubledTraceZeroCalibrated T)
4914 (hquadratic : PRCDoubledTraceLinearRootQuadraticTarget T) :
4915 ∀ q : RatioOrbit,
4916 RatioOrbit.crossEq
4917 (RatioOrbit.add
4918 (traceRootCandidate T q)
4919 (RatioOrbit.recip (traceRootCandidate T q)))
4920 (T q) := by
4921 intro q
4922 by_cases hq : q.toRat = 0
4923 · rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
4924 traceRootCandidate, if_pos hq, RatioOrbit.recip_toRat,
4925 RatioOrbit.zero_toRat]
4926 have hzeroVal : (T RatioOrbit.zero).toRat = 0 := by
4927 rw [PRCDoubledTraceZeroCalibrated, RatioOrbit.crossEq_iff_toRat_eq,
4928 RatioOrbit.zero_toRat] at hzero
4929 exact hzero
4930 have hqZero :
4931 RatioOrbit.crossEq q RatioOrbit.zero := by
4932 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.zero_toRat]
4933 exact hq
4934 have hTqZero :
4935 (T q).toRat = (T RatioOrbit.zero).toRat := by
4936 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4937 (hrespect q RatioOrbit.zero hqZero)
4938 rw [hTqZero, hzeroVal]
4939 norm_num
4940 · have hrecSum := traceRootCandidate_recip_toRat_of_nonzero
4941 hT hrespect hq
4942 have hrecCross := traceRootCandidate_reciprocal_of_quadratic
4943 hT hrespect hquadratic q
4944 have hrecVal :
4945 (RatioOrbit.recip (traceRootCandidate T q)).toRat =
4946 (traceRootCandidate T (RatioOrbit.recip q)).toRat := by
4947 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4948 (RatioOrbit.crossEq_symm hrecCross)
4949 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat]
4950 rw [hrecVal, hrecSum]
4951 ring
4952
4953theorem traceRootCandidate_normalized_of_trace_respect
4954 {T : RatioOrbit → RatioOrbit}
4955 (hrespect : PRCDoubledTraceRespectsCrossEq T) :
4956 ∀ q : RatioOrbit,
4957 RatioOrbit.crossEq (traceRootCandidate T q)
4958 (traceRootCandidate T (DistinctionNat.normalizeRatio q)) := by
4959 intro q
4960 by_cases hq : q.toRat = 0
4961 · have hnormZero : (DistinctionNat.normalizeRatio q).toRat = 0 := by
4962 rw [DistinctionNat.normalizeRatio_toRat, hq]
4963 rw [RatioOrbit.crossEq_iff_toRat_eq]
4964 rw [traceRootCandidate, if_pos hq]
4965 rw [traceRootCandidate, if_pos hnormZero]
4966 · have hnormNonzero : (DistinctionNat.normalizeRatio q).toRat ≠ 0 := by
4967 rw [DistinctionNat.normalizeRatio_toRat]
4968 exact hq
4969 have hTqVal :
4970 (T q).toRat = (T (DistinctionNat.normalizeRatio q)).toRat := by
4971 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4972 (hrespect q (DistinctionNat.normalizeRatio q)
4973 (DistinctionNat.normalizeRatio_crossEq q))
4974 have htwoEq :
4975 RatioOrbit.crossEq
4976 (RatioOrbit.mul two q)
4977 (RatioOrbit.mul two (DistinctionNat.normalizeRatio q)) := by
4978 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
4979 RatioOrbit.mul_toRat, DistinctionNat.normalizeRatio_toRat]
4980 have htwoVal :
4981 (T (RatioOrbit.mul two q)).toRat =
4982 (T (RatioOrbit.mul two (DistinctionNat.normalizeRatio q))).toRat := by
4983 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
4984 (hrespect _ _ htwoEq)
4985 rw [RatioOrbit.crossEq_iff_toRat_eq]
4986 rw [traceRootCandidate_toRat_of_nonzero T hq,
4987 traceRootCandidate_toRat_of_nonzero T hnormNonzero]
4988 rw [htwoVal, hTqVal]
4989
4990theorem traceRootCandidate_multiplicative_of_trace_respect
4991 {T : RatioOrbit → RatioOrbit}
4992 (hT : PRCDoubledTraceHypotheses T)
4993 (hrespect : PRCDoubledTraceRespectsCrossEq T) :
4994 ∀ x y : RatioOrbit,
4995 RatioOrbit.crossEq (traceRootCandidate T (RatioOrbit.mul x y))
4996 (RatioOrbit.mul (traceRootCandidate T x) (traceRootCandidate T y)) := by
4997 intro x y
4998 by_cases hx : x.toRat = 0
4999 · have hxyZero : (RatioOrbit.mul x y).toRat = 0 := by
5000 rw [RatioOrbit.mul_toRat, hx]
5001 ring
5002 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat]
5003 simp [traceRootCandidate, hxyZero, hx, RatioOrbit.zero_toRat]
5004 · by_cases hy : y.toRat = 0
5005 · have hxyZero : (RatioOrbit.mul x y).toRat = 0 := by
5006 rw [RatioOrbit.mul_toRat, hy]
5007 ring
5008 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat]
5009 simp [traceRootCandidate, hxyZero, hx, hy, RatioOrbit.zero_toRat]
5010 · have htwoNonzero : two.toRat ≠ 0 := by
5011 rw [two_toRat]
5012 norm_num
5013 have hxyNonzero : (RatioOrbit.mul x y).toRat ≠ 0 := by
5014 rw [RatioOrbit.mul_toRat]
5015 exact mul_ne_zero hx hy
5016 have htwoXNonzero : (RatioOrbit.mul two x).toRat ≠ 0 := by
5017 rw [RatioOrbit.mul_toRat]
5018 exact mul_ne_zero htwoNonzero hx
5019 have htwoYNonzero : (RatioOrbit.mul two y).toRat ≠ 0 := by
5020 rw [RatioOrbit.mul_toRat]
5021 exact mul_ne_zero htwoNonzero hy
5022 have htwoXYNonzero :
5023 (RatioOrbit.mul two (RatioOrbit.mul x y)).toRat ≠ 0 := by
5024 rw [RatioOrbit.mul_toRat]
5025 exact mul_ne_zero htwoNonzero hxyNonzero
5026 have hdivXYNonzero : (div x y).toRat ≠ 0 := by
5027 rw [div_toRat]
5028 exact div_ne_zero hx hy
5029 have htwoVal : (T two).toRat = (5 / 2 : ℚ) := by
5030 have h := hT.two_trace
5031 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
5032 rw [nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.mul_toRat,
5033 RatioOrbit.add_toRat, two_toRat, RatioOrbit.one_toRat,
5034 onRatioOrbit_toRat, two_toRat] at h
5035 norm_num at h
5036 exact h
5037 have hACDA := hT.dAlembert (x := x) (y := y) hx hy
5038 have hACVal :
5039 (T x).toRat * (T y).toRat =
5040 (T (RatioOrbit.mul x y)).toRat + (T (div x y)).toRat := by
5041 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5042 RatioOrbit.mul_toRat] at hACDA
5043 exact hACDA.symm
5044 have hBDDA := hT.dAlembert
5045 (x := RatioOrbit.mul two x) (y := RatioOrbit.mul two y)
5046 htwoXNonzero htwoYNonzero
5047 have hBDProdEq :
5048 RatioOrbit.crossEq
5049 (RatioOrbit.mul (RatioOrbit.mul two x) (RatioOrbit.mul two y))
5050 (RatioOrbit.mul two (RatioOrbit.mul two (RatioOrbit.mul x y))) := by
5051 rw [RatioOrbit.crossEq_iff_toRat_eq]
5052 simp [RatioOrbit.mul_toRat]
5053 ring
5054 have hBDQuotEq :
5055 RatioOrbit.crossEq
5056 (div (RatioOrbit.mul two x) (RatioOrbit.mul two y))
5057 (div x y) := by
5058 rw [RatioOrbit.crossEq_iff_toRat_eq, div_toRat, div_toRat,
5059 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat]
5060 field_simp [hy]
5061 have hBDProdVal :
5062 (T (RatioOrbit.mul (RatioOrbit.mul two x) (RatioOrbit.mul two y))).toRat =
5063 (T (RatioOrbit.mul two (RatioOrbit.mul two (RatioOrbit.mul x y)))).toRat := by
5064 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5065 (hrespect _ _ hBDProdEq)
5066 have hBDQuotVal :
5067 (T (div (RatioOrbit.mul two x) (RatioOrbit.mul two y))).toRat =
5068 (T (div x y)).toRat := by
5069 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5070 (hrespect _ _ hBDQuotEq)
5071 have hBDVal :
5072 (T (RatioOrbit.mul two x)).toRat *
5073 (T (RatioOrbit.mul two y)).toRat =
5074 (T (RatioOrbit.mul two (RatioOrbit.mul two (RatioOrbit.mul x y)))).toRat +
5075 (T (div x y)).toRat := by
5076 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5077 RatioOrbit.mul_toRat] at hBDDA
5078 rw [hBDProdVal, hBDQuotVal] at hBDDA
5079 exact hBDDA.symm
5080 have hBCDA := hT.dAlembert
5081 (x := RatioOrbit.mul two x) (y := y) htwoXNonzero hy
5082 have hBCProdEq :
5083 RatioOrbit.crossEq
5084 (RatioOrbit.mul (RatioOrbit.mul two x) y)
5085 (RatioOrbit.mul two (RatioOrbit.mul x y)) := by
5086 rw [RatioOrbit.crossEq_iff_toRat_eq]
5087 simp [RatioOrbit.mul_toRat]
5088 ring
5089 have hBCProdVal :
5090 (T (RatioOrbit.mul (RatioOrbit.mul two x) y)).toRat =
5091 (T (RatioOrbit.mul two (RatioOrbit.mul x y))).toRat := by
5092 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5093 (hrespect _ _ hBCProdEq)
5094 have hBCVal :
5095 (T (RatioOrbit.mul two x)).toRat * (T y).toRat =
5096 (T (RatioOrbit.mul two (RatioOrbit.mul x y))).toRat +
5097 (T (div (RatioOrbit.mul two x) y)).toRat := by
5098 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5099 RatioOrbit.mul_toRat] at hBCDA
5100 rw [hBCProdVal] at hBCDA
5101 exact hBCDA.symm
5102 have hADDA := hT.dAlembert
5103 (x := x) (y := RatioOrbit.mul two y) hx htwoYNonzero
5104 have hADProdEq :
5105 RatioOrbit.crossEq
5106 (RatioOrbit.mul x (RatioOrbit.mul two y))
5107 (RatioOrbit.mul two (RatioOrbit.mul x y)) := by
5108 rw [RatioOrbit.crossEq_iff_toRat_eq]
5109 simp [RatioOrbit.mul_toRat]
5110 ring
5111 have hADProdVal :
5112 (T (RatioOrbit.mul x (RatioOrbit.mul two y))).toRat =
5113 (T (RatioOrbit.mul two (RatioOrbit.mul x y))).toRat := by
5114 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5115 (hrespect _ _ hADProdEq)
5116 have hADVal :
5117 (T x).toRat * (T (RatioOrbit.mul two y)).toRat =
5118 (T (RatioOrbit.mul two (RatioOrbit.mul x y))).toRat +
5119 (T (div x (RatioOrbit.mul two y))).toRat := by
5120 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5121 RatioOrbit.mul_toRat] at hADDA
5122 rw [hADProdVal] at hADDA
5123 exact hADDA.symm
5124 have hVWSumDA := hT.dAlembert (x := two) (y := div x y)
5125 htwoNonzero hdivXYNonzero
5126 have hVEq :
5127 RatioOrbit.crossEq
5128 (RatioOrbit.mul two (div x y))
5129 (div (RatioOrbit.mul two x) y) := by
5130 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
5131 div_toRat, div_toRat, RatioOrbit.mul_toRat]
5132 field_simp [hy]
5133 have hWEqRec :
5134 RatioOrbit.crossEq
5135 (div two (div x y))
5136 (RatioOrbit.recip (div x (RatioOrbit.mul two y))) := by
5137 rw [RatioOrbit.crossEq_iff_toRat_eq, div_toRat, div_toRat,
5138 RatioOrbit.recip_toRat, div_toRat, RatioOrbit.mul_toRat]
5139 field_simp [hx, hy]
5140 have hVVal :
5141 (T (RatioOrbit.mul two (div x y))).toRat =
5142 (T (div (RatioOrbit.mul two x) y)).toRat := by
5143 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5144 (hrespect _ _ hVEq)
5145 have hWRecVal :
5146 (T (div two (div x y))).toRat =
5147 (T (RatioOrbit.recip (div x (RatioOrbit.mul two y)))).toRat := by
5148 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5149 (hrespect _ _ hWEqRec)
5150 have hWVal :
5151 (T (RatioOrbit.recip (div x (RatioOrbit.mul two y)))).toRat =
5152 (T (div x (RatioOrbit.mul two y))).toRat := by
5153 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5154 (RatioOrbit.crossEq_symm
5155 (hT.reciprocal (div x (RatioOrbit.mul two y))))
5156 have hVWSumVal :
5157 (T (div (RatioOrbit.mul two x) y)).toRat +
5158 (T (div x (RatioOrbit.mul two y))).toRat =
5159 (5 / 2 : ℚ) * (T (div x y)).toRat := by
5160 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5161 RatioOrbit.mul_toRat] at hVWSumDA
5162 rw [hVVal, hWRecVal, hWVal, htwoVal] at hVWSumDA
5163 exact hVWSumDA
5164 have hGDA := hT.dAlembert
5165 (x := two) (y := RatioOrbit.mul two (RatioOrbit.mul x y))
5166 htwoNonzero htwoXYNonzero
5167 have hGQuotEq :
5168 RatioOrbit.crossEq
5169 (div two (RatioOrbit.mul two (RatioOrbit.mul x y)))
5170 (RatioOrbit.recip (RatioOrbit.mul x y)) := by
5171 rw [RatioOrbit.crossEq_iff_toRat_eq, div_toRat,
5172 RatioOrbit.recip_toRat, RatioOrbit.mul_toRat,
5173 RatioOrbit.mul_toRat]
5174 field_simp [hx, hy]
5175 have hGQuotVal :
5176 (T (div two (RatioOrbit.mul two (RatioOrbit.mul x y)))).toRat =
5177 (T (RatioOrbit.recip (RatioOrbit.mul x y))).toRat := by
5178 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5179 (hrespect _ _ hGQuotEq)
5180 have hGRecVal :
5181 (T (RatioOrbit.recip (RatioOrbit.mul x y))).toRat =
5182 (T (RatioOrbit.mul x y)).toRat := by
5183 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5184 (RatioOrbit.crossEq_symm
5185 (hT.reciprocal (RatioOrbit.mul x y)))
5186 have hGVal :
5187 (T (RatioOrbit.mul two (RatioOrbit.mul two (RatioOrbit.mul x y)))).toRat +
5188 (T (RatioOrbit.mul x y)).toRat =
5189 (5 / 2 : ℚ) *
5190 (T (RatioOrbit.mul two (RatioOrbit.mul x y))).toRat := by
5191 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5192 RatioOrbit.mul_toRat] at hGDA
5193 rw [hGQuotVal, hGRecVal, htwoVal] at hGDA
5194 exact hGDA
5195 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat]
5196 rw [traceRootCandidate_toRat_of_nonzero T hxyNonzero,
5197 traceRootCandidate_toRat_of_nonzero T hx,
5198 traceRootCandidate_toRat_of_nonzero T hy]
5199 nlinarith
5200
5201theorem PRCDoubledTraceZeroCalibratedLinearRootTarget_proved :
5202 PRCDoubledTraceZeroCalibratedLinearRootTarget := by
5203 intro T hT hzero
5204 have hrespect : PRCDoubledTraceRespectsCrossEq T :=
5205 PRCDoubledTraceRespectsCrossEq_proved hT
5206 have hquadratic : PRCDoubledTraceLinearRootQuadraticTarget T :=
5207 traceRootCandidate_quadratic_of_trace_respect hT hrespect
5208 constructor
5209 · exact
5210 { unit := traceRootCandidate_one_of_trace_respect hT hrespect,
5211 multiplicative :=
5212 traceRootCandidate_multiplicative_of_trace_respect hT hrespect,
5213 reciprocal :=
5214 traceRootCandidate_reciprocal_of_quadratic hT hrespect hquadratic,
5215 normalized_invariant :=
5216 traceRootCandidate_normalized_of_trace_respect hrespect,
5217 nonzero_preserving :=
5218 traceRootCandidate_nonzero_of_quadratic hquadratic }
5219 · exact traceRootCandidate_trace_of_quadratic hT hrespect hzero hquadratic
5220
5221theorem PRCDoubledTraceZeroCalibratedCoherentRootTarget_proved :
5222 PRCDoubledTraceZeroCalibratedCoherentRootTarget :=
5223 PRCDoubledTraceZeroCalibratedCoherentRootTarget_of_linear_root
5224 PRCDoubledTraceZeroCalibratedLinearRootTarget_proved
5225
5226/-- Exact upstream zero-orbit blocker left after the coherent-root theorem:
5227native cost hypotheses must force the generated doubled trace to have zero
5228trace at the zero orbit. -/
5229def PRCNativeCostDoubledTraceZeroCalibratedTarget : Prop :=
5230 ∀ F : RatioOrbit → RatioOrbit,
5231 PRCNativeCostHypotheses F →
5232 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F)
5233
5234theorem PRCNativeCostCharacterTraceLiftTarget_of_doubled_trace_zero_calibrated
5235 (hzero : PRCNativeCostDoubledTraceZeroCalibratedTarget) :
5236 PRCNativeCostCharacterTraceLiftTarget := by
5237 intro F hF
5238 have hT : PRCDoubledTraceHypotheses (nativeCostDoubledTrace F) :=
5239 nativeCostDoubledTrace_hypotheses_of_native_cost_hypotheses hF
5240 have hz : PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F) :=
5241 hzero F hF
5242 rcases PRCDoubledTraceZeroCalibratedCoherentRootTarget_proved
5243 (nativeCostDoubledTrace F) hT hz with
5244 ⟨χ, hχ, htrace⟩
5245 exact ⟨χ, hχ, htrace⟩
5246
5247theorem PRCNativeCostCharacterFactorizationTarget_of_doubled_trace_zero_calibrated
5248 (hzero : PRCNativeCostDoubledTraceZeroCalibratedTarget) :
5249 PRCNativeCostCharacterFactorizationTarget :=
5250 PRCNativeCostCharacterFactorizationTarget_of_trace_lift
5251 (PRCNativeCostCharacterTraceLiftTarget_of_doubled_trace_zero_calibrated
5252 hzero)
5253
5254/-- Native zero-spike cost: canonical on every nonzero ratio orbit, but flattened
5255to `0` at the zero orbit. This satisfies the native cost interface because the
5256RCL only quantifies over nonzero inputs. -/
5257noncomputable def zeroFlatNativeCost (q : RatioOrbit) : RatioOrbit :=
5258 by
5259 classical
5260 exact if q.toRat = 0 then RatioOrbit.zero
5261 else if q = RatioOrbit.one then RatioOrbit.zero
5262 else onRatioOrbit q
5263
5264theorem zeroFlatNativeCost_zero :
5265 zeroFlatNativeCost RatioOrbit.zero = RatioOrbit.zero := by
5266 classical
5267 rw [zeroFlatNativeCost, if_pos RatioOrbit.zero_toRat]
5268
5269theorem zeroFlatNativeCost_one :
5270 zeroFlatNativeCost RatioOrbit.one = RatioOrbit.zero := by
5271 classical
5272 rw [zeroFlatNativeCost, if_neg (by
5273 rw [RatioOrbit.one_toRat]
5274 norm_num : RatioOrbit.one.toRat ≠ 0)]
5275 rw [if_pos rfl]
5276
5277theorem zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero
5278 {q : RatioOrbit} (hq : q.toRat ≠ 0) :
5279 RatioOrbit.crossEq (zeroFlatNativeCost q) (onRatioOrbit q) := by
5280 classical
5281 by_cases hone : q = RatioOrbit.one
5282 · subst q
5283 rw [zeroFlatNativeCost_one]
5284 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.zero_toRat,
5285 onRatioOrbit_toRat, RatioOrbit.one_toRat]
5286 norm_num
5287 · rw [zeroFlatNativeCost, if_neg hq, if_neg hone]
5288 exact RatioOrbit.crossEq_refl _
5289
5290theorem zeroFlatNativeCost_hypotheses :
5291 PRCNativeCostHypotheses zeroFlatNativeCost where
5292 reciprocal := by
5293 intro q
5294 by_cases hq : q.toRat = 0
5295 · have hrec : (RatioOrbit.recip q).toRat = 0 := by
5296 rw [RatioOrbit.recip_toRat, hq]
5297 norm_num
5298 rw [RatioOrbit.crossEq_iff_toRat_eq]
5299 rw [zeroFlatNativeCost, if_pos hq]
5300 rw [zeroFlatNativeCost, if_pos hrec]
5301 · have hrec : (RatioOrbit.recip q).toRat ≠ 0 := by
5302 rw [RatioOrbit.recip_toRat]
5303 exact inv_ne_zero hq
5304 exact RatioOrbit.crossEq_trans
5305 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hq)
5306 (RatioOrbit.crossEq_trans
5307 (reciprocal_symmetric q)
5308 (RatioOrbit.crossEq_symm
5309 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hrec)))
5310 normalized_invariant := by
5311 intro q
5312 by_cases hq : q.toRat = 0
5313 · have hnorm : (DistinctionNat.normalizeRatio q).toRat = 0 := by
5314 rw [DistinctionNat.normalizeRatio_toRat, hq]
5315 rw [RatioOrbit.crossEq_iff_toRat_eq]
5316 rw [zeroFlatNativeCost, if_pos hq]
5317 rw [zeroFlatNativeCost, if_pos hnorm]
5318 · have hnorm : (DistinctionNat.normalizeRatio q).toRat ≠ 0 := by
5319 rw [DistinctionNat.normalizeRatio_toRat]
5320 exact hq
5321 exact RatioOrbit.crossEq_trans
5322 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hq)
5323 (RatioOrbit.crossEq_trans
5324 (normalized_invariant q)
5325 (RatioOrbit.crossEq_symm
5326 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hnorm)))
5327 canonical_rcl := by
5328 intro x y hx hy
5329 have hxy : (RatioOrbit.mul x y).toRat ≠ 0 := by
5330 rw [RatioOrbit.mul_toRat]
5331 exact mul_ne_zero hx hy
5332 have hdiv : (div x y).toRat ≠ 0 := by
5333 rw [div_toRat]
5334 exact div_ne_zero hx hy
5335 have hleft :
5336 RatioOrbit.crossEq
5337 (RatioOrbit.add
5338 (zeroFlatNativeCost (RatioOrbit.mul x y))
5339 (zeroFlatNativeCost (div x y)))
5340 (RatioOrbit.add
5341 (onRatioOrbit (RatioOrbit.mul x y))
5342 (onRatioOrbit (div x y))) := by
5343 exact ratioOrbit_add_congr
5344 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hxy)
5345 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hdiv)
5346 have hxF := zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hx
5347 have hyF := zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero hy
5348 have hmulInner :
5349 RatioOrbit.crossEq
5350 (RatioOrbit.mul (onRatioOrbit x) (onRatioOrbit y))
5351 (RatioOrbit.mul (zeroFlatNativeCost x) (zeroFlatNativeCost y)) :=
5352 ratioOrbit_mul_congr
5353 (RatioOrbit.crossEq_symm hxF)
5354 (RatioOrbit.crossEq_symm hyF)
5355 have hterm₁ :
5356 RatioOrbit.crossEq
5357 (RatioOrbit.mul two
5358 (RatioOrbit.mul (onRatioOrbit x) (onRatioOrbit y)))
5359 (RatioOrbit.mul two
5360 (RatioOrbit.mul (zeroFlatNativeCost x)
5361 (zeroFlatNativeCost y))) :=
5362 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two) hmulInner
5363 have hterm₂ :
5364 RatioOrbit.crossEq
5365 (RatioOrbit.mul two (onRatioOrbit x))
5366 (RatioOrbit.mul two (zeroFlatNativeCost x)) :=
5367 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two)
5368 (RatioOrbit.crossEq_symm hxF)
5369 have hterm₃ :
5370 RatioOrbit.crossEq
5371 (RatioOrbit.mul two (onRatioOrbit y))
5372 (RatioOrbit.mul two (zeroFlatNativeCost y)) :=
5373 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two)
5374 (RatioOrbit.crossEq_symm hyF)
5375 have hright :
5376 RatioOrbit.crossEq
5377 (RatioOrbit.add
5378 (RatioOrbit.add
5379 (RatioOrbit.mul two
5380 (RatioOrbit.mul (onRatioOrbit x) (onRatioOrbit y)))
5381 (RatioOrbit.mul two (onRatioOrbit x)))
5382 (RatioOrbit.mul two (onRatioOrbit y)))
5383 (RatioOrbit.add
5384 (RatioOrbit.add
5385 (RatioOrbit.mul two
5386 (RatioOrbit.mul (zeroFlatNativeCost x)
5387 (zeroFlatNativeCost y)))
5388 (RatioOrbit.mul two (zeroFlatNativeCost x)))
5389 (RatioOrbit.mul two (zeroFlatNativeCost y))) :=
5390 ratioOrbit_add_congr (ratioOrbit_add_congr hterm₁ hterm₂) hterm₃
5391 exact RatioOrbit.crossEq_trans hleft
5392 (RatioOrbit.crossEq_trans (canonical_rcl_surface hx hy) hright)
5393 unit_zero := zeroFlatNativeCost_one
5394 two_calibrated := by
5395 exact RatioOrbit.crossEq_trans
5396 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero (by
5397 rw [two_toRat]
5398 norm_num : two.toRat ≠ 0))
5399 (RatioOrbit.crossEq_refl _)
5400
5401theorem zeroFlatNativeCost_doubled_trace_zero :
5402 nativeCostDoubledTrace zeroFlatNativeCost RatioOrbit.zero =
5403 doubledTraceValue RatioOrbit.zero := by
5404 rw [nativeCostDoubledTrace, zeroFlatNativeCost_zero]
5405
5406theorem zeroFlatNativeCost_not_doubled_trace_zero_calibrated :
5407 ¬ PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace zeroFlatNativeCost) := by
5408 intro h
5409 rw [PRCDoubledTraceZeroCalibrated, RatioOrbit.crossEq_iff_toRat_eq,
5410 zeroFlatNativeCost_doubled_trace_zero, doubledTraceValue,
5411 RatioOrbit.mul_toRat, RatioOrbit.add_toRat, two_toRat,
5412 RatioOrbit.zero_toRat, RatioOrbit.one_toRat] at h
5413 norm_num at h
5414
5415theorem PRCNativeCostDoubledTraceZeroCalibratedTarget_refuted :
5416 ¬ PRCNativeCostDoubledTraceZeroCalibratedTarget := by
5417 intro hzero
5418 exact zeroFlatNativeCost_not_doubled_trace_zero_calibrated
5419 (hzero zeroFlatNativeCost zeroFlatNativeCost_hypotheses)
5420
5421theorem zeroFlatNativeCost_no_character_trace :
5422 ¬ ∃ χ : RatioOrbit → RatioOrbit,
5423 PRCRatioCharacter χ ∧
5424 PRCCharacterTraceMatchesCost zeroFlatNativeCost χ := by
5425 intro h
5426 rcases h with ⟨χ, hχ, htrace⟩
5427 let a : ℚ := (χ RatioOrbit.zero).toRat
5428 let b : ℚ := (χ two).toRat
5429 have hrec := hχ.reciprocal RatioOrbit.zero
5430 have hrecRat : a = a⁻¹ := by
5431 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_zero_eq,
5432 RatioOrbit.recip_toRat] at hrec
5433 exact hrec
5434 have htraceZero := htrace RatioOrbit.zero
5435 have htraceZeroRat : a + a⁻¹ = 2 := by
5436 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5437 RatioOrbit.recip_toRat, nativeCostDoubledTrace,
5438 zeroFlatNativeCost_zero, doubledTraceValue, RatioOrbit.mul_toRat,
5439 RatioOrbit.add_toRat, two_toRat, RatioOrbit.zero_toRat,
5440 RatioOrbit.one_toRat] at htraceZero
5441 norm_num at htraceZero
5442 exact htraceZero
5443 have ha : a = 1 := by
5444 linarith
5445 have hzeroMul :
5446 RatioOrbit.crossEq (RatioOrbit.mul RatioOrbit.zero two) RatioOrbit.zero := by
5447 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
5448 RatioOrbit.zero_toRat]
5449 ring
5450 have hrespect : PRCCharacterRespectsCrossEq χ :=
5451 PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical hχ
5452 PRCNormalizeRatioCanonicalTarget_proved
5453 have hleft :
5454 (χ (RatioOrbit.mul RatioOrbit.zero two)).toRat = a := by
5455 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5456 (hrespect (RatioOrbit.mul RatioOrbit.zero two) RatioOrbit.zero hzeroMul)
5457 have hmul := hχ.multiplicative RatioOrbit.zero two
5458 have hmulRat :
5459 (χ (RatioOrbit.mul RatioOrbit.zero two)).toRat = a * b := by
5460 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat] at hmul
5461 exact hmul
5462 have hb : b = 1 := by
5463 rw [hleft] at hmulRat
5464 nlinarith
5465 have htraceTwo := htrace two
5466 have hFtwo :
5467 (zeroFlatNativeCost two).toRat = (onRatioOrbit two).toRat := by
5468 exact (RatioOrbit.crossEq_iff_toRat_eq _ _).mp
5469 (zeroFlatNativeCost_crossEq_onRatioOrbit_of_nonzero (by
5470 rw [two_toRat]
5471 norm_num : two.toRat ≠ 0))
5472 have htraceTwoRat : b + b⁻¹ = (5 / 2 : ℚ) := by
5473 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.add_toRat,
5474 RatioOrbit.recip_toRat, nativeCostDoubledTrace, doubledTraceValue,
5475 RatioOrbit.mul_toRat, RatioOrbit.add_toRat, two_toRat,
5476 RatioOrbit.one_toRat] at htraceTwo
5477 rw [hFtwo, onRatioOrbit_toRat, two_toRat] at htraceTwo
5478 norm_num at htraceTwo
5479 exact htraceTwo
5480 rw [hb] at htraceTwoRat
5481 norm_num at htraceTwoRat
5482
5483theorem PRCNativeCostCharacterTraceLiftTarget_refuted :
5484 ¬ PRCNativeCostCharacterTraceLiftTarget := by
5485 intro htrace
5486 exact zeroFlatNativeCost_no_character_trace
5487 (htrace zeroFlatNativeCost zeroFlatNativeCost_hypotheses)
5488
5489theorem PRCNativeCostCharacterFactorizationTarget_refuted :
5490 ¬ PRCNativeCostCharacterFactorizationTarget := by
5491 intro hfactor
5492 exact PRCNativeCostCharacterTraceLiftTarget_refuted
5493 (PRCNativeCostCharacterTraceLiftTarget_of_factorization hfactor)
5494
5495/-- Repaired native cost interface for character lifting: the native hypotheses
5496plus explicit zero calibration of the generated doubled trace. Pass 294 proves
5497the unqualified target is false, so this is the exact replacement surface. -/
5498def PRCZeroCalibratedNativeCostCharacterTraceLiftTarget : Prop :=
5499 ∀ F : RatioOrbit → RatioOrbit,
5500 PRCNativeCostHypotheses F →
5501 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F) →
5502 ∃ χ : RatioOrbit → RatioOrbit,
5503 PRCRatioCharacter χ ∧
5504 PRCCharacterTraceMatchesCost F χ
5505
5506def PRCZeroCalibratedNativeCostCharacterFactorizationTarget : Prop :=
5507 ∀ F : RatioOrbit → RatioOrbit,
5508 PRCNativeCostHypotheses F →
5509 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F) →
5510 ∃ χ : RatioOrbit → RatioOrbit,
5511 PRCRatioCharacter χ ∧
5512 ∀ q : RatioOrbit,
5513 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
5514
5515def PRCZeroCalibratedNativeCostSignedAdmissibleCharacterFactorizationTarget :
5516 Prop :=
5517 ∀ F : RatioOrbit → RatioOrbit,
5518 PRCNativeCostHypotheses F →
5519 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F) →
5520 ∃ χ : RatioOrbit → RatioOrbit,
5521 PRCSignedAdmissibleRatioCharacter χ ∧
5522 ∀ q : RatioOrbit,
5523 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
5524
5525def PRCZeroCalibratedNativeCostUniquenessTarget : Prop :=
5526 ∀ F : RatioOrbit → RatioOrbit,
5527 PRCNativeCostHypotheses F →
5528 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F) →
5529 ∀ q : RatioOrbit, RatioOrbit.crossEq (F q) (onRatioOrbit q)
5530
5531theorem PRCZeroCalibratedNativeCostCharacterTraceLiftTarget_proved :
5532 PRCZeroCalibratedNativeCostCharacterTraceLiftTarget := by
5533 intro F hF hzero
5534 have hT : PRCDoubledTraceHypotheses (nativeCostDoubledTrace F) :=
5535 nativeCostDoubledTrace_hypotheses_of_native_cost_hypotheses hF
5536 rcases PRCDoubledTraceZeroCalibratedCoherentRootTarget_proved
5537 (nativeCostDoubledTrace F) hT hzero with
5538 ⟨χ, hχ, htrace⟩
5539 exact ⟨χ, hχ, htrace⟩
5540
5541theorem PRCZeroCalibratedNativeCostCharacterFactorizationTarget_proved :
5542 PRCZeroCalibratedNativeCostCharacterFactorizationTarget := by
5543 intro F hF hzero
5544 rcases PRCZeroCalibratedNativeCostCharacterTraceLiftTarget_proved
5545 F hF hzero with
5546 ⟨χ, hχ, htrace⟩
5547 exact ⟨χ, hχ, cost_crossEq_of_PRCCharacterTraceMatchesCost htrace⟩
5548
5549theorem PRCZeroCalibratedNativeCostUniquenessTarget_of_character_targets
5550 (hfactor : PRCZeroCalibratedNativeCostCharacterFactorizationTarget)
5551 (hrigid : PRCNativeCostCharacterRigidityTarget) :
5552 PRCZeroCalibratedNativeCostUniquenessTarget := by
5553 intro F hF hzero q
5554 rcases hfactor F hF hzero with ⟨χ, hχ, hFχ⟩
5555 have hcal :
5556 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) :=
5557 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ two)) hF.two_calibrated
5558 exact RatioOrbit.crossEq_trans (hFχ q) (hrigid χ hχ hcal q)
5559
5560theorem PRCZeroCalibratedNativeCostCharacterFactorizationTarget_not_old :
5561 PRCZeroCalibratedNativeCostCharacterFactorizationTarget ∧
5562 ¬ PRCNativeCostCharacterFactorizationTarget := by
5563 exact ⟨PRCZeroCalibratedNativeCostCharacterFactorizationTarget_proved,
5564 PRCNativeCostCharacterFactorizationTarget_refuted⟩
5565
5566theorem PRCCharacterOrbitProductDisplayCompatible_of_crossEq_respect
5567 {χ : RatioOrbit → RatioOrbit}
5568 (hrespect : PRCCharacterRespectsCrossEq χ) :
5569 PRCCharacterOrbitProductDisplayCompatible χ := by
5570 intro a b p ha hb hp hmul
5571 exact hrespect (orbitDirection p hp)
5572 (RatioOrbit.mul (orbitDirection a ha) (orbitDirection b hb))
5573 (orbitDirection_mul_crossEq a b p ha hb hp hmul)
5574
5575/-- Product factors cannot be mixed identity/reciprocal oriented. This is the
5576exact obstruction left after the pure same-orientation product algebra is
5577discharged. -/
5578def PRCCharacterOrbitProductNoMixedOrientation
5579 (χ : RatioOrbit → RatioOrbit) : Prop :=
5580 ∀ a b p : DistinctionNat,
5581 ∀ ha : a ≠ DistinctionNat.zero, ∀ hb : b ≠ DistinctionNat.zero,
5582 ¬ DistinctionNat.unit a →
5583 ¬ DistinctionNat.unit b →
5584 ∀ _hp : p ≠ DistinctionNat.zero,
5585 ¬ DistinctionNat.unit p →
5586 a * b = p →
5587 (¬ (PRCCharacterOrbitDirectionIdentity χ a ha ∧
5588 PRCCharacterOrbitDirectionReciprocal χ b hb)) ∧
5589 (¬ (PRCCharacterOrbitDirectionReciprocal χ a ha ∧
5590 PRCCharacterOrbitDirectionIdentity χ b hb))
5591
5592/-- Nonunit orbit orientation is coherent when every nonunit orbit direction
5593chooses the same branch: all identity or all reciprocal. This is the exact
5594coherence statement strong enough to rule out mixed product factors. -/
5595def PRCCharacterNonunitOrbitOrientationCoherent
5596 (χ : RatioOrbit → RatioOrbit) : Prop :=
5597 (∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
5598 ¬ DistinctionNat.unit p →
5599 PRCCharacterOrbitDirectionIdentity χ p hp) ∨
5600 (∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
5601 ¬ DistinctionNat.unit p →
5602 PRCCharacterOrbitDirectionReciprocal χ p hp)
5603
5604/-- Cross-nonunit no-mixing: identity orientation at one nonunit orbit direction
5605cannot coexist with reciprocal orientation at another. This is the branch-coupling
5606part of global nonunit coherence, separated from local orientation existence. -/
5607def PRCCharacterNoMixedNonunitOrbitOrientation
5608 (χ : RatioOrbit → RatioOrbit) : Prop :=
5609 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
5610 ¬ DistinctionNat.unit p →
5611 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
5612 ¬ DistinctionNat.unit r →
5613 PRCCharacterOrbitDirectionIdentity χ p hp →
5614 PRCCharacterOrbitDirectionReciprocal χ r hr →
5615 False
5616
5617/-- Positive branch transport form of nonunit coherence: if one nonunit orbit
5618direction is identity-oriented, every nonunit orbit direction is identity-oriented.
5619This is the same branch-coupling law as no-mixing once local orientation is known,
5620but it states the missing transport direction directly. -/
5621def PRCCharacterNonunitIdentityBranchTransport
5622 (χ : RatioOrbit → RatioOrbit) : Prop :=
5623 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
5624 ¬ DistinctionNat.unit p →
5625 PRCCharacterOrbitDirectionIdentity χ p hp →
5626 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
5627 ¬ DistinctionNat.unit r →
5628 PRCCharacterOrbitDirectionIdentity χ r hr
5629
5630/-- Witness form of identity branch transport: one identity-oriented nonunit
5631direction, if it exists, fixes the identity branch globally. -/
5632def PRCCharacterNonunitIdentityWitnessGlobalizes
5633 (χ : RatioOrbit → RatioOrbit) : Prop :=
5634 (∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
5635 ∃ _hunit : ¬ DistinctionNat.unit p,
5636 PRCCharacterOrbitDirectionIdentity χ p hp) →
5637 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
5638 ¬ DistinctionNat.unit r →
5639 PRCCharacterOrbitDirectionIdentity χ r hr
5640
5641/-- One-sided exclusion form of branch coupling: once any nonunit identity
5642witness exists, no nonunit reciprocal witness can coexist with it. Local
5643orientation is not bundled into this statement. -/
5644def PRCCharacterNonunitIdentityWitnessExcludesReciprocal
5645 (χ : RatioOrbit → RatioOrbit) : Prop :=
5646 (∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
5647 ∃ _hunit : ¬ DistinctionNat.unit p,
5648 PRCCharacterOrbitDirectionIdentity χ p hp) →
5649 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
5650 ¬ DistinctionNat.unit r →
5651 PRCCharacterOrbitDirectionReciprocal χ r hr → False
5652
5653/-- Existential no-mixed-witness form of branch coupling: there cannot
5654simultaneously be an identity-oriented nonunit witness and a reciprocal-oriented
5655nonunit witness. -/
5656def PRCCharacterNonunitNoMixedWitnesses
5657 (χ : RatioOrbit → RatioOrbit) : Prop :=
5658 ¬ ((∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
5659 ∃ _hunit : ¬ DistinctionNat.unit p,
5660 PRCCharacterOrbitDirectionIdentity χ p hp) ∧
5661 (∃ r : DistinctionNat, ∃ hr : r ≠ DistinctionNat.zero,
5662 ∃ _hunit : ¬ DistinctionNat.unit r,
5663 PRCCharacterOrbitDirectionReciprocal χ r hr))
5664
5665/-- The exact composite bridge still needed after prime witnesses are isolated:
5666prime no-mixing must control arbitrary nonunit witnesses. -/
5667def PRCCharacterPrimeWitnessesControlNonunitWitnesses
5668 (χ : RatioOrbit → RatioOrbit) : Prop :=
5669 PRCCharacterNoMixedPrimeWitnesses χ →
5670 PRCCharacterNonunitNoMixedWitnesses χ
5671
5672/-- Contrapositive/reflection form of the composite bridge: if mixed nonunit
5673witnesses exist, then mixed prime-axis witnesses must already exist. This is the
5674exact reverse direction not supplied by product propagation. -/
5675def PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses
5676 (χ : RatioOrbit → RatioOrbit) : Prop :=
5677 ((∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
5678 ∃ _hunit : ¬ DistinctionNat.unit p,
5679 PRCCharacterOrbitDirectionIdentity χ p hp) ∧
5680 (∃ r : DistinctionNat, ∃ hr : r ≠ DistinctionNat.zero,
5681 ∃ _hunit : ¬ DistinctionNat.unit r,
5682 PRCCharacterOrbitDirectionReciprocal χ r hr)) →
5683 ((∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
5684 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) ∧
5685 (∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
5686 RatioOrbit.crossEq (χ (primeDirection r hr))
5687 (RatioOrbit.recip (primeDirection r hr))))
5688
5689/-- Identity half of the mixed-context reflection law: in the presence of mixed
5690nonunit witnesses, the identity-oriented nonunit witness must reflect down to an
5691identity-oriented prime-axis witness. -/
5692def PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness
5693 (χ : RatioOrbit → RatioOrbit) : Prop :=
5694 ((∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
5695 ∃ _hunit : ¬ DistinctionNat.unit p,
5696 PRCCharacterOrbitDirectionIdentity χ p hp) ∧
5697 (∃ r : DistinctionNat, ∃ hr : r ≠ DistinctionNat.zero,
5698 ∃ _hunit : ¬ DistinctionNat.unit r,
5699 PRCCharacterOrbitDirectionReciprocal χ r hr)) →
5700 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
5701 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
5702
5703/-- Reciprocal half of the mixed-context reflection law: in the presence of mixed
5704nonunit witnesses, the reciprocal-oriented nonunit witness must reflect down to a
5705reciprocal-oriented prime-axis witness. -/
5706def PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness
5707 (χ : RatioOrbit → RatioOrbit) : Prop :=
5708 ((∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
5709 ∃ _hunit : ¬ DistinctionNat.unit p,
5710 PRCCharacterOrbitDirectionIdentity χ p hp) ∧
5711 (∃ r : DistinctionNat, ∃ hr : r ≠ DistinctionNat.zero,
5712 ∃ _hunit : ¬ DistinctionNat.unit r,
5713 PRCCharacterOrbitDirectionReciprocal χ r hr)) →
5714 ∃ r : DistinctionNat, ∃ hr : DistinctionNat.primeOrbit r,
5715 RatioOrbit.crossEq (χ (primeDirection r hr))
5716 (RatioOrbit.recip (primeDirection r hr))
5717
5718/-- Split form of mixed nonunit reflection: the identity and reciprocal witnesses
5719each pull back to the prime axis under the same mixed-context antecedent. -/
5720def PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit
5721 (χ : RatioOrbit → RatioOrbit) : Prop :=
5722 PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness χ ∧
5723 PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness χ
5724
5725/-- Reciprocal branch transport form of nonunit coherence: if one nonunit orbit
5726direction is reciprocal-oriented, every nonunit orbit direction is
5727reciprocal-oriented. Pass 57 isolates this as the dual half of two-branch
5728agreement. -/
5729def PRCCharacterNonunitReciprocalBranchTransport
5730 (χ : RatioOrbit → RatioOrbit) : Prop :=
5731 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
5732 ¬ DistinctionNat.unit p →
5733 PRCCharacterOrbitDirectionReciprocal χ p hp →
5734 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
5735 ¬ DistinctionNat.unit r →
5736 PRCCharacterOrbitDirectionReciprocal χ r hr
5737
5738/-- Split transport form of two-branch agreement. -/
5739def PRCCharacterNonunitBranchTransportPair
5740 (χ : RatioOrbit → RatioOrbit) : Prop :=
5741 PRCCharacterNonunitIdentityBranchTransport χ ∧
5742 PRCCharacterNonunitReciprocalBranchTransport χ
5743
5744/-- Trace-order form of nonunit identity transport: identity orientation at one
5745nonunit orbit direction transports to another nonunit direction when their
5746finite δ-orbit traces are comparable. Since orbit traces are structurally
5747comparable, this is equivalent to global nonunit identity-branch transport, but
5748it exposes the next proof obligation as a trace-order law. -/
5749def PRCCharacterNonunitIdentityRespectsComparableTrace
5750 (χ : RatioOrbit → RatioOrbit) : Prop :=
5751 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
5752 ¬ DistinctionNat.unit p →
5753 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
5754 ¬ DistinctionNat.unit r →
5755 (Trace.Extends (orbitPositionTrace p) (orbitPositionTrace r) ∨
5756 Trace.Extends (orbitPositionTrace r) (orbitPositionTrace p)) →
5757 PRCCharacterOrbitDirectionIdentity χ p hp →
5758 PRCCharacterOrbitDirectionIdentity χ r hr
5759
5760theorem orbit_mul_not_unit_of_left_not_unit
5761 {p r : DistinctionNat} (hunit : ¬ DistinctionNat.unit p) :
5762 ¬ DistinctionNat.unit (p * r) := by
5763 intro hprodUnit
5764 have hprodNat : (p * r).toNat = 1 :=
5765 (DistinctionNat.unit_iff_toNat_eq_one (p * r)).mp hprodUnit
5766 have hpNat1 : p.toNat ≠ 1 := by
5767 intro hone
5768 exact hunit ((DistinctionNat.unit_iff_toNat_eq_one p).mpr hone)
5769 rw [DistinctionNat.toNat_mul] at hprodNat
5770 have hpOne : p.toNat = 1 := Nat.eq_one_of_mul_eq_one_right hprodNat
5771 exact hpNat1 hpOne
5772
5773theorem PRCCharacterNonunitOrbitLocalOrientation_of_coherent
5774 {χ : RatioOrbit → RatioOrbit}
5775 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
5776 PRCCharacterNonunitOrbitLocalOrientation χ := by
5777 intro p hp hunit
5778 rcases hcoh with hallId | hallRec
5779 · exact Or.inl (hallId p hp hunit)
5780 · exact Or.inr (hallRec p hp hunit)
5781
5782theorem PRCCharacterNoMixedNonunitOrbitOrientation_of_coherent
5783 {χ : RatioOrbit → RatioOrbit}
5784 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
5785 PRCCharacterNoMixedNonunitOrbitOrientation χ := by
5786 intro p hp hunit r hr hrUnit hpId hrRec
5787 rcases hcoh with hallId | hallRec
5788 · have hrId := hallId r hr hrUnit
5789 have hself :
5790 RatioOrbit.crossEq (orbitDirection r hr)
5791 (RatioOrbit.recip (orbitDirection r hr)) :=
5792 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
5793 exact orbitDirection_nonunit_not_crossEq_recip r hr hrUnit hself
5794 · have hpRec := hallRec p hp hunit
5795 have hself :
5796 RatioOrbit.crossEq (orbitDirection p hp)
5797 (RatioOrbit.recip (orbitDirection p hp)) :=
5798 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
5799 exact orbitDirection_nonunit_not_crossEq_recip p hp hunit hself
5800
5801theorem PRCCharacterNoMixedNonunitOrbitOrientation_of_product_no_mixed
5802 {χ : RatioOrbit → RatioOrbit}
5803 (hnomix : PRCCharacterOrbitProductNoMixedOrientation χ) :
5804 PRCCharacterNoMixedNonunitOrbitOrientation χ := by
5805 intro p hp hpUnit r hr hrUnit hpId hrRec
5806 exact ((hnomix p r (p * r) hp hr hpUnit hrUnit
5807 (DistinctionNat.mul_ne_zero hp hr)
5808 (orbit_mul_not_unit_of_left_not_unit hpUnit) rfl).1
5809 ⟨hpId, hrRec⟩)
5810
5811theorem PRCCharacterOrbitProductNoMixedOrientation_of_no_mixed_nonunit
5812 {χ : RatioOrbit → RatioOrbit}
5813 (hnomix : PRCCharacterNoMixedNonunitOrbitOrientation χ) :
5814 PRCCharacterOrbitProductNoMixedOrientation χ := by
5815 intro a b p ha hb haUnit hbUnit _hp _hpUnit _hmul
5816 constructor
5817 · rintro ⟨haId, hbRec⟩
5818 exact hnomix a ha haUnit b hb hbUnit haId hbRec
5819 · rintro ⟨haRec, hbId⟩
5820 exact hnomix b hb hbUnit a ha haUnit hbId haRec
5821
5822theorem PRCCharacterOrbitProductNoMixedOrientation_iff_no_mixed_nonunit
5823 {χ : RatioOrbit → RatioOrbit} :
5824 PRCCharacterOrbitProductNoMixedOrientation χ ↔
5825 PRCCharacterNoMixedNonunitOrbitOrientation χ :=
5826 ⟨PRCCharacterNoMixedNonunitOrbitOrientation_of_product_no_mixed,
5827 PRCCharacterOrbitProductNoMixedOrientation_of_no_mixed_nonunit⟩
5828
5829theorem PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_branch_transport
5830 {χ : RatioOrbit → RatioOrbit}
5831 (htransport : PRCCharacterNonunitIdentityBranchTransport χ) :
5832 PRCCharacterNoMixedNonunitOrbitOrientation χ := by
5833 intro p hp hpUnit r hr hrUnit hpId hrRec
5834 have hrId := htransport p hp hpUnit hpId r hr hrUnit
5835 have hself :
5836 RatioOrbit.crossEq (orbitDirection r hr)
5837 (RatioOrbit.recip (orbitDirection r hr)) :=
5838 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
5839 exact orbitDirection_nonunit_not_crossEq_recip r hr hrUnit hself
5840
5841theorem PRCCharacterOrbitProductNoMixedOrientation_of_identity_branch_transport
5842 {χ : RatioOrbit → RatioOrbit}
5843 (htransport : PRCCharacterNonunitIdentityBranchTransport χ) :
5844 PRCCharacterOrbitProductNoMixedOrientation χ :=
5845 PRCCharacterOrbitProductNoMixedOrientation_of_no_mixed_nonunit
5846 (PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_branch_transport
5847 htransport)
5848
5849theorem PRCCharacterNonunitIdentityBranchTransport_of_local_no_mixed
5850 {χ : RatioOrbit → RatioOrbit}
5851 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
5852 (hnomix : PRCCharacterNoMixedNonunitOrbitOrientation χ) :
5853 PRCCharacterNonunitIdentityBranchTransport χ := by
5854 intro p hp hpUnit hpId r hr hrUnit
5855 rcases hlocal r hr hrUnit with hrId | hrRec
5856 · exact hrId
5857 · exact False.elim (hnomix p hp hpUnit r hr hrUnit hpId hrRec)
5858
5859theorem PRCCharacterNonunitIdentityBranchTransport_of_coherent
5860 {χ : RatioOrbit → RatioOrbit}
5861 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
5862 PRCCharacterNonunitIdentityBranchTransport χ := by
5863 intro p hp hpUnit hpId r hr hrUnit
5864 rcases hcoh with hallId | hallRec
5865 · exact hallId r hr hrUnit
5866 · have hpRec := hallRec p hp hpUnit
5867 have hself :
5868 RatioOrbit.crossEq (orbitDirection p hp)
5869 (RatioOrbit.recip (orbitDirection p hp)) :=
5870 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
5871 exact False.elim
5872 (orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself)
5873
5874theorem PRCCharacterNonunitIdentityWitnessGlobalizes_of_branch_transport
5875 {χ : RatioOrbit → RatioOrbit}
5876 (htransport : PRCCharacterNonunitIdentityBranchTransport χ) :
5877 PRCCharacterNonunitIdentityWitnessGlobalizes χ := by
5878 rintro ⟨p, hp, hpUnit, hpId⟩ r hr hrUnit
5879 exact htransport p hp hpUnit hpId r hr hrUnit
5880
5881theorem PRCCharacterNonunitIdentityBranchTransport_of_witness_globalizes
5882 {χ : RatioOrbit → RatioOrbit}
5883 (hwitness : PRCCharacterNonunitIdentityWitnessGlobalizes χ) :
5884 PRCCharacterNonunitIdentityBranchTransport χ := by
5885 intro p hp hpUnit hpId r hr hrUnit
5886 exact hwitness ⟨p, hp, hpUnit, hpId⟩ r hr hrUnit
5887
5888theorem PRCCharacterNonunitIdentityWitnessGlobalizes_iff_branch_transport
5889 {χ : RatioOrbit → RatioOrbit} :
5890 PRCCharacterNonunitIdentityWitnessGlobalizes χ ↔
5891 PRCCharacterNonunitIdentityBranchTransport χ :=
5892 ⟨PRCCharacterNonunitIdentityBranchTransport_of_witness_globalizes,
5893 PRCCharacterNonunitIdentityWitnessGlobalizes_of_branch_transport⟩
5894
5895theorem PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_no_mixed
5896 {χ : RatioOrbit → RatioOrbit}
5897 (hnomix : PRCCharacterNoMixedNonunitOrbitOrientation χ) :
5898 PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ := by
5899 rintro ⟨p, hp, hpUnit, hpId⟩ r hr hrUnit hrRec
5900 exact hnomix p hp hpUnit r hr hrUnit hpId hrRec
5901
5902theorem PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_witness_excludes
5903 {χ : RatioOrbit → RatioOrbit}
5904 (hexcl : PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ) :
5905 PRCCharacterNoMixedNonunitOrbitOrientation χ := by
5906 intro p hp hpUnit r hr hrUnit hpId hrRec
5907 exact hexcl ⟨p, hp, hpUnit, hpId⟩ r hr hrUnit hrRec
5908
5909theorem PRCCharacterNonunitIdentityWitnessExcludesReciprocal_iff_no_mixed
5910 {χ : RatioOrbit → RatioOrbit} :
5911 PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ ↔
5912 PRCCharacterNoMixedNonunitOrbitOrientation χ :=
5913 ⟨PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_witness_excludes,
5914 PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_no_mixed⟩
5915
5916theorem PRCCharacterNonunitNoMixedWitnesses_of_identity_witness_excludes
5917 {χ : RatioOrbit → RatioOrbit}
5918 (hexcl : PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ) :
5919 PRCCharacterNonunitNoMixedWitnesses χ := by
5920 rintro ⟨hid, hrec⟩
5921 rcases hrec with ⟨r, hr, hrUnit, hrRec⟩
5922 exact hexcl hid r hr hrUnit hrRec
5923
5924theorem PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_no_mixed_witnesses
5925 {χ : RatioOrbit → RatioOrbit}
5926 (hnomix : PRCCharacterNonunitNoMixedWitnesses χ) :
5927 PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ := by
5928 intro hid r hr hrUnit hrRec
5929 exact hnomix ⟨hid, ⟨r, hr, hrUnit, hrRec⟩⟩
5930
5931theorem PRCCharacterNonunitNoMixedWitnesses_iff_identity_witness_excludes
5932 {χ : RatioOrbit → RatioOrbit} :
5933 PRCCharacterNonunitNoMixedWitnesses χ ↔
5934 PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ :=
5935 ⟨PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_no_mixed_witnesses,
5936 PRCCharacterNonunitNoMixedWitnesses_of_identity_witness_excludes⟩
5937
5938theorem PRCCharacterNoMixedPrimeWitnesses_of_no_mixed_prime_orientation
5939 {χ : RatioOrbit → RatioOrbit}
5940 (hnomix : PRCCharacterNoMixedPrimeOrientation χ) :
5941 PRCCharacterNoMixedPrimeWitnesses χ := by
5942 rintro ⟨hid, hrec⟩
5943 rcases hid with ⟨p, hp, hpId⟩
5944 rcases hrec with ⟨r, hr, hrRec⟩
5945 exact hnomix p hp r hr hpId hrRec
5946
5947theorem PRCCharacterNoMixedPrimeOrientation_of_no_mixed_prime_witnesses
5948 {χ : RatioOrbit → RatioOrbit}
5949 (hnomix : PRCCharacterNoMixedPrimeWitnesses χ) :
5950 PRCCharacterNoMixedPrimeOrientation χ := by
5951 intro p hp r hr hpId hrRec
5952 exact hnomix ⟨⟨p, hp, hpId⟩, ⟨r, hr, hrRec⟩⟩
5953
5954theorem PRCCharacterNoMixedPrimeWitnesses_iff_no_mixed_prime_orientation
5955 {χ : RatioOrbit → RatioOrbit} :
5956 PRCCharacterNoMixedPrimeWitnesses χ ↔
5957 PRCCharacterNoMixedPrimeOrientation χ :=
5958 ⟨PRCCharacterNoMixedPrimeOrientation_of_no_mixed_prime_witnesses,
5959 PRCCharacterNoMixedPrimeWitnesses_of_no_mixed_prime_orientation⟩
5960
5961theorem PRCCharacterNoMixedPrimeWitnesses_iff_not_mixed_prime_witnesses
5962 {χ : RatioOrbit → RatioOrbit} :
5963 PRCCharacterNoMixedPrimeWitnesses χ ↔
5964 ¬ PRCCharacterMixedPrimeWitnesses χ := by
5965 rfl
5966
5967theorem PRCCharacterMixedPrimePairWitnesses_of_mixed_prime_witnesses
5968 {χ : RatioOrbit → RatioOrbit}
5969 (hmixed : PRCCharacterMixedPrimeWitnesses χ) :
5970 PRCCharacterMixedPrimePairWitnesses χ := by
5971 rcases hmixed with ⟨hid, hrec⟩
5972 rcases hid with ⟨p, hp, hpId⟩
5973 rcases hrec with ⟨r, hr, hrRec⟩
5974 exact ⟨p, hp, r, hr, hpId, hrRec⟩
5975
5976theorem PRCCharacterMixedPrimeWitnesses_of_pair_witnesses
5977 {χ : RatioOrbit → RatioOrbit}
5978 (hpair : PRCCharacterMixedPrimePairWitnesses χ) :
5979 PRCCharacterMixedPrimeWitnesses χ := by
5980 rcases hpair with ⟨p, hp, r, hr, hpId, hrRec⟩
5981 exact ⟨⟨p, hp, hpId⟩, ⟨r, hr, hrRec⟩⟩
5982
5983theorem PRCCharacterMixedPrimeWitnesses_iff_pair_witnesses
5984 {χ : RatioOrbit → RatioOrbit} :
5985 PRCCharacterMixedPrimeWitnesses χ ↔
5986 PRCCharacterMixedPrimePairWitnesses χ :=
5987 ⟨PRCCharacterMixedPrimePairWitnesses_of_mixed_prime_witnesses,
5988 PRCCharacterMixedPrimeWitnesses_of_pair_witnesses⟩
5989
5990theorem PRCCharacterNoMixedPrimeWitnesses_iff_not_mixed_prime_pair_witnesses
5991 {χ : RatioOrbit → RatioOrbit} :
5992 PRCCharacterNoMixedPrimeWitnesses χ ↔
5993 ¬ PRCCharacterMixedPrimePairWitnesses χ := by
5994 constructor
5995 · intro hnomix hpair
5996 exact hnomix (PRCCharacterMixedPrimeWitnesses_of_pair_witnesses hpair)
5997 · intro hnoPair hmixed
5998 exact hnoPair
5999 (PRCCharacterMixedPrimePairWitnesses_of_mixed_prime_witnesses hmixed)
6000
6001theorem PRCCharacterMixedPrimePairWitnesses_same_or_distinct
6002 {χ : RatioOrbit → RatioOrbit}
6003 (hpair : PRCCharacterMixedPrimePairWitnesses χ) :
6004 PRCCharacterSamePrimeMixedPairWitnesses χ ∨
6005 PRCCharacterDistinctPrimeMixedPairWitnesses χ := by
6006 rcases hpair with ⟨p, hp, r, hr, hpId, hrRec⟩
6007 by_cases hEq : p = r
6008 · exact Or.inl ⟨p, hp, r, hr, hEq, hpId, hrRec⟩
6009 · exact Or.inr ⟨p, hp, r, hr, hEq, hpId, hrRec⟩
6010
6011theorem PRCCharacterMixedPrimePairWitnesses_of_same
6012 {χ : RatioOrbit → RatioOrbit}
6013 (hsame : PRCCharacterSamePrimeMixedPairWitnesses χ) :
6014 PRCCharacterMixedPrimePairWitnesses χ := by
6015 rcases hsame with ⟨p, hp, r, hr, _hEq, hpId, hrRec⟩
6016 exact ⟨p, hp, r, hr, hpId, hrRec⟩
6017
6018theorem PRCCharacterMixedPrimePairWitnesses_of_distinct
6019 {χ : RatioOrbit → RatioOrbit}
6020 (hdistinct : PRCCharacterDistinctPrimeMixedPairWitnesses χ) :
6021 PRCCharacterMixedPrimePairWitnesses χ := by
6022 rcases hdistinct with ⟨p, hp, r, hr, _hNe, hpId, hrRec⟩
6023 exact ⟨p, hp, r, hr, hpId, hrRec⟩
6024
6025theorem PRCCharacterMixedPrimePairWitnesses_of_same_or_distinct
6026 {χ : RatioOrbit → RatioOrbit}
6027 (hsplit :
6028 PRCCharacterSamePrimeMixedPairWitnesses χ ∨
6029 PRCCharacterDistinctPrimeMixedPairWitnesses χ) :
6030 PRCCharacterMixedPrimePairWitnesses χ := by
6031 cases hsplit with
6032 | inl hsame => exact PRCCharacterMixedPrimePairWitnesses_of_same hsame
6033 | inr hdistinct => exact PRCCharacterMixedPrimePairWitnesses_of_distinct hdistinct
6034
6035theorem PRCCharacterMixedPrimePairWitnesses_iff_same_or_distinct
6036 {χ : RatioOrbit → RatioOrbit} :
6037 PRCCharacterMixedPrimePairWitnesses χ ↔
6038 PRCCharacterSamePrimeMixedPairWitnesses χ ∨
6039 PRCCharacterDistinctPrimeMixedPairWitnesses χ :=
6040 ⟨PRCCharacterMixedPrimePairWitnesses_same_or_distinct,
6041 PRCCharacterMixedPrimePairWitnesses_of_same_or_distinct⟩
6042
6043theorem PRCCharacterNoMixedPrimeWitnesses_iff_no_same_and_no_distinct_pair
6044 {χ : RatioOrbit → RatioOrbit} :
6045 PRCCharacterNoMixedPrimeWitnesses χ ↔
6046 ¬ PRCCharacterSamePrimeMixedPairWitnesses χ ∧
6047 ¬ PRCCharacterDistinctPrimeMixedPairWitnesses χ := by
6048 constructor
6049 · intro hnomix
6050 constructor
6051 · intro hsame
6052 exact hnomix (PRCCharacterMixedPrimeWitnesses_of_pair_witnesses
6053 (PRCCharacterMixedPrimePairWitnesses_of_same hsame))
6054 · intro hdistinct
6055 exact hnomix (PRCCharacterMixedPrimeWitnesses_of_pair_witnesses
6056 (PRCCharacterMixedPrimePairWitnesses_of_distinct hdistinct))
6057 · intro hnoSplit hmixed
6058 exact (PRCCharacterNoMixedPrimeWitnesses_iff_not_mixed_prime_pair_witnesses.mpr
6059 (fun hpair =>
6060 (PRCCharacterMixedPrimePairWitnesses_iff_same_or_distinct.mp hpair).elim
6061 hnoSplit.1 hnoSplit.2)) hmixed
6062
6063theorem PRCCharacterSamePrimeMixedPairWitnesses_absurd
6064 {χ : RatioOrbit → RatioOrbit} :
6065 ¬ PRCCharacterSamePrimeMixedPairWitnesses χ := by
6066 intro hsame
6067 rcases hsame with ⟨p, hp, r, hr, hEq, hpId, hrRec⟩
6068 subst r
6069 have hdir : primeDirection p hp = primeDirection p hr := by
6070 rfl
6071 have hpRec :
6072 RatioOrbit.crossEq (χ (primeDirection p hp))
6073 (RatioOrbit.recip (primeDirection p hp)) := by
6074 simpa [hdir] using hrRec
6075 have hself :
6076 RatioOrbit.crossEq (primeDirection p hp)
6077 (RatioOrbit.recip (primeDirection p hp)) :=
6078 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6079 exact primeDirection_not_crossEq_recip p hp hself
6080
6081theorem PRCCharacterNoMixedPrimeWitnesses_iff_not_distinct_prime_pair
6082 {χ : RatioOrbit → RatioOrbit} :
6083 PRCCharacterNoMixedPrimeWitnesses χ ↔
6084 ¬ PRCCharacterDistinctPrimeMixedPairWitnesses χ := by
6085 constructor
6086 · intro hnomix hdistinct
6087 exact hnomix (PRCCharacterMixedPrimeWitnesses_of_pair_witnesses
6088 (PRCCharacterMixedPrimePairWitnesses_of_distinct hdistinct))
6089 · intro hnoDistinct
6090 exact PRCCharacterNoMixedPrimeWitnesses_iff_no_same_and_no_distinct_pair.mpr
6091 ⟨PRCCharacterSamePrimeMixedPairWitnesses_absurd, hnoDistinct⟩
6092
6093theorem PRCCharacterDistinctPrimeMixedPairWitnesses_absurd_of_branch_uniform
6094 {χ : RatioOrbit → RatioOrbit}
6095 (huniform : PRCCharacterPrimeIdentityBranchUniform χ) :
6096 ¬ PRCCharacterDistinctPrimeMixedPairWitnesses χ := by
6097 intro hdistinct
6098 rcases hdistinct with ⟨p, hp, r, hr, _hne, hpId, hrRec⟩
6099 have hrId := huniform p hp r hr hpId
6100 have hself :
6101 RatioOrbit.crossEq (primeDirection r hr)
6102 (RatioOrbit.recip (primeDirection r hr)) :=
6103 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
6104 exact primeDirection_not_crossEq_recip r hr hself
6105
6106theorem PRCCharacterPrimeIdentityBranchUniform_of_local_no_distinct_prime_pair
6107 {χ : RatioOrbit → RatioOrbit}
6108 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6109 (hnoDistinct : ¬ PRCCharacterDistinctPrimeMixedPairWitnesses χ) :
6110 PRCCharacterPrimeIdentityBranchUniform χ := by
6111 intro p hp r hr hpId
6112 by_cases hEq : p = r
6113 · subst r
6114 simpa [primeDirection] using hpId
6115 · rcases hlocal r hr with hrId | hrRec
6116 · exact hrId
6117 · exact False.elim (hnoDistinct ⟨p, hp, r, hr, hEq, hpId, hrRec⟩)
6118
6119theorem PRCCharacterPrimeIdentityBranchUniform_iff_no_distinct_prime_pair_of_local
6120 {χ : RatioOrbit → RatioOrbit}
6121 (hlocal : PRCCharacterPrimeLocalOrientation χ) :
6122 PRCCharacterPrimeIdentityBranchUniform χ ↔
6123 ¬ PRCCharacterDistinctPrimeMixedPairWitnesses χ :=
6124 ⟨PRCCharacterDistinctPrimeMixedPairWitnesses_absurd_of_branch_uniform,
6125 PRCCharacterPrimeIdentityBranchUniform_of_local_no_distinct_prime_pair hlocal⟩
6126
6127theorem PRCCharacterPrimeIdentityBranchUniform_of_identity_iff_two
6128 {χ : RatioOrbit → RatioOrbit}
6129 (hiff : PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ) :
6130 PRCCharacterPrimeIdentityBranchUniform χ := by
6131 intro p hp r hr hpId
6132 exact (hiff r hr).mpr ((hiff p hp).mp hpId)
6133
6134theorem PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_branch_uniform
6135 {χ : RatioOrbit → RatioOrbit}
6136 (huniform : PRCCharacterPrimeIdentityBranchUniform χ) :
6137 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ := by
6138 intro p hp
6139 constructor
6140 · intro hpId
6141 exact huniform p hp twoOrbit twoOrbit_primeOrbit hpId
6142 · intro htwoId
6143 exact huniform twoOrbit twoOrbit_primeOrbit p hp htwoId
6144
6145theorem PRCCharacterPrimeIdentityBranchUniform_iff_identity_iff_two
6146 {χ : RatioOrbit → RatioOrbit} :
6147 PRCCharacterPrimeIdentityBranchUniform χ ↔
6148 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ :=
6149 ⟨PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_branch_uniform,
6150 PRCCharacterPrimeIdentityBranchUniform_of_identity_iff_two⟩
6151
6152theorem PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_orientation
6153 {χ : RatioOrbit → RatioOrbit}
6154 (hnomix : PRCCharacterNoMixedPrimeOrientation χ) :
6155 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ := by
6156 rintro ⟨p, hp, hpId⟩ r hr hrRec
6157 exact hnomix p hp r hr hpId hrRec
6158
6159theorem PRCCharacterNoMixedPrimeOrientation_of_identity_witness_excludes_reciprocal
6160 {χ : RatioOrbit → RatioOrbit}
6161 (hexcl : PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ) :
6162 PRCCharacterNoMixedPrimeOrientation χ := by
6163 intro p hp r hr hpId hrRec
6164 exact hexcl ⟨p, hp, hpId⟩ r hr hrRec
6165
6166theorem PRCCharacterPrimeIdentityWitnessExcludesReciprocal_iff_no_mixed_prime_orientation
6167 {χ : RatioOrbit → RatioOrbit} :
6168 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ ↔
6169 PRCCharacterNoMixedPrimeOrientation χ :=
6170 ⟨PRCCharacterNoMixedPrimeOrientation_of_identity_witness_excludes_reciprocal,
6171 PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_orientation⟩
6172
6173theorem PRCCharacterNoMixedPrimeWitnesses_of_identity_witness_excludes_reciprocal
6174 {χ : RatioOrbit → RatioOrbit}
6175 (hexcl : PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ) :
6176 PRCCharacterNoMixedPrimeWitnesses χ := by
6177 rintro ⟨hid, hrec⟩
6178 rcases hrec with ⟨r, hr, hrRec⟩
6179 exact hexcl hid r hr hrRec
6180
6181theorem PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_witnesses
6182 {χ : RatioOrbit → RatioOrbit}
6183 (hnomix : PRCCharacterNoMixedPrimeWitnesses χ) :
6184 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ := by
6185 intro hid r hr hrRec
6186 exact hnomix ⟨hid, ⟨r, hr, hrRec⟩⟩
6187
6188theorem PRCCharacterNoMixedPrimeWitnesses_iff_identity_witness_excludes_reciprocal
6189 {χ : RatioOrbit → RatioOrbit} :
6190 PRCCharacterNoMixedPrimeWitnesses χ ↔
6191 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ :=
6192 ⟨PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_witnesses,
6193 PRCCharacterNoMixedPrimeWitnesses_of_identity_witness_excludes_reciprocal⟩
6194
6195theorem PRCCharacterPrimeReciprocalWitnessGlobalizes_of_local_no_mixed_prime_orientation
6196 {χ : RatioOrbit → RatioOrbit}
6197 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6198 (hnomix : PRCCharacterNoMixedPrimeOrientation χ) :
6199 PRCCharacterPrimeReciprocalWitnessGlobalizes χ := by
6200 rintro ⟨p, hp, hpRec⟩ r hr
6201 rcases hlocal r hr with hrId | hrRec
6202 · exact False.elim (hnomix r hr p hp hrId hpRec)
6203 · exact hrRec
6204
6205theorem PRCCharacterNoMixedPrimeOrientation_of_reciprocal_witness_globalizes
6206 {χ : RatioOrbit → RatioOrbit}
6207 (hglobal : PRCCharacterPrimeReciprocalWitnessGlobalizes χ) :
6208 PRCCharacterNoMixedPrimeOrientation χ := by
6209 intro p hp r hr hpId hrRec
6210 have hpRec := hglobal ⟨r, hr, hrRec⟩ p hp
6211 have hself :
6212 RatioOrbit.crossEq
6213 (primeDirection p hp)
6214 (RatioOrbit.recip (primeDirection p hp)) :=
6215 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6216 exact primeDirection_not_crossEq_recip p hp hself
6217
6218theorem PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_witness_globalizes
6219 {χ : RatioOrbit → RatioOrbit}
6220 (hglobal : PRCCharacterPrimeReciprocalWitnessGlobalizes χ) :
6221 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal χ := by
6222 intro p hp hpRec
6223 exact hglobal ⟨p, hp, hpRec⟩ twoOrbit twoOrbit_primeOrbit
6224
6225theorem PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_reciprocal_witness_globalizes
6226 {χ : RatioOrbit → RatioOrbit}
6227 (hglobal : PRCCharacterPrimeReciprocalWitnessGlobalizes χ) :
6228 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ := by
6229 intro htwoRec p hp
6230 exact hglobal ⟨twoOrbit, twoOrbit_primeOrbit, htwoRec⟩ p hp
6231
6232theorem PRCCharacterPrimeReciprocalWitnessGlobalizesSplit_of_reciprocal_witness_globalizes
6233 {χ : RatioOrbit → RatioOrbit}
6234 (hglobal : PRCCharacterPrimeReciprocalWitnessGlobalizes χ) :
6235 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit χ :=
6236 ⟨PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_witness_globalizes
6237 hglobal,
6238 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_reciprocal_witness_globalizes
6239 hglobal⟩
6240
6241theorem PRCCharacterPrimeReciprocalWitnessGlobalizes_of_split
6242 {χ : RatioOrbit → RatioOrbit}
6243 (hsplit : PRCCharacterPrimeReciprocalWitnessGlobalizesSplit χ) :
6244 PRCCharacterPrimeReciprocalWitnessGlobalizes χ := by
6245 rintro ⟨p, hp, hpRec⟩ r hr
6246 exact hsplit.2 (hsplit.1 p hp hpRec) r hr
6247
6248theorem PRCCharacterPrimeReciprocalWitnessGlobalizes_iff_split
6249 {χ : RatioOrbit → RatioOrbit} :
6250 PRCCharacterPrimeReciprocalWitnessGlobalizes χ ↔
6251 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit χ :=
6252 ⟨PRCCharacterPrimeReciprocalWitnessGlobalizesSplit_of_reciprocal_witness_globalizes,
6253 PRCCharacterPrimeReciprocalWitnessGlobalizes_of_split⟩
6254
6255theorem PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_twist_identity_forces_two
6256 {χ : RatioOrbit → RatioOrbit}
6257 (hforces :
6258 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity
6259 (PRCCharacterReciprocalTwist χ)) :
6260 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal χ := by
6261 intro p hp hpRec
6262 have hpTwistId :
6263 RatioOrbit.crossEq
6264 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
6265 (primeDirection p hp) :=
6266 (PRCCharacterReciprocalTwist_prime_identity_iff_reciprocal
6267 χ p hp).mpr hpRec
6268 have htwoTwistId := hforces p hp hpTwistId
6269 exact (PRCCharacterReciprocalTwist_two_identity_iff_reciprocal χ).mp
6270 htwoTwistId
6271
6272theorem PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_reciprocal_twist_reciprocal_forces_two
6273 {χ : RatioOrbit → RatioOrbit}
6274 (hforces :
6275 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal
6276 (PRCCharacterReciprocalTwist χ)) :
6277 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ := by
6278 intro p hp hpId
6279 have hpTwistRec :
6280 RatioOrbit.crossEq
6281 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
6282 (RatioOrbit.recip (primeDirection p hp)) :=
6283 (PRCCharacterReciprocalTwist_prime_reciprocal_iff_identity
6284 χ p hp).mpr hpId
6285 have htwoTwistRec := hforces p hp hpTwistRec
6286 exact (PRCCharacterReciprocalTwist_two_reciprocal_iff_identity χ).mp
6287 htwoTwistRec
6288
6289theorem PRCCharacterTwoPrimeBranchControlsPrimes_of_coherent
6290 {χ : RatioOrbit → RatioOrbit}
6291 (hcoh : PRCCharacterPrimeOrientationCoherent χ) :
6292 PRCCharacterTwoPrimeBranchControlsPrimes χ := by
6293 constructor
6294 · intro htwoId
6295 rcases hcoh with hallId | hallRec
6296 · exact hallId
6297 · have htwoRec := hallRec twoOrbit twoOrbit_primeOrbit
6298 have hself :
6299 RatioOrbit.crossEq twoPrimeDirection
6300 (RatioOrbit.recip twoPrimeDirection) :=
6301 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
6302 exact False.elim
6303 (primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself)
6304 · intro htwoRec
6305 rcases hcoh with hallId | hallRec
6306 · have htwoId := hallId twoOrbit twoOrbit_primeOrbit
6307 have hself :
6308 RatioOrbit.crossEq twoPrimeDirection
6309 (RatioOrbit.recip twoPrimeDirection) :=
6310 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
6311 exact False.elim
6312 (primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself)
6313 · exact hallRec
6314
6315theorem PRCCharacterPrimeOrientationCoherent_of_local_two_prime_branch_controls
6316 {χ : RatioOrbit → RatioOrbit}
6317 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6318 (hctrl : PRCCharacterTwoPrimeBranchControlsPrimes χ) :
6319 PRCCharacterPrimeOrientationCoherent χ := by
6320 rcases hlocal twoOrbit twoOrbit_primeOrbit with htwoId | htwoRec
6321 · exact Or.inl (hctrl.1 htwoId)
6322 · exact Or.inr (hctrl.2 htwoRec)
6323
6324theorem PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_local_two_prime_branch_controls
6325 {χ : RatioOrbit → RatioOrbit}
6326 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6327 (hctrl : PRCCharacterTwoPrimeBranchControlsPrimes χ) :
6328 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ := by
6329 intro p hp
6330 constructor
6331 · intro hpId
6332 rcases hlocal twoOrbit twoOrbit_primeOrbit with htwoId | htwoRec
6333 · exact htwoId
6334 · have hpRec := hctrl.2 htwoRec p hp
6335 have hself :
6336 RatioOrbit.crossEq (primeDirection p hp)
6337 (RatioOrbit.recip (primeDirection p hp)) :=
6338 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6339 exact False.elim (primeDirection_not_crossEq_recip p hp hself)
6340 · intro htwoId
6341 exact hctrl.1 htwoId p hp
6342
6343theorem PRCCharacterTwoPrimeBranchControlsPrimes_of_local_prime_identity_iff_two
6344 {χ : RatioOrbit → RatioOrbit}
6345 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6346 (hiff : PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ) :
6347 PRCCharacterTwoPrimeBranchControlsPrimes χ := by
6348 constructor
6349 · intro htwoId p hp
6350 exact (hiff p hp).mpr htwoId
6351 · intro htwoRec p hp
6352 rcases hlocal p hp with hpId | hpRec
6353 · have htwoId := (hiff p hp).mp hpId
6354 have hself :
6355 RatioOrbit.crossEq twoPrimeDirection
6356 (RatioOrbit.recip twoPrimeDirection) :=
6357 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
6358 exact False.elim
6359 (primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself)
6360 · exact hpRec
6361
6362theorem PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_identity_iff_two
6363 {χ : RatioOrbit → RatioOrbit}
6364 (hiff : PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ) :
6365 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ := by
6366 intro p hp hpId
6367 exact (hiff p hp).mp hpId
6368
6369theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_identity_forces_two
6370 {χ : RatioOrbit → RatioOrbit}
6371 (hforces : PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ) :
6372 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ := by
6373 intro htwoRec p hp hpId
6374 have htwoId := hforces p hp hpId
6375 have hself :
6376 RatioOrbit.crossEq twoPrimeDirection
6377 (RatioOrbit.recip twoPrimeDirection) :=
6378 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
6379 exact primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself
6380
6381theorem PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_local_two_prime_reciprocal_excludes
6382 {χ : RatioOrbit → RatioOrbit}
6383 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6384 (hexcl : PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ) :
6385 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ := by
6386 intro p hp hpId
6387 rcases hlocal twoOrbit twoOrbit_primeOrbit with htwoId | htwoRec
6388 · exact htwoId
6389 · exact False.elim ((hexcl htwoRec p hp) hpId)
6390
6391theorem PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_iff_two_prime_reciprocal_excludes
6392 {χ : RatioOrbit → RatioOrbit}
6393 (hlocal : PRCCharacterPrimeLocalOrientation χ) :
6394 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ ↔
6395 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ :=
6396 ⟨PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_identity_forces_two,
6397 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_local_two_prime_reciprocal_excludes
6398 hlocal⟩
6399
6400theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_excludes
6401 {χ : RatioOrbit → RatioOrbit}
6402 (hexcl : PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ) :
6403 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ := by
6404 intro htwoRec hwitness
6405 rcases hwitness with ⟨p, hp, hpId⟩
6406 exact (hexcl htwoRec p hp) hpId
6407
6408theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_witness_excludes
6409 {χ : RatioOrbit → RatioOrbit}
6410 (hexcl : PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ) :
6411 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ := by
6412 intro htwoRec p hp hpId
6413 exact hexcl htwoRec ⟨p, hp, hpId⟩
6414
6415theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_iff_witness :
6416 {χ : RatioOrbit → RatioOrbit} →
6417 (PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ ↔
6418 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ) := by
6419 intro χ
6420 exact
6421 ⟨PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_excludes,
6422 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_witness_excludes⟩
6423
6424theorem PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_iff_two_prime_reciprocal_excludes_witness
6425 {χ : RatioOrbit → RatioOrbit}
6426 (hlocal : PRCCharacterPrimeLocalOrientation χ) :
6427 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ ↔
6428 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ :=
6429 (PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_iff_two_prime_reciprocal_excludes
6430 hlocal).trans
6431 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_iff_witness
6432
6433theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_not_mixed
6434 {χ : RatioOrbit → RatioOrbit}
6435 (hmix : ¬ PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ) :
6436 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ := by
6437 intro htwoRec hwitness
6438 exact hmix ⟨htwoRec, hwitness⟩
6439
6440theorem PRCCharacter_not_mixed_of_two_prime_reciprocal_excludes_prime_identity_witness
6441 {χ : RatioOrbit → RatioOrbit}
6442 (hexcl : PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ) :
6443 ¬ PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ := by
6444 intro hmix
6445 exact hexcl hmix.1 hmix.2
6446
6447theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_iff_not_mixed :
6448 {χ : RatioOrbit → RatioOrbit} →
6449 (PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ ↔
6450 ¬ PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ) := by
6451 intro χ
6452 exact
6453 ⟨PRCCharacter_not_mixed_of_two_prime_reciprocal_excludes_prime_identity_witness,
6454 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_not_mixed⟩
6455
6456theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_of_mixed
6457 {χ : RatioOrbit → RatioOrbit}
6458 (hmix : PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ) :
6459 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ := by
6460 rcases hmix with ⟨htwoRec, p, hp, hpId⟩
6461 refine ⟨htwoRec, ?_⟩
6462 by_cases hptwo : p = twoOrbit
6463 · exfalso
6464 have hdir : primeDirection p hp = twoPrimeDirection := by
6465 subst hptwo
6466 rfl
6467 rw [hdir] at hpId
6468 have hself :
6469 RatioOrbit.crossEq twoPrimeDirection
6470 (RatioOrbit.recip twoPrimeDirection) :=
6471 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) htwoRec
6472 exact primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself
6473 · exact ⟨p, hp, hptwo, hpId⟩
6474
6475theorem PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed_of_non_two_mixed
6476 {χ : RatioOrbit → RatioOrbit}
6477 (hmix : PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ) :
6478 PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ := by
6479 rcases hmix with ⟨htwoRec, p, hp, _hpne, hpId⟩
6480 exact ⟨htwoRec, p, hp, hpId⟩
6481
6482theorem PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed_iff_non_two :
6483 {χ : RatioOrbit → RatioOrbit} →
6484 (PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ ↔
6485 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ) := by
6486 intro χ
6487 exact
6488 ⟨PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_of_mixed,
6489 PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed_of_non_two_mixed⟩
6490
6491theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_non_two_mixed
6492 {χ : RatioOrbit → RatioOrbit}
6493 (hχ : PRCRatioCharacter χ)
6494 (hmix : PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ) :
6495 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ := by
6496 rcases hmix with ⟨htwoRec, p, hp, hpne, hpId⟩
6497 have hmulχ :
6498 RatioOrbit.crossEq
6499 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
6500 (RatioOrbit.mul (χ twoPrimeDirection) (χ (primeDirection p hp))) :=
6501 hχ.multiplicative twoPrimeDirection (primeDirection p hp)
6502 have hmulTarget :
6503 RatioOrbit.crossEq
6504 (RatioOrbit.mul (χ twoPrimeDirection) (χ (primeDirection p hp)))
6505 (RatioOrbit.mul
6506 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)) :=
6507 ratioOrbit_mul_congr htwoRec hpId
6508 exact ⟨htwoRec, p, hp, hpne, hpId,
6509 RatioOrbit.crossEq_trans hmulχ hmulTarget⟩
6510
6511theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_of_composite_defect
6512 {χ : RatioOrbit → RatioOrbit}
6513 (hdefect :
6514 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ) :
6515 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ := by
6516 rcases hdefect with ⟨htwoRec, p, hp, hpne, hpId, _hprod⟩
6517 exact ⟨htwoRec, p, hp, hpne, hpId⟩
6518
6519theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_iff_composite_defect_of_character
6520 {χ : RatioOrbit → RatioOrbit} (hχ : PRCRatioCharacter χ) :
6521 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ ↔
6522 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ :=
6523 ⟨PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_non_two_mixed hχ,
6524 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_of_composite_defect⟩
6525
6526theorem two_prime_composite_mixed_image_jcost_mismatch
6527 (p : DistinctionNat) (hp : DistinctionNat.primeOrbit p) :
6528 ¬ RatioOrbit.crossEq
6529 (onRatioOrbit
6530 (RatioOrbit.mul
6531 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)))
6532 (onRatioOrbit
6533 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp))) := by
6534 intro hcost
6535 have hpNat0 : p.toNat ≠ 0 := by
6536 intro hzero
6537 apply hp.1
6538 apply DistinctionNat.toNat_inj
6539 rw [hzero, DistinctionNat.toNat_zero]
6540 have hpNatQ0 : (p.toNat : ℚ) ≠ 0 := by
6541 exact_mod_cast hpNat0
6542 rw [RatioOrbit.crossEq_iff_toRat_eq, onRatioOrbit_toRat,
6543 onRatioOrbit_toRat, RatioOrbit.mul_toRat, RatioOrbit.mul_toRat,
6544 RatioOrbit.recip_toRat, twoPrimeDirection_toRat, primeDirection_toRat] at hcost
6545 field_simp [hpNatQ0] at hcost
6546 ring_nf at hcost
6547 have hsqQ : (p.toNat : ℚ) ^ 2 = 1 := by
6548 nlinarith
6549 have hsqNat : p.toNat ^ 2 = 1 := by
6550 exact_mod_cast hsqQ
6551 rw [pow_two] at hsqNat
6552 have hpOne : p.toNat = 1 := by
6553 have hle : p.toNat ≤ 1 := by
6554 by_contra hnot
6555 have hge : 2 ≤ p.toNat := by omega
6556 have hprodge : 2 ≤ p.toNat * p.toNat := by
6557 calc
6558 2 ≤ 2 * 2 := by norm_num
6559 _ ≤ p.toNat * p.toNat := Nat.mul_le_mul hge hge
6560 omega
6561 omega
6562 exact hp.2.1 ((DistinctionNat.unit_iff_toNat_eq_one p).mpr hpOne)
6563
6564theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect_of_composite_defect
6565 {χ : RatioOrbit → RatioOrbit}
6566 (hdefect :
6567 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ) :
6568 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect χ := by
6569 rcases hdefect with ⟨htwoRec, p, hp, hpne, hpId, hprod⟩
6570 have hcostImage :
6571 RatioOrbit.crossEq
6572 (costFromCharacter χ
6573 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
6574 (onRatioOrbit
6575 (RatioOrbit.mul
6576 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp))) :=
6577 onRatioOrbit_congr hprod
6578 refine ⟨htwoRec, p, hp, hpne, hpId, hprod, ?_⟩
6579 intro hcost
6580 exact
6581 two_prime_composite_mixed_image_jcost_mismatch p hp
6582 (RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hcostImage) hcost)
6583
6584theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_cost_defect
6585 {χ : RatioOrbit → RatioOrbit}
6586 (hdefect :
6587 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect χ) :
6588 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ := by
6589 rcases hdefect with ⟨htwoRec, p, hp, hpne, hpId, hprod, _hcost⟩
6590 exact ⟨htwoRec, p, hp, hpne, hpId, hprod⟩
6591
6592theorem PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_iff_cost_defect :
6593 {χ : RatioOrbit → RatioOrbit} →
6594 (PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ ↔
6595 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect χ) := by
6596 intro χ
6597 exact
6598 ⟨PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect_of_composite_defect,
6599 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_cost_defect⟩
6600
6601theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_two_prime_reciprocal_forces
6602 {χ : RatioOrbit → RatioOrbit}
6603 (hforces : PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ) :
6604 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ := by
6605 intro htwoRec p hp hpId
6606 have hpRec := hforces htwoRec p hp
6607 have hself :
6608 RatioOrbit.crossEq (primeDirection p hp)
6609 (RatioOrbit.recip (primeDirection p hp)) :=
6610 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6611 exact primeDirection_not_crossEq_recip p hp hself
6612
6613theorem PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_local_excludes_prime_identity
6614 {χ : RatioOrbit → RatioOrbit}
6615 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6616 (hexcl : PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ) :
6617 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ := by
6618 intro htwoRec p hp
6619 rcases hlocal p hp with hpId | hpRec
6620 · exact False.elim ((hexcl htwoRec p hp) hpId)
6621 · exact hpRec
6622
6623theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_iff_two_prime_reciprocal_forces
6624 {χ : RatioOrbit → RatioOrbit}
6625 (hlocal : PRCCharacterPrimeLocalOrientation χ) :
6626 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ ↔
6627 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ :=
6628 ⟨PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_local_excludes_prime_identity
6629 hlocal,
6630 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_two_prime_reciprocal_forces⟩
6631
6632theorem PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_trace_connected
6633 {χ : RatioOrbit → RatioOrbit}
6634 (htrace : PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ) :
6635 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ := by
6636 intro htwoRec p hp
6637 exact htrace p hp
6638 (PRCPrimeAxisTraceConnected_proved twoOrbit twoOrbit_primeOrbit p hp)
6639 htwoRec
6640
6641theorem PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_forces
6642 {χ : RatioOrbit → RatioOrbit}
6643 (hforces : PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ) :
6644 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ := by
6645 intro p hp _hconn htwoRec
6646 exact hforces htwoRec p hp
6647
6648theorem PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_iff_forces
6649 {χ : RatioOrbit → RatioOrbit} :
6650 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ ↔
6651 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ :=
6652 ⟨PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_trace_connected,
6653 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_forces⟩
6654
6655theorem PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_reciprocal_twist_identity
6656 {χ : RatioOrbit → RatioOrbit}
6657 (htwist :
6658 PRCCharacterTwoPrimeIdentityRespectsTraceConnected
6659 (PRCCharacterReciprocalTwist χ)) :
6660 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ := by
6661 intro p hp hconn htwoRec
6662 have htwistTwoId :
6663 RatioOrbit.crossEq
6664 (PRCCharacterReciprocalTwist χ twoPrimeDirection)
6665 twoPrimeDirection :=
6666 (PRCCharacterReciprocalTwist_two_identity_iff_reciprocal χ).mpr htwoRec
6667 have htwistPId := htwist p hp hconn htwistTwoId
6668 exact (PRCCharacterReciprocalTwist_prime_identity_iff_reciprocal
6669 χ p hp).mp htwistPId
6670
6671theorem PRCCharacterTwoPrimeIdentityRespectsTraceConnected_of_reciprocal_twist_reciprocal
6672 {χ : RatioOrbit → RatioOrbit}
6673 (htwist :
6674 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected
6675 (PRCCharacterReciprocalTwist χ)) :
6676 PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ := by
6677 intro p hp hconn htwoId
6678 have htwistTwoRec :
6679 RatioOrbit.crossEq
6680 (PRCCharacterReciprocalTwist χ twoPrimeDirection)
6681 (RatioOrbit.recip twoPrimeDirection) := by
6682 simpa [PRCCharacterReciprocalTwist] using
6683 (ratioOrbit_recip_congr htwoId)
6684 have htwistPRec := htwist p hp hconn htwistTwoRec
6685 have hpToRecipRecip :
6686 RatioOrbit.crossEq (χ (primeDirection p hp))
6687 (RatioOrbit.recip (RatioOrbit.recip (primeDirection p hp))) :=
6688 (ratioOrbit_recip_left_crossEq_iff
6689 (χ (primeDirection p hp))
6690 (RatioOrbit.recip (primeDirection p hp))).mp htwistPRec
6691 exact RatioOrbit.crossEq_trans hpToRecipRecip
6692 (ratioOrbit_recip_recip_crossEq_self (primeDirection p hp))
6693
6694theorem PRCCharacterTwoPrimeIdentityRespectsTraceConnected_of_prime_identity_trace_connected
6695 {χ : RatioOrbit → RatioOrbit}
6696 (htrace : PRCCharacterPrimeIdentityRespectsTraceConnected χ) :
6697 PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ := by
6698 intro p hp hconn htwoId
6699 exact htrace twoOrbit twoOrbit_primeOrbit p hp hconn htwoId
6700
6701theorem PRCCharacterPrimeIdentityRespectsTraceConnected_of_two_prime_identity_and_forces_two
6702 {χ : RatioOrbit → RatioOrbit}
6703 (htwo : PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ)
6704 (hforces : PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ) :
6705 PRCCharacterPrimeIdentityRespectsTraceConnected χ := by
6706 intro p hp r hr _hconn hpId
6707 have htwoId := hforces p hp hpId
6708 exact htwo r hr
6709 (PRCPrimeAxisTraceConnected_proved twoOrbit twoOrbit_primeOrbit r hr)
6710 htwoId
6711
6712theorem PRCCharacterNoMixedPrimeWitnesses_of_coherent_prime_orientation
6713 {χ : RatioOrbit → RatioOrbit}
6714 (hcoh : PRCCharacterPrimeOrientationCoherent χ) :
6715 PRCCharacterNoMixedPrimeWitnesses χ := by
6716 rintro ⟨hid, hrec⟩
6717 rcases hid with ⟨p, hp, hpId⟩
6718 rcases hrec with ⟨r, hr, hrRec⟩
6719 rcases hcoh with hallId | hallRec
6720 · have hrId := hallId r hr
6721 have hself :
6722 RatioOrbit.crossEq (primeDirection r hr)
6723 (RatioOrbit.recip (primeDirection r hr)) :=
6724 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
6725 exact primeDirection_not_crossEq_recip r hr hself
6726 · have hpRec := hallRec p hp
6727 have hself :
6728 RatioOrbit.crossEq (primeDirection p hp)
6729 (RatioOrbit.recip (primeDirection p hp)) :=
6730 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6731 exact primeDirection_not_crossEq_recip p hp hself
6732
6733theorem PRCCharacterPrimeIdentityTraceCoherent_of_local_no_mixed_prime_orientation
6734 {χ : RatioOrbit → RatioOrbit}
6735 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6736 (hnomix : PRCCharacterNoMixedPrimeOrientation χ) :
6737 PRCCharacterPrimeIdentityTraceCoherent χ := by
6738 intro p hp r hr hpId
6739 rcases hlocal r hr with hrId | hrRec
6740 · exact hrId
6741 · exact False.elim (hnomix p hp r hr hpId hrRec)
6742
6743theorem PRCCharacterNoMixedPrimeOrientation_of_branch_uniform
6744 {χ : RatioOrbit → RatioOrbit}
6745 (huniform : PRCCharacterPrimeIdentityBranchUniform χ) :
6746 PRCCharacterNoMixedPrimeOrientation χ := by
6747 intro p hp r hr hpId hrRec
6748 have hrId := huniform p hp r hr hpId
6749 have hself :
6750 RatioOrbit.crossEq
6751 (primeDirection r hr)
6752 (RatioOrbit.recip (primeDirection r hr)) :=
6753 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
6754 exact primeDirection_not_crossEq_recip r hr hself
6755
6756theorem PRCCharacterPrimeIdentityBranchUniform_of_local_no_mixed_prime_orientation
6757 {χ : RatioOrbit → RatioOrbit}
6758 (hlocal : PRCCharacterPrimeLocalOrientation χ)
6759 (hnomix : PRCCharacterNoMixedPrimeOrientation χ) :
6760 PRCCharacterPrimeIdentityBranchUniform χ := by
6761 intro p hp r hr hpId
6762 rcases hlocal r hr with hrId | hrRec
6763 · exact hrId
6764 · exact False.elim (hnomix p hp r hr hpId hrRec)
6765
6766theorem PRCCharacterNoMixedPrimeWitnesses_of_nonunit_no_mixed_witnesses
6767 {χ : RatioOrbit → RatioOrbit}
6768 (hnomix : PRCCharacterNonunitNoMixedWitnesses χ) :
6769 PRCCharacterNoMixedPrimeWitnesses χ := by
6770 rintro ⟨hid, hrec⟩
6771 rcases hid with ⟨p, hp, hpId⟩
6772 rcases hrec with ⟨r, hr, hrRec⟩
6773 have hpIdNonunit : PRCCharacterOrbitDirectionIdentity χ p hp.1 := by
6774 simpa [PRCCharacterOrbitDirectionIdentity, primeDirection] using hpId
6775 have hrRecNonunit : PRCCharacterOrbitDirectionReciprocal χ r hr.1 := by
6776 simpa [PRCCharacterOrbitDirectionReciprocal, primeDirection] using hrRec
6777 exact hnomix ⟨⟨p, hp.1, hp.2.1, hpIdNonunit⟩,
6778 ⟨r, hr.1, hr.2.1, hrRecNonunit⟩⟩
6779
6780theorem PRCCharacterPrimeWitnessesControlNonunitWitnesses_of_mixed_reflects
6781 {χ : RatioOrbit → RatioOrbit}
6782 (hreflect : PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ) :
6783 PRCCharacterPrimeWitnessesControlNonunitWitnesses χ := by
6784 intro hprimeNoMix hnonunitMixed
6785 exact hprimeNoMix (hreflect hnonunitMixed)
6786
6787theorem PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_of_prime_control
6788 {χ : RatioOrbit → RatioOrbit}
6789 (hcontrol : PRCCharacterPrimeWitnessesControlNonunitWitnesses χ) :
6790 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ := by
6791 intro hnonunitMixed
6792 by_contra hnoPrimeMixed
6793 exact (hcontrol hnoPrimeMixed) hnonunitMixed
6794
6795theorem PRCCharacterPrimeWitnessesControlNonunitWitnesses_iff_mixed_reflects
6796 {χ : RatioOrbit → RatioOrbit} :
6797 PRCCharacterPrimeWitnessesControlNonunitWitnesses χ ↔
6798 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ :=
6799 ⟨PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_of_prime_control,
6800 PRCCharacterPrimeWitnessesControlNonunitWitnesses_of_mixed_reflects⟩
6801
6802theorem PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit_of_reflects
6803 {χ : RatioOrbit → RatioOrbit}
6804 (hreflect : PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ) :
6805 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit χ := by
6806 constructor
6807 · intro hmixed
6808 exact (hreflect hmixed).1
6809 · intro hmixed
6810 exact (hreflect hmixed).2
6811
6812theorem PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_of_split
6813 {χ : RatioOrbit → RatioOrbit}
6814 (hsplit : PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit χ) :
6815 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ := by
6816 intro hmixed
6817 exact ⟨hsplit.1 hmixed, hsplit.2 hmixed⟩
6818
6819theorem PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_iff_split
6820 {χ : RatioOrbit → RatioOrbit} :
6821 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ ↔
6822 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit χ :=
6823 ⟨PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit_of_reflects,
6824 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_of_split⟩
6825
6826theorem PRCCharacterNonunitIdentityWitnessGlobalizes_of_local_excludes
6827 {χ : RatioOrbit → RatioOrbit}
6828 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
6829 (hexcl : PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ) :
6830 PRCCharacterNonunitIdentityWitnessGlobalizes χ := by
6831 intro hwitness r hr hrUnit
6832 rcases hlocal r hr hrUnit with hrId | hrRec
6833 · exact hrId
6834 · exact False.elim (hexcl hwitness r hr hrUnit hrRec)
6835
6836theorem PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_globalizes
6837 {χ : RatioOrbit → RatioOrbit}
6838 (hwitness : PRCCharacterNonunitIdentityWitnessGlobalizes χ) :
6839 PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ := by
6840 intro hId r hr hrUnit hrRec
6841 have hrId := hwitness hId r hr hrUnit
6842 have hself :
6843 RatioOrbit.crossEq (orbitDirection r hr)
6844 (RatioOrbit.recip (orbitDirection r hr)) :=
6845 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
6846 exact orbitDirection_nonunit_not_crossEq_recip r hr hrUnit hself
6847
6848theorem PRCCharacterNonunitOrbitOrientationCoherent_of_local_identity_witness_globalizes
6849 {χ : RatioOrbit → RatioOrbit}
6850 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
6851 (hwitness : PRCCharacterNonunitIdentityWitnessGlobalizes χ) :
6852 PRCCharacterNonunitOrbitOrientationCoherent χ := by
6853 by_cases hId :
6854 ∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
6855 ∃ hunit : ¬ DistinctionNat.unit p,
6856 PRCCharacterOrbitDirectionIdentity χ p hp
6857 · exact Or.inl (hwitness hId)
6858 · exact Or.inr (by
6859 intro q hq hqUnit
6860 rcases hlocal q hq hqUnit with hqId | hqRec
6861 · exact False.elim (hId ⟨q, hq, hqUnit, hqId⟩)
6862 · exact hqRec)
6863
6864theorem PRCCharacterNonunitIdentityWitnessGlobalizes_of_coherent
6865 {χ : RatioOrbit → RatioOrbit}
6866 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
6867 PRCCharacterNonunitIdentityWitnessGlobalizes χ :=
6868 PRCCharacterNonunitIdentityWitnessGlobalizes_of_branch_transport
6869 (PRCCharacterNonunitIdentityBranchTransport_of_coherent hcoh)
6870
6871theorem PRCCharacterNonunitReciprocalBranchTransport_of_coherent
6872 {χ : RatioOrbit → RatioOrbit}
6873 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
6874 PRCCharacterNonunitReciprocalBranchTransport χ := by
6875 intro p hp hpUnit hpRec r hr hrUnit
6876 rcases hcoh with hallId | hallRec
6877 · have hpId := hallId p hp hpUnit
6878 have hself :
6879 RatioOrbit.crossEq (orbitDirection p hp)
6880 (RatioOrbit.recip (orbitDirection p hp)) :=
6881 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6882 exact False.elim
6883 (orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself)
6884 · exact hallRec r hr hrUnit
6885
6886theorem PRCCharacterNonunitBranchTransportPair_of_coherent
6887 {χ : RatioOrbit → RatioOrbit}
6888 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
6889 PRCCharacterNonunitBranchTransportPair χ :=
6890 ⟨PRCCharacterNonunitIdentityBranchTransport_of_coherent hcoh,
6891 PRCCharacterNonunitReciprocalBranchTransport_of_coherent hcoh⟩
6892
6893theorem PRCCharacterNonunitIdentityBranchTransport_of_comparable_trace
6894 {χ : RatioOrbit → RatioOrbit}
6895 (hcomp : PRCCharacterNonunitIdentityRespectsComparableTrace χ) :
6896 PRCCharacterNonunitIdentityBranchTransport χ := by
6897 intro p hp hpUnit hpId r hr hrUnit
6898 exact hcomp p hp hpUnit r hr hrUnit
6899 (orbitPositionTrace_comparable p r) hpId
6900
6901theorem PRCCharacterNonunitIdentityRespectsComparableTrace_of_branch_transport
6902 {χ : RatioOrbit → RatioOrbit}
6903 (htransport : PRCCharacterNonunitIdentityBranchTransport χ) :
6904 PRCCharacterNonunitIdentityRespectsComparableTrace χ := by
6905 intro p hp hpUnit r hr hrUnit _hcomp hpId
6906 exact htransport p hp hpUnit hpId r hr hrUnit
6907
6908theorem PRCCharacterNonunitIdentityRespectsComparableTrace_iff_branch_transport
6909 {χ : RatioOrbit → RatioOrbit} :
6910 PRCCharacterNonunitIdentityRespectsComparableTrace χ ↔
6911 PRCCharacterNonunitIdentityBranchTransport χ :=
6912 ⟨PRCCharacterNonunitIdentityBranchTransport_of_comparable_trace,
6913 PRCCharacterNonunitIdentityRespectsComparableTrace_of_branch_transport⟩
6914
6915/-- Two-branch version of the global branch-coupling law: any nonunit
6916identity-oriented direction transports identity to every nonunit direction, and
6917any reciprocal-oriented direction transports reciprocal to every nonunit
6918direction. -/
6919def PRCCharacterNonunitBranchAgreement
6920 (χ : RatioOrbit → RatioOrbit) : Prop :=
6921 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
6922 ¬ DistinctionNat.unit p →
6923 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
6924 ¬ DistinctionNat.unit r →
6925 (PRCCharacterOrbitDirectionIdentity χ p hp →
6926 PRCCharacterOrbitDirectionIdentity χ r hr) ∧
6927 (PRCCharacterOrbitDirectionReciprocal χ p hp →
6928 PRCCharacterOrbitDirectionReciprocal χ r hr)
6929
6930theorem PRCCharacterNonunitBranchAgreement_of_coherent
6931 {χ : RatioOrbit → RatioOrbit}
6932 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
6933 PRCCharacterNonunitBranchAgreement χ := by
6934 intro p hp hpUnit r hr hrUnit
6935 rcases hcoh with hallId | hallRec
6936 · constructor
6937 · intro _hpId
6938 exact hallId r hr hrUnit
6939 · intro hpRec
6940 have hpId := hallId p hp hpUnit
6941 have hself :
6942 RatioOrbit.crossEq (orbitDirection p hp)
6943 (RatioOrbit.recip (orbitDirection p hp)) :=
6944 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6945 exact False.elim
6946 (orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself)
6947 · constructor
6948 · intro hpId
6949 have hpRec := hallRec p hp hpUnit
6950 have hself :
6951 RatioOrbit.crossEq (orbitDirection p hp)
6952 (RatioOrbit.recip (orbitDirection p hp)) :=
6953 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
6954 exact False.elim
6955 (orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself)
6956 · intro _hpRec
6957 exact hallRec r hr hrUnit
6958
6959theorem PRCCharacterNonunitBranchAgreement_of_transport_pair
6960 {χ : RatioOrbit → RatioOrbit}
6961 (hpair : PRCCharacterNonunitBranchTransportPair χ) :
6962 PRCCharacterNonunitBranchAgreement χ := by
6963 intro p hp hpUnit r hr hrUnit
6964 exact ⟨(by
6965 intro hpId
6966 exact hpair.1 p hp hpUnit hpId r hr hrUnit),
6967 (by
6968 intro hpRec
6969 exact hpair.2 p hp hpUnit hpRec r hr hrUnit)⟩
6970
6971theorem PRCCharacterNonunitIdentityBranchTransport_of_branch_agreement
6972 {χ : RatioOrbit → RatioOrbit}
6973 (hagree : PRCCharacterNonunitBranchAgreement χ) :
6974 PRCCharacterNonunitIdentityBranchTransport χ := by
6975 intro p hp hpUnit hpId r hr hrUnit
6976 exact (hagree p hp hpUnit r hr hrUnit).1 hpId
6977
6978theorem PRCCharacterNonunitReciprocalBranchTransport_of_branch_agreement
6979 {χ : RatioOrbit → RatioOrbit}
6980 (hagree : PRCCharacterNonunitBranchAgreement χ) :
6981 PRCCharacterNonunitReciprocalBranchTransport χ := by
6982 intro p hp hpUnit hpRec r hr hrUnit
6983 exact (hagree p hp hpUnit r hr hrUnit).2 hpRec
6984
6985theorem PRCCharacterNonunitBranchTransportPair_of_branch_agreement
6986 {χ : RatioOrbit → RatioOrbit}
6987 (hagree : PRCCharacterNonunitBranchAgreement χ) :
6988 PRCCharacterNonunitBranchTransportPair χ :=
6989 ⟨PRCCharacterNonunitIdentityBranchTransport_of_branch_agreement hagree,
6990 PRCCharacterNonunitReciprocalBranchTransport_of_branch_agreement hagree⟩
6991
6992theorem PRCCharacterNonunitBranchAgreement_iff_transport_pair
6993 {χ : RatioOrbit → RatioOrbit} :
6994 PRCCharacterNonunitBranchAgreement χ ↔
6995 PRCCharacterNonunitBranchTransportPair χ :=
6996 ⟨PRCCharacterNonunitBranchTransportPair_of_branch_agreement,
6997 PRCCharacterNonunitBranchAgreement_of_transport_pair⟩
6998
6999theorem PRCCharacterNonunitBranchAgreement_of_local_identity_branch_transport
7000 {χ : RatioOrbit → RatioOrbit}
7001 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7002 (htransport : PRCCharacterNonunitIdentityBranchTransport χ) :
7003 PRCCharacterNonunitBranchAgreement χ := by
7004 intro p hp hpUnit r hr hrUnit
7005 constructor
7006 · intro hpId
7007 exact htransport p hp hpUnit hpId r hr hrUnit
7008 · intro hpRec
7009 rcases hlocal r hr hrUnit with hrId | hrRec
7010 · have hpId := htransport r hr hrUnit hrId p hp hpUnit
7011 have hself :
7012 RatioOrbit.crossEq (orbitDirection p hp)
7013 (RatioOrbit.recip (orbitDirection p hp)) :=
7014 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
7015 exact False.elim
7016 (orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself)
7017 · exact hrRec
7018
7019theorem PRCCharacterNonunitOrbitOrientationCoherent_of_local_branch_agreement
7020 {χ : RatioOrbit → RatioOrbit}
7021 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7022 (hagree : PRCCharacterNonunitBranchAgreement χ) :
7023 PRCCharacterNonunitOrbitOrientationCoherent χ := by
7024 by_cases hId :
7025 ∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
7026 ∃ hunit : ¬ DistinctionNat.unit p,
7027 PRCCharacterOrbitDirectionIdentity χ p hp
7028 · rcases hId with ⟨p0, hp0, hunit0, hp0Id⟩
7029 exact Or.inl (by
7030 intro q hq hqUnit
7031 exact (hagree p0 hp0 hunit0 q hq hqUnit).1 hp0Id)
7032 · exact Or.inr (by
7033 intro q hq hqUnit
7034 rcases hlocal q hq hqUnit with hqId | hqRec
7035 · exact False.elim (hId ⟨q, hq, hqUnit, hqId⟩)
7036 · exact hqRec)
7037
7038theorem PRCCharacterNonunitBranchAgreement_iff_coherent_of_local
7039 {χ : RatioOrbit → RatioOrbit}
7040 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ) :
7041 PRCCharacterNonunitBranchAgreement χ ↔
7042 PRCCharacterNonunitOrbitOrientationCoherent χ :=
7043 ⟨PRCCharacterNonunitOrbitOrientationCoherent_of_local_branch_agreement
7044 hlocal,
7045 PRCCharacterNonunitBranchAgreement_of_coherent⟩
7046
7047theorem PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_no_mixed
7048 {χ : RatioOrbit → RatioOrbit}
7049 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7050 (hnomix : PRCCharacterNoMixedNonunitOrbitOrientation χ) :
7051 PRCCharacterNonunitOrbitOrientationCoherent χ := by
7052 by_cases hId :
7053 ∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
7054 ∃ hunit : ¬ DistinctionNat.unit p,
7055 PRCCharacterOrbitDirectionIdentity χ p hp
7056 · rcases hId with ⟨p0, hp0, hunit0, hp0Id⟩
7057 exact Or.inl (by
7058 intro q hq hqUnit
7059 rcases hlocal q hq hqUnit with hqId | hqRec
7060 · exact hqId
7061 · exact False.elim (hnomix p0 hp0 hunit0 q hq hqUnit hp0Id hqRec))
7062 · exact Or.inr (by
7063 intro q hq hqUnit
7064 rcases hlocal q hq hqUnit with hqId | hqRec
7065 · exact False.elim (hId ⟨q, hq, hqUnit, hqId⟩)
7066 · exact hqRec)
7067
7068theorem PRCCharacterNonunitOrbitOrientationCoherent_of_local_identity_branch_transport
7069 {χ : RatioOrbit → RatioOrbit}
7070 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7071 (htransport : PRCCharacterNonunitIdentityBranchTransport χ) :
7072 PRCCharacterNonunitOrbitOrientationCoherent χ :=
7073 PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_no_mixed hlocal
7074 (PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_branch_transport
7075 htransport)
7076
7077theorem PRCCharacterOrbitProductNoMixedOrientation_of_nonunit_coherent
7078 {χ : RatioOrbit → RatioOrbit}
7079 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
7080 PRCCharacterOrbitProductNoMixedOrientation χ := by
7081 intro a b p ha hb haUnit hbUnit _hp _hpUnit _hmul
7082 rcases hcoh with hallId | hallRec
7083 · constructor
7084 · rintro ⟨_haId, hbRec⟩
7085 have hbId := hallId b hb hbUnit
7086 have hself :
7087 RatioOrbit.crossEq (orbitDirection b hb)
7088 (RatioOrbit.recip (orbitDirection b hb)) :=
7089 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hbId) hbRec
7090 exact orbitDirection_nonunit_not_crossEq_recip b hb hbUnit hself
7091 · rintro ⟨haRec, _hbId⟩
7092 have haId := hallId a ha haUnit
7093 have hself :
7094 RatioOrbit.crossEq (orbitDirection a ha)
7095 (RatioOrbit.recip (orbitDirection a ha)) :=
7096 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm haId) haRec
7097 exact orbitDirection_nonunit_not_crossEq_recip a ha haUnit hself
7098 · constructor
7099 · rintro ⟨haId, _hbRec⟩
7100 have haRec := hallRec a ha haUnit
7101 have hself :
7102 RatioOrbit.crossEq (orbitDirection a ha)
7103 (RatioOrbit.recip (orbitDirection a ha)) :=
7104 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm haId) haRec
7105 exact orbitDirection_nonunit_not_crossEq_recip a ha haUnit hself
7106 · rintro ⟨_haRec, hbId⟩
7107 have hbRec := hallRec b hb hbUnit
7108 have hself :
7109 RatioOrbit.crossEq (orbitDirection b hb)
7110 (RatioOrbit.recip (orbitDirection b hb)) :=
7111 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hbId) hbRec
7112 exact orbitDirection_nonunit_not_crossEq_recip b hb hbUnit hself
7113
7114theorem PRCCharacterOrbitProductIdentityIdentity
7115 {χ : RatioOrbit → RatioOrbit}
7116 (hχ : PRCRatioCharacter χ)
7117 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7118 {a b p : DistinctionNat}
7119 (ha : a ≠ DistinctionNat.zero) (hb : b ≠ DistinctionNat.zero)
7120 (hp : p ≠ DistinctionNat.zero)
7121 (hmul : a * b = p)
7122 (haId : PRCCharacterOrbitDirectionIdentity χ a ha)
7123 (hbId : PRCCharacterOrbitDirectionIdentity χ b hb) :
7124 PRCCharacterOrbitDirectionIdentity χ p hp := by
7125 unfold PRCCharacterOrbitDirectionIdentity at *
7126 exact RatioOrbit.crossEq_trans
7127 (hcompat a b p ha hb hp hmul)
7128 (RatioOrbit.crossEq_trans
7129 (hχ.multiplicative (orbitDirection a ha) (orbitDirection b hb))
7130 (RatioOrbit.crossEq_trans
7131 (ratioOrbit_mul_congr haId hbId)
7132 (RatioOrbit.crossEq_symm
7133 (orbitDirection_mul_crossEq a b p ha hb hp hmul))))
7134
7135theorem PRCCharacterOrbitProductReciprocalReciprocal
7136 {χ : RatioOrbit → RatioOrbit}
7137 (hχ : PRCRatioCharacter χ)
7138 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7139 {a b p : DistinctionNat}
7140 (ha : a ≠ DistinctionNat.zero) (hb : b ≠ DistinctionNat.zero)
7141 (hp : p ≠ DistinctionNat.zero)
7142 (hmul : a * b = p)
7143 (haRec : PRCCharacterOrbitDirectionReciprocal χ a ha)
7144 (hbRec : PRCCharacterOrbitDirectionReciprocal χ b hb) :
7145 PRCCharacterOrbitDirectionReciprocal χ p hp := by
7146 unfold PRCCharacterOrbitDirectionReciprocal at *
7147 exact RatioOrbit.crossEq_trans
7148 (hcompat a b p ha hb hp hmul)
7149 (RatioOrbit.crossEq_trans
7150 (hχ.multiplicative (orbitDirection a ha) (orbitDirection b hb))
7151 (RatioOrbit.crossEq_trans
7152 (ratioOrbit_mul_congr haRec hbRec)
7153 (RatioOrbit.crossEq_trans
7154 (ratioOrbit_mul_recip_recip_crossEq_recip_mul
7155 (orbitDirection a ha) (orbitDirection b hb))
7156 (ratioOrbit_recip_congr
7157 (RatioOrbit.crossEq_symm
7158 (orbitDirection_mul_crossEq a b p ha hb hp hmul))))))
7159
7160theorem PRCCharacterNonunitOrbitAllIdentity_of_all_prime_identity
7161 {χ : RatioOrbit → RatioOrbit}
7162 (hχ : PRCRatioCharacter χ)
7163 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7164 (hprimeId : ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
7165 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) :
7166 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
7167 ¬ DistinctionNat.unit p →
7168 PRCCharacterOrbitDirectionIdentity χ p hp := by
7169 intro p hp hunit
7170 let P : Nat → Prop := fun n =>
7171 ∀ q : DistinctionNat, q.toNat = n →
7172 (hq : q ≠ DistinctionNat.zero) →
7173 ¬ DistinctionNat.unit q →
7174 PRCCharacterOrbitDirectionIdentity χ q hq
7175 have hP : ∀ n : Nat, (∀ m : Nat, m < n → P m) → P n := by
7176 intro n ih q hqNat hq0 hqUnit
7177 by_cases hqPrime : DistinctionNat.primeOrbit q
7178 · simpa [PRCCharacterOrbitDirectionIdentity, primeDirection]
7179 using hprimeId q hqPrime
7180 · have hfac : DistinctionNat.nontrivialFactorization q := by
7181 by_contra hnotFac
7182 exact hqPrime ⟨hq0, hqUnit, hnotFac⟩
7183 rcases hfac with ⟨a, b, ha0, hb0, haUnit, hbUnit, hmul⟩
7184 have hmulNat : a.toNat * b.toNat = n := by
7185 have hnat := congrArg DistinctionNat.toNat hmul
7186 rw [DistinctionNat.toNat_mul, hqNat] at hnat
7187 exact hnat
7188 have haNat0 : a.toNat ≠ 0 := by
7189 intro hz
7190 apply ha0
7191 apply DistinctionNat.toNat_inj
7192 rw [hz, DistinctionNat.toNat_zero]
7193 have hbNat0 : b.toNat ≠ 0 := by
7194 intro hz
7195 apply hb0
7196 apply DistinctionNat.toNat_inj
7197 rw [hz, DistinctionNat.toNat_zero]
7198 have haNat1 : a.toNat ≠ 1 := by
7199 intro hone
7200 exact haUnit ((DistinctionNat.unit_iff_toNat_eq_one a).mpr hone)
7201 have hbNat1 : b.toNat ≠ 1 := by
7202 intro hone
7203 exact hbUnit ((DistinctionNat.unit_iff_toNat_eq_one b).mpr hone)
7204 have haPos : 0 < a.toNat := by omega
7205 have hbPos : 0 < b.toNat := by omega
7206 have haGtOne : 1 < a.toNat := by omega
7207 have hbGtOne : 1 < b.toNat := by omega
7208 have ha_lt : a.toNat < n := by
7209 calc
7210 a.toNat = a.toNat * 1 := by rw [Nat.mul_one]
7211 _ < a.toNat * b.toNat :=
7212 Nat.mul_lt_mul_of_pos_left hbGtOne haPos
7213 _ = n := hmulNat
7214 have hb_lt : b.toNat < n := by
7215 calc
7216 b.toNat = 1 * b.toNat := by rw [Nat.one_mul]
7217 _ < a.toNat * b.toNat :=
7218 Nat.mul_lt_mul_of_pos_right haGtOne hbPos
7219 _ = n := hmulNat
7220 have haId : PRCCharacterOrbitDirectionIdentity χ a ha0 :=
7221 ih a.toNat ha_lt a rfl ha0 haUnit
7222 have hbId : PRCCharacterOrbitDirectionIdentity χ b hb0 :=
7223 ih b.toNat hb_lt b rfl hb0 hbUnit
7224 exact PRCCharacterOrbitProductIdentityIdentity hχ hcompat
7225 ha0 hb0 hq0 hmul haId hbId
7226 have hmain : P p.toNat :=
7227 Nat.strong_induction_on (p := P) p.toNat hP
7228 exact hmain p rfl hp hunit
7229
7230theorem PRCCharacterNonunitOrbitAllReciprocal_of_all_prime_reciprocal
7231 {χ : RatioOrbit → RatioOrbit}
7232 (hχ : PRCRatioCharacter χ)
7233 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7234 (hprimeRec : ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
7235 RatioOrbit.crossEq (χ (primeDirection p hp))
7236 (RatioOrbit.recip (primeDirection p hp))) :
7237 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
7238 ¬ DistinctionNat.unit p →
7239 PRCCharacterOrbitDirectionReciprocal χ p hp := by
7240 intro p hp hunit
7241 let P : Nat → Prop := fun n =>
7242 ∀ q : DistinctionNat, q.toNat = n →
7243 (hq : q ≠ DistinctionNat.zero) →
7244 ¬ DistinctionNat.unit q →
7245 PRCCharacterOrbitDirectionReciprocal χ q hq
7246 have hP : ∀ n : Nat, (∀ m : Nat, m < n → P m) → P n := by
7247 intro n ih q hqNat hq0 hqUnit
7248 by_cases hqPrime : DistinctionNat.primeOrbit q
7249 · simpa [PRCCharacterOrbitDirectionReciprocal, primeDirection]
7250 using hprimeRec q hqPrime
7251 · have hfac : DistinctionNat.nontrivialFactorization q := by
7252 by_contra hnotFac
7253 exact hqPrime ⟨hq0, hqUnit, hnotFac⟩
7254 rcases hfac with ⟨a, b, ha0, hb0, haUnit, hbUnit, hmul⟩
7255 have hmulNat : a.toNat * b.toNat = n := by
7256 have hnat := congrArg DistinctionNat.toNat hmul
7257 rw [DistinctionNat.toNat_mul, hqNat] at hnat
7258 exact hnat
7259 have haNat0 : a.toNat ≠ 0 := by
7260 intro hz
7261 apply ha0
7262 apply DistinctionNat.toNat_inj
7263 rw [hz, DistinctionNat.toNat_zero]
7264 have hbNat0 : b.toNat ≠ 0 := by
7265 intro hz
7266 apply hb0
7267 apply DistinctionNat.toNat_inj
7268 rw [hz, DistinctionNat.toNat_zero]
7269 have haNat1 : a.toNat ≠ 1 := by
7270 intro hone
7271 exact haUnit ((DistinctionNat.unit_iff_toNat_eq_one a).mpr hone)
7272 have hbNat1 : b.toNat ≠ 1 := by
7273 intro hone
7274 exact hbUnit ((DistinctionNat.unit_iff_toNat_eq_one b).mpr hone)
7275 have haPos : 0 < a.toNat := by omega
7276 have hbPos : 0 < b.toNat := by omega
7277 have haGtOne : 1 < a.toNat := by omega
7278 have hbGtOne : 1 < b.toNat := by omega
7279 have ha_lt : a.toNat < n := by
7280 calc
7281 a.toNat = a.toNat * 1 := by rw [Nat.mul_one]
7282 _ < a.toNat * b.toNat :=
7283 Nat.mul_lt_mul_of_pos_left hbGtOne haPos
7284 _ = n := hmulNat
7285 have hb_lt : b.toNat < n := by
7286 calc
7287 b.toNat = 1 * b.toNat := by rw [Nat.one_mul]
7288 _ < a.toNat * b.toNat :=
7289 Nat.mul_lt_mul_of_pos_right haGtOne hbPos
7290 _ = n := hmulNat
7291 have haRec : PRCCharacterOrbitDirectionReciprocal χ a ha0 :=
7292 ih a.toNat ha_lt a rfl ha0 haUnit
7293 have hbRec : PRCCharacterOrbitDirectionReciprocal χ b hb0 :=
7294 ih b.toNat hb_lt b rfl hb0 hbUnit
7295 exact PRCCharacterOrbitProductReciprocalReciprocal hχ hcompat
7296 ha0 hb0 hq0 hmul haRec hbRec
7297 have hmain : P p.toNat :=
7298 Nat.strong_induction_on (p := P) p.toNat hP
7299 exact hmain p rfl hp hunit
7300
7301theorem PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
7302 {χ : RatioOrbit → RatioOrbit}
7303 (hχ : PRCRatioCharacter χ)
7304 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7305 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ) :
7306 PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness χ := by
7307 intro hmixed
7308 by_contra hnoPrimeId
7309 have hprimeRec :
7310 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
7311 RatioOrbit.crossEq (χ (primeDirection p hp))
7312 (RatioOrbit.recip (primeDirection p hp)) := by
7313 intro p hp
7314 rcases hprimeLocal p hp with hpId | hpRec
7315 · exact False.elim (hnoPrimeId ⟨p, hp, hpId⟩)
7316 · exact hpRec
7317 rcases hmixed.1 with ⟨p, hp, hpUnit, hpId⟩
7318 have hpRec : PRCCharacterOrbitDirectionReciprocal χ p hp :=
7319 PRCCharacterNonunitOrbitAllReciprocal_of_all_prime_reciprocal
7320 hχ hcompat hprimeRec p hp hpUnit
7321 have hself :
7322 RatioOrbit.crossEq (orbitDirection p hp)
7323 (RatioOrbit.recip (orbitDirection p hp)) :=
7324 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
7325 exact orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself
7326
7327theorem PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness_of_prime_local
7328 {χ : RatioOrbit → RatioOrbit}
7329 (hχ : PRCRatioCharacter χ)
7330 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7331 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ) :
7332 PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness χ := by
7333 intro hmixed
7334 by_contra hnoPrimeRec
7335 have hprimeId :
7336 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
7337 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp) := by
7338 intro p hp
7339 rcases hprimeLocal p hp with hpId | hpRec
7340 · exact hpId
7341 · exact False.elim (hnoPrimeRec ⟨p, hp, hpRec⟩)
7342 rcases hmixed.2 with ⟨r, hr, hrUnit, hrRec⟩
7343 have hrId : PRCCharacterOrbitDirectionIdentity χ r hr :=
7344 PRCCharacterNonunitOrbitAllIdentity_of_all_prime_identity
7345 hχ hcompat hprimeId r hr hrUnit
7346 have hself :
7347 RatioOrbit.crossEq (orbitDirection r hr)
7348 (RatioOrbit.recip (orbitDirection r hr)) :=
7349 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
7350 exact orbitDirection_nonunit_not_crossEq_recip r hr hrUnit hself
7351
7352theorem PRCCharacterNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
7353 {χ : RatioOrbit → RatioOrbit}
7354 (hχ : PRCRatioCharacter χ)
7355 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7356 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ)
7357 {p : DistinctionNat} {hp : p ≠ DistinctionNat.zero}
7358 (hpUnit : ¬ DistinctionNat.unit p)
7359 (hpId : PRCCharacterOrbitDirectionIdentity χ p hp) :
7360 ∃ q : DistinctionNat, ∃ hq : DistinctionNat.primeOrbit q,
7361 RatioOrbit.crossEq (χ (primeDirection q hq)) (primeDirection q hq) := by
7362 by_contra hnoPrimeId
7363 have hprimeRec :
7364 ∀ q : DistinctionNat, ∀ hq : DistinctionNat.primeOrbit q,
7365 RatioOrbit.crossEq (χ (primeDirection q hq))
7366 (RatioOrbit.recip (primeDirection q hq)) := by
7367 intro q hq
7368 rcases hprimeLocal q hq with hqId | hqRec
7369 · exact False.elim (hnoPrimeId ⟨q, hq, hqId⟩)
7370 · exact hqRec
7371 have hpRec : PRCCharacterOrbitDirectionReciprocal χ p hp :=
7372 PRCCharacterNonunitOrbitAllReciprocal_of_all_prime_reciprocal
7373 hχ hcompat hprimeRec p hp hpUnit
7374 have hself :
7375 RatioOrbit.crossEq (orbitDirection p hp)
7376 (RatioOrbit.recip (orbitDirection p hp)) :=
7377 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
7378 exact orbitDirection_nonunit_not_crossEq_recip p hp hpUnit hself
7379
7380theorem PRCCharacterPrimeIdentityWitnessGlobalizesNonunit_of_no_mixed_prime_witnesses
7381 {χ : RatioOrbit → RatioOrbit}
7382 (hχ : PRCRatioCharacter χ)
7383 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7384 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ)
7385 (hnomix : PRCCharacterNoMixedPrimeWitnesses χ) :
7386 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ := by
7387 intro p hp hpId r hr hrUnit
7388 have hprimeId :
7389 ∀ s : DistinctionNat, ∀ hs : DistinctionNat.primeOrbit s,
7390 RatioOrbit.crossEq (χ (primeDirection s hs)) (primeDirection s hs) := by
7391 intro s hs
7392 rcases hprimeLocal s hs with hsId | hsRec
7393 · exact hsId
7394 · exact False.elim (hnomix ⟨⟨p, hp, hpId⟩, ⟨s, hs, hsRec⟩⟩)
7395 exact PRCCharacterNonunitOrbitAllIdentity_of_all_prime_identity
7396 hχ hcompat hprimeId r hr hrUnit
7397
7398theorem PRCCharacterNoMixedPrimeWitnesses_of_prime_identity_witness_globalizes
7399 {χ : RatioOrbit → RatioOrbit}
7400 (hglobal : PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ) :
7401 PRCCharacterNoMixedPrimeWitnesses χ := by
7402 rintro ⟨hid, hrec⟩
7403 rcases hid with ⟨p, hp, hpId⟩
7404 rcases hrec with ⟨r, hr, hrRec⟩
7405 have hrIdOrbit :
7406 PRCCharacterOrbitDirectionIdentity χ r hr.1 :=
7407 hglobal p hp hpId r hr.1 hr.2.1
7408 have hrId :
7409 RatioOrbit.crossEq (χ (primeDirection r hr)) (primeDirection r hr) := by
7410 simpa [primeDirection, PRCCharacterOrbitDirectionIdentity] using hrIdOrbit
7411 have hself :
7412 RatioOrbit.crossEq (primeDirection r hr)
7413 (RatioOrbit.recip (primeDirection r hr)) :=
7414 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
7415 exact primeDirection_not_crossEq_recip r hr hself
7416
7417theorem PRCCharacterPrimeIdentityRespectsComparableTrace_of_nonunit_identity_comparable_trace
7418 {χ : RatioOrbit → RatioOrbit}
7419 (hcomp : PRCCharacterNonunitIdentityRespectsComparableTrace χ) :
7420 PRCCharacterPrimeIdentityRespectsComparableTrace χ := by
7421 intro p hp r hr htrace hpId
7422 exact hcomp p hp.1 hp.2.1 r hr.1 hr.2.1 htrace hpId
7423
7424theorem PRCCharacterNonunitIdentityRespectsComparableTrace_of_prime_comparable
7425 {χ : RatioOrbit → RatioOrbit}
7426 (hχ : PRCRatioCharacter χ)
7427 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7428 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ)
7429 (hprimeComp : PRCCharacterPrimeIdentityRespectsComparableTrace χ) :
7430 PRCCharacterNonunitIdentityRespectsComparableTrace χ := by
7431 intro p hp hpUnit r hr hrUnit _htrace hpId
7432 rcases PRCCharacterNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
7433 hχ hcompat hprimeLocal hpUnit hpId with
7434 ⟨q, hq, hqId⟩
7435 have hprimeId :
7436 ∀ s : DistinctionNat, ∀ hs : DistinctionNat.primeOrbit s,
7437 RatioOrbit.crossEq (χ (primeDirection s hs)) (primeDirection s hs) := by
7438 intro s hs
7439 exact hprimeComp q hq s hs (orbitPositionTrace_comparable q s) hqId
7440 exact PRCCharacterNonunitOrbitAllIdentity_of_all_prime_identity
7441 hχ hcompat hprimeId r hr hrUnit
7442
7443theorem PRCCharacterOrbitProductLocalOrientationPropagates_of_display_compatible_nomix
7444 {χ : RatioOrbit → RatioOrbit}
7445 (hχ : PRCRatioCharacter χ)
7446 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7447 (hnomix : PRCCharacterOrbitProductNoMixedOrientation χ) :
7448 PRCCharacterOrbitProductLocalOrientationPropagates χ := by
7449 intro a b p ha hb haUnit hbUnit hp hpUnit hmul haLocal hbLocal
7450 rcases haLocal with haId | haRec
7451 · rcases hbLocal with hbId | hbRec
7452 · exact Or.inl
7453 (PRCCharacterOrbitProductIdentityIdentity hχ hcompat
7454 ha hb hp hmul haId hbId)
7455 · exact False.elim
7456 ((hnomix a b p ha hb haUnit hbUnit hp hpUnit hmul).1
7457 ⟨haId, hbRec⟩)
7458 · rcases hbLocal with hbId | hbRec
7459 · exact False.elim
7460 ((hnomix a b p ha hb haUnit hbUnit hp hpUnit hmul).2
7461 ⟨haRec, hbId⟩)
7462 · exact Or.inr
7463 (PRCCharacterOrbitProductReciprocalReciprocal hχ hcompat
7464 ha hb hp hmul haRec hbRec)
7465
7466theorem PRCCharacterNonunitOrbitLocalOrientation_of_prime_and_product_local
7467 {χ : RatioOrbit → RatioOrbit}
7468 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ)
7469 (hprod : PRCCharacterOrbitProductLocalOrientationPropagates χ) :
7470 PRCCharacterNonunitOrbitLocalOrientation χ := by
7471 intro p hp hunit
7472 let P : Nat → Prop := fun n =>
7473 ∀ q : DistinctionNat, q.toNat = n →
7474 (hq : q ≠ DistinctionNat.zero) →
7475 ¬ DistinctionNat.unit q →
7476 PRCCharacterOrbitDirectionIdentity χ q hq ∨
7477 PRCCharacterOrbitDirectionReciprocal χ q hq
7478 have hP : ∀ n : Nat, (∀ m : Nat, m < n → P m) → P n := by
7479 intro n ih q hqNat hq0 hqUnit
7480 by_cases hqPrime : DistinctionNat.primeOrbit q
7481 · simpa [primeDirection] using hprimeLocal q hqPrime
7482 · have hfac : DistinctionNat.nontrivialFactorization q := by
7483 by_contra hnotFac
7484 exact hqPrime ⟨hq0, hqUnit, hnotFac⟩
7485 rcases hfac with ⟨a, b, ha0, hb0, haUnit, hbUnit, hmul⟩
7486 have hmulNat : a.toNat * b.toNat = n := by
7487 have hnat := congrArg DistinctionNat.toNat hmul
7488 rw [DistinctionNat.toNat_mul, hqNat] at hnat
7489 exact hnat
7490 have haNat0 : a.toNat ≠ 0 := by
7491 intro hz
7492 apply ha0
7493 apply DistinctionNat.toNat_inj
7494 rw [hz, DistinctionNat.toNat_zero]
7495 have hbNat0 : b.toNat ≠ 0 := by
7496 intro hz
7497 apply hb0
7498 apply DistinctionNat.toNat_inj
7499 rw [hz, DistinctionNat.toNat_zero]
7500 have haNat1 : a.toNat ≠ 1 := by
7501 intro hone
7502 exact haUnit ((DistinctionNat.unit_iff_toNat_eq_one a).mpr hone)
7503 have hbNat1 : b.toNat ≠ 1 := by
7504 intro hone
7505 exact hbUnit ((DistinctionNat.unit_iff_toNat_eq_one b).mpr hone)
7506 have haPos : 0 < a.toNat := by omega
7507 have hbPos : 0 < b.toNat := by omega
7508 have haGtOne : 1 < a.toNat := by omega
7509 have hbGtOne : 1 < b.toNat := by omega
7510 have ha_lt : a.toNat < n := by
7511 calc
7512 a.toNat = a.toNat * 1 := by rw [Nat.mul_one]
7513 _ < a.toNat * b.toNat :=
7514 Nat.mul_lt_mul_of_pos_left hbGtOne haPos
7515 _ = n := hmulNat
7516 have hb_lt : b.toNat < n := by
7517 calc
7518 b.toNat = 1 * b.toNat := by rw [Nat.one_mul]
7519 _ < a.toNat * b.toNat :=
7520 Nat.mul_lt_mul_of_pos_right haGtOne hbPos
7521 _ = n := hmulNat
7522 have haLocal :
7523 PRCCharacterOrbitDirectionIdentity χ a ha0 ∨
7524 PRCCharacterOrbitDirectionReciprocal χ a ha0 :=
7525 ih a.toNat ha_lt a rfl ha0 haUnit
7526 have hbLocal :
7527 PRCCharacterOrbitDirectionIdentity χ b hb0 ∨
7528 PRCCharacterOrbitDirectionReciprocal χ b hb0 :=
7529 ih b.toNat hb_lt b rfl hb0 hbUnit
7530 exact hprod a b q ha0 hb0 haUnit hbUnit hq0 hqUnit hmul
7531 haLocal hbLocal
7532 have hmain : P p.toNat :=
7533 Nat.strong_induction_on (p := P) p.toNat hP
7534 exact hmain p rfl hp hunit
7535
7536/-- Adjacent nonunit orbit steps cannot mix identity on one side with reciprocal
7537orientation on the other. This is the prime-floor version of the no-mixed
7538orientation law. -/
7539def PRCCharacterPrimeFloorNoAdjacentMixedOrientation
7540 (χ : RatioOrbit → RatioOrbit) : Prop :=
7541 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
7542 ¬ DistinctionNat.unit p →
7543 (¬ (PRCCharacterOrbitDirectionIdentity χ p hp ∧
7544 PRCCharacterOrbitDirectionReciprocal χ
7545 (DistinctionNat.succ p) (orbit_succ_ne_zero p))) ∧
7546 (¬ (PRCCharacterOrbitDirectionReciprocal χ p hp ∧
7547 PRCCharacterOrbitDirectionIdentity χ
7548 (DistinctionNat.succ p) (orbit_succ_ne_zero p)))
7549
7550theorem PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_nonunit_coherent
7551 {χ : RatioOrbit → RatioOrbit}
7552 (hcoh : PRCCharacterNonunitOrbitOrientationCoherent χ) :
7553 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ := by
7554 intro p hp hunit
7555 have hsuccUnit :
7556 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7557 orbit_succ_not_unit_of_nonzero_not_unit p hp hunit
7558 rcases hcoh with hallId | hallRec
7559 · constructor
7560 · rintro ⟨_hpId, hsuccRec⟩
7561 have hsuccId :=
7562 hallId (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit
7563 have hself :
7564 RatioOrbit.crossEq
7565 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))
7566 (RatioOrbit.recip
7567 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))) :=
7568 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hsuccId) hsuccRec
7569 exact orbitDirection_nonunit_not_crossEq_recip
7570 (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit hself
7571 · rintro ⟨hpRec, _hsuccId⟩
7572 have hpId := hallId p hp hunit
7573 have hself :
7574 RatioOrbit.crossEq (orbitDirection p hp)
7575 (RatioOrbit.recip (orbitDirection p hp)) :=
7576 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
7577 exact orbitDirection_nonunit_not_crossEq_recip p hp hunit hself
7578 · constructor
7579 · rintro ⟨hpId, _hsuccRec⟩
7580 have hpRec := hallRec p hp hunit
7581 have hself :
7582 RatioOrbit.crossEq (orbitDirection p hp)
7583 (RatioOrbit.recip (orbitDirection p hp)) :=
7584 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
7585 exact orbitDirection_nonunit_not_crossEq_recip p hp hunit hself
7586 · rintro ⟨_hpRec, hsuccId⟩
7587 have hsuccRec :=
7588 hallRec (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit
7589 have hself :
7590 RatioOrbit.crossEq
7591 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))
7592 (RatioOrbit.recip
7593 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))) :=
7594 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hsuccId) hsuccRec
7595 exact orbitDirection_nonunit_not_crossEq_recip
7596 (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit hself
7597
7598/-- Forward one-step identity transport above the unit floor. The unit orbit is
7599self-reciprocal, so forcing transport out of `1` would wrongly exclude the
7600globally reciprocal character branch. -/
7601def PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep
7602 (χ : RatioOrbit → RatioOrbit) : Prop :=
7603 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
7604 ¬ DistinctionNat.unit p →
7605 PRCCharacterOrbitDirectionIdentity χ p hp →
7606 PRCCharacterOrbitDirectionIdentity χ
7607 (DistinctionNat.succ p) (orbit_succ_ne_zero p)
7608
7609/-- Backward one-step identity transport above the unit floor. -/
7610def PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep
7611 (χ : RatioOrbit → RatioOrbit) : Prop :=
7612 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
7613 ¬ DistinctionNat.unit p →
7614 PRCCharacterOrbitDirectionIdentity χ
7615 (DistinctionNat.succ p) (orbit_succ_ne_zero p) →
7616 PRCCharacterOrbitDirectionIdentity χ p hp
7617
7618/-- The corrected successor-transport rule: identity orientation transports
7619along one δ-successor step only once the path is above the self-reciprocal unit
7620orbit. This is the exact layer needed for prime-to-prime trace coherence. -/
7621def PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport
7622 (χ : RatioOrbit → RatioOrbit) : Prop :=
7623 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep χ ∧
7624 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep χ
7625
7626theorem PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep_of_local_adjacent_nomix
7627 {χ : RatioOrbit → RatioOrbit}
7628 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7629 (hnomix : PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ) :
7630 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep χ := by
7631 intro p hp hunit hpId
7632 have hsuccUnit :
7633 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7634 orbit_succ_not_unit_of_nonzero_not_unit p hp hunit
7635 rcases hlocal (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit
7636 with hsuccId | hsuccRec
7637 · exact hsuccId
7638 · exact False.elim ((hnomix p hp hunit).1 ⟨hpId, hsuccRec⟩)
7639
7640theorem PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep_of_local_adjacent_nomix
7641 {χ : RatioOrbit → RatioOrbit}
7642 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7643 (hnomix : PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ) :
7644 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep χ := by
7645 intro p hp hunit hsuccId
7646 rcases hlocal p hp hunit with hpId | hpRec
7647 · exact hpId
7648 · exact False.elim ((hnomix p hp hunit).2 ⟨hpRec, hsuccId⟩)
7649
7650theorem PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_local_adjacent_nomix
7651 {χ : RatioOrbit → RatioOrbit}
7652 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7653 (hnomix : PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ) :
7654 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ :=
7655 ⟨PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep_of_local_adjacent_nomix
7656 hlocal hnomix,
7657 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep_of_local_adjacent_nomix
7658 hlocal hnomix⟩
7659
7660theorem PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_successor_transport
7661 {χ : RatioOrbit → RatioOrbit}
7662 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7663 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ := by
7664 intro p hp hunit
7665 have hsuccUnit :
7666 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7667 orbit_succ_not_unit_of_nonzero_not_unit p hp hunit
7668 constructor
7669 · rintro ⟨hpId, hsuccRec⟩
7670 have hsuccId :
7671 PRCCharacterOrbitDirectionIdentity χ
7672 (DistinctionNat.succ p) (orbit_succ_ne_zero p) :=
7673 hstep.1 p hp hunit hpId
7674 have hself :
7675 RatioOrbit.crossEq
7676 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))
7677 (RatioOrbit.recip
7678 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))) :=
7679 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hsuccId) hsuccRec
7680 exact orbitDirection_nonunit_not_crossEq_recip
7681 (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit hself
7682 · rintro ⟨hpRec, hsuccId⟩
7683 have hpId : PRCCharacterOrbitDirectionIdentity χ p hp :=
7684 hstep.2 p hp hunit hsuccId
7685 have hself :
7686 RatioOrbit.crossEq (orbitDirection p hp)
7687 (RatioOrbit.recip (orbitDirection p hp)) :=
7688 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) hpRec
7689 exact orbitDirection_nonunit_not_crossEq_recip p hp hunit hself
7690
7691theorem PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_iff_local_adjacent_nomix
7692 {χ : RatioOrbit → RatioOrbit}
7693 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ) :
7694 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ ↔
7695 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ :=
7696 ⟨PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_successor_transport,
7697 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_local_adjacent_nomix
7698 hlocal⟩
7699
7700theorem PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_nonunit_identity_comparable_trace
7701 {χ : RatioOrbit → RatioOrbit}
7702 (hcomp : PRCCharacterNonunitIdentityRespectsComparableTrace χ) :
7703 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ := by
7704 constructor
7705 · intro p hp hunit hpId
7706 have hsuccUnit :
7707 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7708 orbit_succ_not_unit_of_nonzero_not_unit p hp hunit
7709 exact hcomp p hp hunit (DistinctionNat.succ p)
7710 (orbit_succ_ne_zero p) hsuccUnit
7711 (orbitPositionTrace_comparable p (DistinctionNat.succ p)) hpId
7712 · intro p hp hunit hsuccId
7713 have hsuccUnit :
7714 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7715 orbit_succ_not_unit_of_nonzero_not_unit p hp hunit
7716 exact hcomp (DistinctionNat.succ p) (orbit_succ_ne_zero p)
7717 hsuccUnit p hp hunit
7718 (orbitPositionTrace_comparable (DistinctionNat.succ p) p) hsuccId
7719
7720theorem PRCCharacterOrbitIdentity_of_le_of_prime_floor_successor_transport
7721 {χ : RatioOrbit → RatioOrbit}
7722 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7723 ∀ {p r : DistinctionNat}, (hp : p ≠ DistinctionNat.zero) →
7724 ¬ DistinctionNat.unit p →
7725 (hr : r ≠ DistinctionNat.zero) →
7726 p.toNat ≤ r.toNat →
7727 PRCCharacterOrbitDirectionIdentity χ p hp →
7728 PRCCharacterOrbitDirectionIdentity χ r hr := by
7729 intro p r
7730 revert p
7731 induction r with
7732 | zero =>
7733 intro p hp _hpu hr _hle _hpId
7734 exact False.elim (hr rfl)
7735 | succ n ih =>
7736 intro p hp hpu _hr hle hpId
7737 by_cases hEq : p = DistinctionNat.succ n
7738 · subst p
7739 simpa [PRCCharacterOrbitDirectionIdentity, orbitDirection] using hpId
7740 · have hle_n : p.toNat ≤ n.toNat := by
7741 have hnotNat : p.toNat ≠ Nat.succ n.toNat := by
7742 intro hnat
7743 apply hEq
7744 apply DistinctionNat.toNat_inj
7745 simpa [DistinctionNat.toNat_succ] using hnat
7746 rw [DistinctionNat.toNat_succ] at hle
7747 omega
7748 have hpNat0 : p.toNat ≠ 0 := by
7749 intro hz
7750 apply hp
7751 apply DistinctionNat.toNat_inj
7752 rw [hz, DistinctionNat.toNat_zero]
7753 have hpNat1 : p.toNat ≠ 1 := by
7754 intro hone
7755 exact hpu ((DistinctionNat.unit_iff_toNat_eq_one p).mpr hone)
7756 have hn0 : n ≠ DistinctionNat.zero := by
7757 intro hn
7758 have hnNat : n.toNat = 0 := by rw [hn, DistinctionNat.toNat_zero]
7759 omega
7760 have hnunit : ¬ DistinctionNat.unit n := by
7761 intro hunit
7762 have hnNat1 : n.toNat = 1 :=
7763 (DistinctionNat.unit_iff_toNat_eq_one n).mp hunit
7764 omega
7765 have hnId :
7766 PRCCharacterOrbitDirectionIdentity χ n hn0 :=
7767 ih hp hpu hn0 hle_n hpId
7768 exact hstep.1 n hn0 hnunit hnId
7769
7770theorem PRCCharacterOrbitIdentity_of_ge_of_prime_floor_successor_transport
7771 {χ : RatioOrbit → RatioOrbit}
7772 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7773 ∀ {p r : DistinctionNat}, (hp : p ≠ DistinctionNat.zero) →
7774 ¬ DistinctionNat.unit p →
7775 (hr : r ≠ DistinctionNat.zero) →
7776 ¬ DistinctionNat.unit r →
7777 r.toNat ≤ p.toNat →
7778 PRCCharacterOrbitDirectionIdentity χ p hp →
7779 PRCCharacterOrbitDirectionIdentity χ r hr := by
7780 intro p r
7781 revert r
7782 induction p with
7783 | zero =>
7784 intro r hp _hpu _hr _hru _hge _hpId
7785 exact False.elim (hp rfl)
7786 | succ n ih =>
7787 intro r _hp _hpu hr hru hge hpId
7788 by_cases hEq : r = DistinctionNat.succ n
7789 · subst r
7790 simpa [PRCCharacterOrbitDirectionIdentity, orbitDirection] using hpId
7791 · have hge_n : r.toNat ≤ n.toNat := by
7792 have hnotNat : r.toNat ≠ Nat.succ n.toNat := by
7793 intro hnat
7794 apply hEq
7795 apply DistinctionNat.toNat_inj
7796 simpa [DistinctionNat.toNat_succ] using hnat
7797 rw [DistinctionNat.toNat_succ] at hge
7798 omega
7799 have hrNat0 : r.toNat ≠ 0 := by
7800 intro hz
7801 apply hr
7802 apply DistinctionNat.toNat_inj
7803 rw [hz, DistinctionNat.toNat_zero]
7804 have hrNat1 : r.toNat ≠ 1 := by
7805 intro hone
7806 exact hru ((DistinctionNat.unit_iff_toNat_eq_one r).mpr hone)
7807 have hn0 : n ≠ DistinctionNat.zero := by
7808 intro hn
7809 have hnNat : n.toNat = 0 := by rw [hn, DistinctionNat.toNat_zero]
7810 omega
7811 have hnunit : ¬ DistinctionNat.unit n := by
7812 intro hunit
7813 have hnNat1 : n.toNat = 1 :=
7814 (DistinctionNat.unit_iff_toNat_eq_one n).mp hunit
7815 omega
7816 have hsuccId :
7817 PRCCharacterOrbitDirectionIdentity χ
7818 (DistinctionNat.succ n) (orbit_succ_ne_zero n) := by
7819 simpa [PRCCharacterOrbitDirectionIdentity, orbitDirection] using hpId
7820 have hnId :
7821 PRCCharacterOrbitDirectionIdentity χ n hn0 :=
7822 hstep.2 n hn0 hnunit hsuccId
7823 exact ih hn0 hnunit hr hru hge_n hnId
7824
7825theorem PRCCharacterPrimeIdentityRespectsComparableTrace_of_prime_floor_successor_transport
7826 {χ : RatioOrbit → RatioOrbit}
7827 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7828 PRCCharacterPrimeIdentityRespectsComparableTrace χ := by
7829 intro p hp r hr _hcomp hpId
7830 have hpOrbitId :
7831 PRCCharacterOrbitDirectionIdentity χ p hp.1 := by
7832 exact hpId
7833 rcases Nat.le_total p.toNat r.toNat with hle | hge
7834 · exact PRCCharacterOrbitIdentity_of_le_of_prime_floor_successor_transport
7835 hstep hp.1 hp.2.1 hr.1 hle hpOrbitId
7836 · exact PRCCharacterOrbitIdentity_of_ge_of_prime_floor_successor_transport
7837 hstep hp.1 hp.2.1 hr.1 hr.2.1 hge hpOrbitId
7838
7839theorem PRCCharacterNonunitIdentityRespectsComparableTrace_of_prime_floor_successor_transport
7840 {χ : RatioOrbit → RatioOrbit}
7841 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7842 PRCCharacterNonunitIdentityRespectsComparableTrace χ := by
7843 intro p hp hpUnit r hr hrUnit _hcomp hpId
7844 rcases Nat.le_total p.toNat r.toNat with hle | hge
7845 · exact PRCCharacterOrbitIdentity_of_le_of_prime_floor_successor_transport
7846 hstep hp hpUnit hr hle hpId
7847 · exact PRCCharacterOrbitIdentity_of_ge_of_prime_floor_successor_transport
7848 hstep hp hpUnit hr hrUnit hge hpId
7849
7850theorem PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_prime_floor_successor_transport
7851 {χ : RatioOrbit → RatioOrbit}
7852 (hlocal : PRCCharacterNonunitOrbitLocalOrientation χ)
7853 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7854 PRCCharacterNonunitOrbitOrientationCoherent χ := by
7855 by_cases hId :
7856 ∃ p : DistinctionNat, ∃ hp : p ≠ DistinctionNat.zero,
7857 ∃ hunit : ¬ DistinctionNat.unit p,
7858 PRCCharacterOrbitDirectionIdentity χ p hp
7859 · rcases hId with ⟨p0, hp0, hunit0, hp0Id⟩
7860 exact Or.inl (by
7861 intro q hq hqUnit
7862 rcases Nat.le_total p0.toNat q.toNat with hle | hge
7863 · exact PRCCharacterOrbitIdentity_of_le_of_prime_floor_successor_transport
7864 hstep hp0 hunit0 hq hle hp0Id
7865 · exact PRCCharacterOrbitIdentity_of_ge_of_prime_floor_successor_transport
7866 hstep hp0 hunit0 hq hqUnit hge hp0Id)
7867 · exact Or.inr (by
7868 intro q hq hqUnit
7869 rcases hlocal q hq hqUnit with hqId | hqRec
7870 · exact False.elim (hId ⟨q, hq, hqUnit, hqId⟩)
7871 · exact hqRec)
7872
7873theorem PRCCharacterPrimeIdentityWitnessGlobalizesNonunit_of_prime_floor_successor_transport
7874 {χ : RatioOrbit → RatioOrbit}
7875 (hstep : PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ) :
7876 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ := by
7877 intro p hp hpId r hr hrUnit
7878 have hpOrbitId :
7879 PRCCharacterOrbitDirectionIdentity χ p hp.1 := by
7880 simpa [PRCCharacterOrbitDirectionIdentity, primeDirection] using hpId
7881 rcases Nat.le_total p.toNat r.toNat with hle | hge
7882 · exact PRCCharacterOrbitIdentity_of_le_of_prime_floor_successor_transport
7883 hstep hp.1 hp.2.1 hr hle hpOrbitId
7884 · exact PRCCharacterOrbitIdentity_of_ge_of_prime_floor_successor_transport
7885 hstep hp.1 hp.2.1 hr hrUnit hge hpOrbitId
7886
7887theorem PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_prime_identity_witness_globalizes
7888 {χ : RatioOrbit → RatioOrbit}
7889 (hχ : PRCRatioCharacter χ)
7890 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
7891 (hprimeLocal : PRCCharacterPrimeLocalOrientation χ)
7892 (hglobal : PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ) :
7893 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ := by
7894 constructor
7895 · intro p hp hpUnit hpId
7896 have hsuccUnit :
7897 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7898 orbit_succ_not_unit_of_nonzero_not_unit p hp hpUnit
7899 rcases PRCCharacterNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
7900 hχ hcompat hprimeLocal hpUnit hpId with
7901 ⟨q, hq, hqId⟩
7902 exact hglobal q hq hqId
7903 (DistinctionNat.succ p) (orbit_succ_ne_zero p) hsuccUnit
7904 · intro p hp hpUnit hsuccId
7905 have hsuccUnit :
7906 ¬ DistinctionNat.unit (DistinctionNat.succ p) :=
7907 orbit_succ_not_unit_of_nonzero_not_unit p hp hpUnit
7908 rcases PRCCharacterNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
7909 hχ hcompat hprimeLocal hsuccUnit hsuccId with
7910 ⟨q, hq, hqId⟩
7911 exact hglobal q hq hqId p hp hpUnit
7912
7913theorem PRCCharacterOrbitIdentityRespectsSuccessorStep_of_transport
7914 {χ : RatioOrbit → RatioOrbit}
7915 (htransport : PRCCharacterOrbitIdentitySuccessorTransport χ) :
7916 PRCCharacterOrbitIdentityRespectsSuccessorStep χ := by
7917 intro p hp
7918 exact ⟨htransport.1 p hp, htransport.2 p hp⟩
7919
7920theorem PRCCharacterOrbitIdentity_one_of_identity
7921 {χ : RatioOrbit → RatioOrbit}
7922 (hstep : PRCCharacterOrbitIdentityRespectsSuccessorStep χ)
7923 {p : DistinctionNat} (hp : p ≠ DistinctionNat.zero)
7924 (hpId : PRCCharacterOrbitDirectionIdentity χ p hp) :
7925 PRCCharacterOrbitDirectionIdentity χ
7926 DistinctionNat.one DistinctionNat.one_ne_zero := by
7927 induction p with
7928 | zero =>
7929 exact False.elim (hp rfl)
7930 | succ n ih =>
7931 cases n with
7932 | zero =>
7933 exact hpId
7934 | succ m =>
7935 have hn : DistinctionNat.succ m ≠ DistinctionNat.zero :=
7936 orbit_succ_ne_zero m
7937 have hnId :
7938 PRCCharacterOrbitDirectionIdentity χ
7939 (DistinctionNat.succ m) hn :=
7940 (hstep (DistinctionNat.succ m) hn).2 hpId
7941 exact ih hn hnId
7942
7943theorem PRCCharacterOrbitIdentity_of_one
7944 {χ : RatioOrbit → RatioOrbit}
7945 (hstep : PRCCharacterOrbitIdentityRespectsSuccessorStep χ)
7946 {r : DistinctionNat} (hr : r ≠ DistinctionNat.zero)
7947 (honeId : PRCCharacterOrbitDirectionIdentity χ
7948 DistinctionNat.one DistinctionNat.one_ne_zero) :
7949 PRCCharacterOrbitDirectionIdentity χ r hr := by
7950 induction r with
7951 | zero =>
7952 exact False.elim (hr rfl)
7953 | succ n ih =>
7954 cases n with
7955 | zero =>
7956 exact honeId
7957 | succ m =>
7958 have hn : DistinctionNat.succ m ≠ DistinctionNat.zero :=
7959 orbit_succ_ne_zero m
7960 have hnId :
7961 PRCCharacterOrbitDirectionIdentity χ
7962 (DistinctionNat.succ m) hn :=
7963 ih hn
7964 exact (hstep (DistinctionNat.succ m) hn).1 hnId
7965
7966theorem PRCCharacterPrimeIdentityRespectsComparableTrace_of_successor_step
7967 {χ : RatioOrbit → RatioOrbit}
7968 (hstep : PRCCharacterOrbitIdentityRespectsSuccessorStep χ) :
7969 PRCCharacterPrimeIdentityRespectsComparableTrace χ := by
7970 intro p hp r hr _hcomp hpId
7971 have hpOrbitId :
7972 PRCCharacterOrbitDirectionIdentity χ p hp.1 := by
7973 exact hpId
7974 have honeId :
7975 PRCCharacterOrbitDirectionIdentity χ
7976 DistinctionNat.one DistinctionNat.one_ne_zero :=
7977 PRCCharacterOrbitIdentity_one_of_identity hstep hp.1 hpOrbitId
7978 exact PRCCharacterOrbitIdentity_of_one hstep hr.1 honeId
7979
7980theorem PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_comparable_trace
7981 {χ : RatioOrbit → RatioOrbit}
7982 (hcomp : PRCCharacterPrimeIdentityRespectsComparableTrace χ) :
7983 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ := by
7984 intro p hp r hr _T _hpT _hrT hpId
7985 exact hcomp p hp r hr (orbitPositionTrace_comparable p r) hpId
7986
7987theorem PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_common_trace_extension
7988 {χ : RatioOrbit → RatioOrbit}
7989 (hcommon : PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ) :
7990 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ := by
7991 intro p hp r hr hpT hrT hpId
7992 exact hcommon p hp r hr (orbitPositionTrace (p + r)) hpT hrT hpId
7993
7994theorem PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_canonical_add_trace
7995 {χ : RatioOrbit → RatioOrbit}
7996 (hcanon : PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ) :
7997 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ := by
7998 intro p hp r hr _T _hpT _hrT hpId
7999 exact hcanon p hp r hr
8000 (orbitPositionTrace_add_extends_left p r)
8001 (orbitPositionTrace_add_extends_right p r) hpId
8002
8003theorem PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_iff_common_trace_extension
8004 {χ : RatioOrbit → RatioOrbit} :
8005 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ ↔
8006 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ :=
8007 ⟨PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_canonical_add_trace,
8008 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_common_trace_extension⟩
8009
8010theorem PRCCharacterPrimeIdentityRespectsTraceConnected_of_common_trace_extension
8011 {χ : RatioOrbit → RatioOrbit}
8012 (hcommon : PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ) :
8013 PRCCharacterPrimeIdentityRespectsTraceConnected χ := by
8014 intro p hp r hr hconn hpId
8015 rcases hconn with ⟨T, hpT, hrT⟩
8016 exact hcommon p hp r hr T hpT hrT hpId
8017
8018theorem PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_trace_connected
8019 {χ : RatioOrbit → RatioOrbit}
8020 (hconn : PRCCharacterPrimeIdentityRespectsTraceConnected χ) :
8021 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ := by
8022 intro p hp r hr _hpT _hrT hpId
8023 exact hconn p hp r hr (PRCPrimeAxisTraceConnected_proved p hp r hr) hpId
8024
8025theorem PRCCharacterPrimeIdentityRespectsTraceConnected_of_canonical_add_trace
8026 {χ : RatioOrbit → RatioOrbit}
8027 (hcanon : PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ) :
8028 PRCCharacterPrimeIdentityRespectsTraceConnected χ :=
8029 PRCCharacterPrimeIdentityRespectsTraceConnected_of_common_trace_extension
8030 (PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_canonical_add_trace
8031 hcanon)
8032
8033theorem PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_iff_trace_connected
8034 {χ : RatioOrbit → RatioOrbit} :
8035 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ ↔
8036 PRCCharacterPrimeIdentityRespectsTraceConnected χ :=
8037 ⟨PRCCharacterPrimeIdentityRespectsTraceConnected_of_canonical_add_trace,
8038 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_trace_connected⟩
8039
8040theorem PRCCharacterPrimeIdentityBranchUniform_of_trace_coherence
8041 {χ : RatioOrbit → RatioOrbit}
8042 (hcoh : PRCCharacterPrimeIdentityTraceCoherent χ) :
8043 PRCCharacterPrimeIdentityBranchUniform χ := by
8044 intro p hp r hr hpId
8045 exact hcoh p hp r hr hpId
8046
8047theorem PRCCharacterPrimeIdentityTraceCoherent_of_branch_uniform
8048 {χ : RatioOrbit → RatioOrbit}
8049 (huniform : PRCCharacterPrimeIdentityBranchUniform χ) :
8050 PRCCharacterPrimeIdentityTraceCoherent χ := by
8051 intro p hp r hr hpId
8052 exact huniform p hp r hr hpId
8053
8054theorem PRCCharacterPrimeIdentityBranchUniform_iff_trace_coherence
8055 {χ : RatioOrbit → RatioOrbit} :
8056 PRCCharacterPrimeIdentityBranchUniform χ ↔
8057 PRCCharacterPrimeIdentityTraceCoherent χ :=
8058 ⟨PRCCharacterPrimeIdentityTraceCoherent_of_branch_uniform,
8059 PRCCharacterPrimeIdentityBranchUniform_of_trace_coherence⟩
8060
8061theorem PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_branch_uniform
8062 {χ : RatioOrbit → RatioOrbit}
8063 (huniform : PRCCharacterPrimeIdentityBranchUniform χ) :
8064 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ := by
8065 intro p hp r hr _hpT _hrT hpId
8066 exact huniform p hp r hr hpId
8067
8068theorem PRCCharacterPrimeIdentityBranchUniform_of_canonical_add_trace
8069 {χ : RatioOrbit → RatioOrbit}
8070 (hcanon : PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ) :
8071 PRCCharacterPrimeIdentityBranchUniform χ := by
8072 intro p hp r hr hpId
8073 exact hcanon p hp r hr
8074 (orbitPositionTrace_add_extends_left p r)
8075 (orbitPositionTrace_add_extends_right p r) hpId
8076
8077theorem PRCCharacterPrimeIdentityBranchUniform_iff_canonical_add_trace
8078 {χ : RatioOrbit → RatioOrbit} :
8079 PRCCharacterPrimeIdentityBranchUniform χ ↔
8080 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ :=
8081 ⟨PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_branch_uniform,
8082 PRCCharacterPrimeIdentityBranchUniform_of_canonical_add_trace⟩
8083
8084theorem PRCCharacterPrimeIdentityRespectsComparableTrace_of_trace_coherence
8085 {χ : RatioOrbit → RatioOrbit}
8086 (hcoh : PRCCharacterPrimeIdentityTraceCoherent χ) :
8087 PRCCharacterPrimeIdentityRespectsComparableTrace χ := by
8088 intro p hp r hr _hcomp hpId
8089 exact hcoh p hp r hr hpId
8090
8091theorem PRCCharacterPrimeIdentityTraceCoherent_of_comparable_trace
8092 {χ : RatioOrbit → RatioOrbit}
8093 (hcomp : PRCCharacterPrimeIdentityRespectsComparableTrace χ) :
8094 PRCCharacterPrimeIdentityTraceCoherent χ := by
8095 intro p hp r hr hpId
8096 exact hcomp p hp r hr (orbitPositionTrace_comparable p r) hpId
8097
8098theorem PRCCharacterPrimeIdentityRespectsComparableTrace_iff_trace_coherence
8099 {χ : RatioOrbit → RatioOrbit} :
8100 PRCCharacterPrimeIdentityRespectsComparableTrace χ ↔
8101 PRCCharacterPrimeIdentityTraceCoherent χ :=
8102 ⟨PRCCharacterPrimeIdentityTraceCoherent_of_comparable_trace,
8103 PRCCharacterPrimeIdentityRespectsComparableTrace_of_trace_coherence⟩
8104
8105theorem PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_trace_coherence
8106 {χ : RatioOrbit → RatioOrbit}
8107 (hcoh : PRCCharacterPrimeIdentityTraceCoherent χ) :
8108 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ :=
8109 PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_comparable_trace
8110 (PRCCharacterPrimeIdentityRespectsComparableTrace_of_trace_coherence hcoh)
8111
8112theorem PRCCharacterPrimeIdentityTraceCoherent_of_common_trace_extension
8113 {χ : RatioOrbit → RatioOrbit}
8114 (hcommon : PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ) :
8115 PRCCharacterPrimeIdentityTraceCoherent χ := by
8116 intro p hp r hr hpId
8117 exact hcommon p hp r hr (orbitPositionTrace (p + r))
8118 (orbitPositionTrace_add_extends_left p r)
8119 (orbitPositionTrace_add_extends_right p r) hpId
8120
8121theorem PRCCharacterPrimeIdentityRespectsCommonTraceExtension_iff_trace_coherence
8122 {χ : RatioOrbit → RatioOrbit} :
8123 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ ↔
8124 PRCCharacterPrimeIdentityTraceCoherent χ :=
8125 ⟨PRCCharacterPrimeIdentityTraceCoherent_of_common_trace_extension,
8126 PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_trace_coherence⟩
8127
8128theorem PRCCharacterPrimeIdentityRespectsTraceConnected_of_trace_coherence
8129 {χ : RatioOrbit → RatioOrbit}
8130 (hcoh : PRCCharacterPrimeIdentityTraceCoherent χ) :
8131 PRCCharacterPrimeIdentityRespectsTraceConnected χ := by
8132 intro p hp r hr _hconn hpId
8133 exact hcoh p hp r hr hpId
8134
8135theorem PRCCharacterPrimeIdentityTraceCoherent_of_trace_connected
8136 {χ : RatioOrbit → RatioOrbit}
8137 (hconn : PRCCharacterPrimeIdentityRespectsTraceConnected χ) :
8138 PRCCharacterPrimeIdentityTraceCoherent χ := by
8139 intro p hp r hr hpId
8140 exact hconn p hp r hr (PRCPrimeAxisTraceConnected_proved p hp r hr) hpId
8141
8142theorem PRCCharacterPrimeIdentityRespectsTraceConnected_iff_trace_coherence
8143 {χ : RatioOrbit → RatioOrbit} :
8144 PRCCharacterPrimeIdentityRespectsTraceConnected χ ↔
8145 PRCCharacterPrimeIdentityTraceCoherent χ :=
8146 ⟨PRCCharacterPrimeIdentityTraceCoherent_of_trace_connected,
8147 PRCCharacterPrimeIdentityRespectsTraceConnected_of_trace_coherence⟩
8148
8149/-- Local orientation target: prime cost calibration must at least orient each
8150prime axis as identity or reciprocal. -/
8151def PRCPrimeCalibrationForcesLocalPrimeOrientationTarget : Prop :=
8152 ∀ χ : RatioOrbit → RatioOrbit,
8153 PRCRatioCharacter χ →
8154 PRCCharacterPrimeDirectionCalibrated χ →
8155 PRCCharacterPrimeLocalOrientation χ
8156
8157theorem PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved :
8158 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget := by
8159 intro χ hχ hprime p hp
8160 have hq : (primeDirection p hp).toRat ≠ 0 :=
8161 primeDirection_toRat_ne_zero p hp
8162 have hχq : (χ (primeDirection p hp)).toRat ≠ 0 :=
8163 hχ.nonzero_preserving hq
8164 have hcal :
8165 RatioOrbit.crossEq
8166 (onRatioOrbit (χ (primeDirection p hp)))
8167 (onRatioOrbit (primeDirection p hp)) := by
8168 simpa [costFromCharacter] using hprime p hp
8169 exact jcost_eq_forces_same_or_reciprocal hχq hq hcal
8170
8171/-- No-mixing target: prime cost calibration must forbid independent mixed
8172identity/reciprocal choices on different prime axes. -/
8173def PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget : Prop :=
8174 ∀ χ : RatioOrbit → RatioOrbit,
8175 PRCRatioCharacter χ →
8176 PRCCharacterPrimeDirectionCalibrated χ →
8177 PRCCharacterNoMixedPrimeOrientation χ
8178
8179/-- Existential prime-witness form of no-mixed prime orientation. -/
8180def PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget : Prop :=
8181 ∀ χ : RatioOrbit → RatioOrbit,
8182 PRCRatioCharacter χ →
8183 PRCCharacterPrimeDirectionCalibrated χ →
8184 PRCCharacterNoMixedPrimeWitnesses χ
8185
8186/-- One-sided prime witness-exclusion target: prime calibration should forbid any
8187reciprocal-oriented prime witness once an identity-oriented prime witness
8188exists. -/
8189def PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget :
8190 Prop :=
8191 ∀ χ : RatioOrbit → RatioOrbit,
8192 PRCRatioCharacter χ →
8193 PRCCharacterPrimeDirectionCalibrated χ →
8194 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ
8195
8196/-- Reciprocal-witness globalization target: if prime calibration allows one
8197reciprocal-oriented native prime witness, reciprocal orientation must hold on
8198every native prime axis. -/
8199def PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget : Prop :=
8200 ∀ χ : RatioOrbit → RatioOrbit,
8201 PRCRatioCharacter χ →
8202 PRCCharacterPrimeDirectionCalibrated χ →
8203 PRCCharacterPrimeReciprocalWitnessGlobalizes χ
8204
8205/-- Distinguished-axis converse half of reciprocal globalization: any
8206reciprocal-oriented native prime axis must force the orbit-`2` prime axis onto
8207the reciprocal branch. -/
8208def PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget :
8209 Prop :=
8210 ∀ χ : RatioOrbit → RatioOrbit,
8211 PRCRatioCharacter χ →
8212 PRCCharacterPrimeDirectionCalibrated χ →
8213 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal χ
8214
8215/-- Distinguished-axis reciprocal branch target: once calibration puts the
8216orbit-`2` prime axis on the reciprocal branch, every native prime axis must be
8217on the reciprocal branch. -/
8218def PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget : Prop :=
8219 ∀ χ : RatioOrbit → RatioOrbit,
8220 PRCRatioCharacter χ →
8221 PRCCharacterPrimeDirectionCalibrated χ →
8222 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ
8223
8224/-- Split target for reciprocal globalization: arbitrary prime-to-two
8225reciprocal transport plus two-to-all reciprocal transport. -/
8226def PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget :
8227 Prop :=
8228 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget ∧
8229 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
8230
8231/-- Exact remaining trace-coherence target: prime calibration must make identity
8232orientation propagate across prime axes. -/
8233def PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget : Prop :=
8234 ∀ χ : RatioOrbit → RatioOrbit,
8235 PRCRatioCharacter χ →
8236 PRCCharacterPrimeDirectionCalibrated χ →
8237 PRCCharacterPrimeIdentityTraceCoherent χ
8238
8239/-- Trace-free branch-uniformity target: prime calibration should force every
8240identity-oriented native prime axis to put all native prime axes on the identity
8241branch. -/
8242def PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget : Prop :=
8243 ∀ χ : RatioOrbit → RatioOrbit,
8244 PRCRatioCharacter χ →
8245 PRCCharacterPrimeDirectionCalibrated χ →
8246 PRCCharacterPrimeIdentityBranchUniform χ
8247
8248/-- Smaller trace-transport target: prime calibration should make identity
8249orientation invariant along native prime-axis trace connections. The structural
8250connectivity of the prime-axis trace graph is already proved above. -/
8251def PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget : Prop :=
8252 ∀ χ : RatioOrbit → RatioOrbit,
8253 PRCRatioCharacter χ →
8254 PRCCharacterPrimeDirectionCalibrated χ →
8255 PRCCharacterPrimeIdentityRespectsTraceConnected χ
8256
8257/-- Sharper form of the trace-transport target: prime calibration must force
8258identity orientation to respect an explicitly witnessed common finite δ-trace
8259extension. -/
8260def PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget : Prop :=
8261 ∀ χ : RatioOrbit → RatioOrbit,
8262 PRCRatioCharacter χ →
8263 PRCCharacterPrimeDirectionCalibrated χ →
8264 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ
8265
8266/-- Canonical-add-trace target: prime calibration should force identity
8267orientation to transport through the concrete finite common extension
8268`orbitPositionTrace (p + r)`. -/
8269def PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget : Prop :=
8270 ∀ χ : RatioOrbit → RatioOrbit,
8271 PRCRatioCharacter χ →
8272 PRCCharacterPrimeDirectionCalibrated χ →
8273 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ
8274
8275/-- Sharper trace-order target: prime calibration should force identity
8276orientation to respect comparability of finite δ-orbit traces. -/
8277def PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget : Prop :=
8278 ∀ χ : RatioOrbit → RatioOrbit,
8279 PRCRatioCharacter χ →
8280 PRCCharacterPrimeDirectionCalibrated χ →
8281 PRCCharacterPrimeIdentityRespectsComparableTrace χ
8282
8283/-- Sharper one-step target: prime calibration should force identity orientation
8284to be invariant under one successor step on every nonzero orbit direction. -/
8285def PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget : Prop :=
8286 ∀ χ : RatioOrbit → RatioOrbit,
8287 PRCRatioCharacter χ →
8288 PRCCharacterPrimeDirectionCalibrated χ →
8289 PRCCharacterOrbitIdentityRespectsSuccessorStep χ
8290
8291/-- Sharper directional successor target: prime calibration should force both
8292one-step directions separately. This exposes the exact additive-trace
8293compatibility missing from the purely multiplicative ratio-character laws. -/
8294def PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget : Prop :=
8295 ∀ χ : RatioOrbit → RatioOrbit,
8296 PRCRatioCharacter χ →
8297 PRCCharacterPrimeDirectionCalibrated χ →
8298 PRCCharacterOrbitIdentitySuccessorTransport χ
8299
8300/-- Sharper additive successor target: prime calibration should force the ratio
8301character to respect the additive successor operation on nonzero orbit
8302directions. -/
8303def PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget : Prop :=
8304 ∀ χ : RatioOrbit → RatioOrbit,
8305 PRCRatioCharacter χ →
8306 PRCCharacterPrimeDirectionCalibrated χ →
8307 PRCCharacterOrbitSuccessorAdditiveCompatible χ
8308
8309/-- Corrected successor target after the reciprocal-character check: prime
8310calibration should force successor transport above the self-reciprocal unit
8311floor, not additive transport out of the unit orbit itself. -/
8312def PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget : Prop :=
8313 ∀ χ : RatioOrbit → RatioOrbit,
8314 PRCRatioCharacter χ →
8315 PRCCharacterPrimeDirectionCalibrated χ →
8316 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ
8317
8318/-- Witness-globalized form of the prime-floor blocker: if any calibrated prime
8319axis picks identity, then every nonunit orbit direction must pick identity. -/
8320def PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget :
8321 Prop :=
8322 ∀ χ : RatioOrbit → RatioOrbit,
8323 PRCRatioCharacter χ →
8324 PRCCharacterPrimeDirectionCalibrated χ →
8325 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ
8326
8327/-- Forward half of the corrected prime-floor successor target. -/
8328def PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget :
8329 Prop :=
8330 ∀ χ : RatioOrbit → RatioOrbit,
8331 PRCRatioCharacter χ →
8332 PRCCharacterPrimeDirectionCalibrated χ →
8333 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep χ
8334
8335/-- Backward half of the corrected prime-floor successor target. -/
8336def PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget :
8337 Prop :=
8338 ∀ χ : RatioOrbit → RatioOrbit,
8339 PRCRatioCharacter χ →
8340 PRCCharacterPrimeDirectionCalibrated χ →
8341 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep χ
8342
8343/-- Split one-step form of the corrected prime-floor successor target. -/
8344def PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :
8345 Prop :=
8346 PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget ∧
8347 PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget
8348
8349/-- First component of the prime-floor successor blocker: prime calibration
8350should orient every nonunit orbit direction, not only prime axes. -/
8351def PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget : Prop :=
8352 ∀ χ : RatioOrbit → RatioOrbit,
8353 PRCRatioCharacter χ →
8354 PRCCharacterPrimeDirectionCalibrated χ →
8355 PRCCharacterNonunitOrbitLocalOrientation χ
8356
8357/-- Sharper source of nonunit local orientation: prime calibration should force
8358the product-factor propagation step that carries prime-axis orientation through
8359composite orbit positions. -/
8360def PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget : Prop :=
8361 ∀ χ : RatioOrbit → RatioOrbit,
8362 PRCRatioCharacter χ →
8363 PRCCharacterPrimeDirectionCalibrated χ →
8364 PRCCharacterOrbitProductLocalOrientationPropagates χ
8365
8366/-- Product-display compatibility target: prime calibration should force the
8367character to respect the native equality between product orbit directions and
8368ratio products of factor directions. -/
8369def PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget : Prop :=
8370 ∀ χ : RatioOrbit → RatioOrbit,
8371 PRCRatioCharacter χ →
8372 PRCCharacterPrimeDirectionCalibrated χ →
8373 PRCCharacterOrbitProductDisplayCompatible χ
8374
8375/-- Sharper source of product-display compatibility: prime calibration should
8376force the raw character to respect ratio cross-equivalence. Without this,
8377`χ : RatioOrbit → RatioOrbit` is not yet a quotient-native character. -/
8378def PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget : Prop :=
8379 ∀ χ : RatioOrbit → RatioOrbit,
8380 PRCRatioCharacter χ →
8381 PRCCharacterPrimeDirectionCalibrated χ →
8382 PRCCharacterRespectsCrossEq χ
8383
8384theorem PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_of_normalizeRatio_canonical
8385 (hcanon : PRCNormalizeRatioCanonicalTarget) :
8386 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget := by
8387 intro χ hχ _hprime
8388 exact PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical hχ hcanon
8389
8390theorem PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_of_reduced_signCanonical_unique
8391 (hunique : PRCReducedSignCanonicalRatioUniqueTarget) :
8392 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget :=
8393 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_of_normalizeRatio_canonical
8394 (PRCNormalizeRatioCanonicalTarget_of_reduced_signCanonical_unique hunique)
8395
8396theorem PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_proved :
8397 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget :=
8398 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_of_reduced_signCanonical_unique
8399 PRCReducedSignCanonicalRatioUniqueTarget_proved
8400
8401/-- Product no-mixing target: prime calibration should rule out mixed
8402identity/reciprocal factor orientations under native multiplication. -/
8403def PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget : Prop :=
8404 ∀ χ : RatioOrbit → RatioOrbit,
8405 PRCRatioCharacter χ →
8406 PRCCharacterPrimeDirectionCalibrated χ →
8407 PRCCharacterOrbitProductNoMixedOrientation χ
8408
8409/-- Stronger replacement for product no-mixing: prime calibration should force a
8410single coherent orientation across all nonunit orbit directions. Once this is
8411available, mixed product factors are impossible by nonunit non-self-reciprocity. -/
8412def PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget : Prop :=
8413 ∀ χ : RatioOrbit → RatioOrbit,
8414 PRCRatioCharacter χ →
8415 PRCCharacterPrimeDirectionCalibrated χ →
8416 PRCCharacterNonunitOrbitOrientationCoherent χ
8417
8418/-- Branch-coupling target: prime calibration should prevent any identity-oriented
8419nonunit direction from coexisting with any reciprocal-oriented nonunit direction.
8420Together with local nonunit orientation this is exactly global nonunit
8421orientation coherence. -/
8422def PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget : Prop :=
8423 ∀ χ : RatioOrbit → RatioOrbit,
8424 PRCRatioCharacter χ →
8425 PRCCharacterPrimeDirectionCalibrated χ →
8426 PRCCharacterNoMixedNonunitOrbitOrientation χ
8427
8428/-- Positive transport form of the same branch-coupling blocker: if prime
8429calibration allows one nonunit direction to remain identity-oriented, that
8430identity branch must transport to every nonunit direction. -/
8431def PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget : Prop :=
8432 ∀ χ : RatioOrbit → RatioOrbit,
8433 PRCRatioCharacter χ →
8434 PRCCharacterPrimeDirectionCalibrated χ →
8435 PRCCharacterNonunitIdentityBranchTransport χ
8436
8437/-- Witness-globalization form of the same branch-coupling blocker: if prime
8438calibration permits any identity-oriented nonunit direction, that witness fixes
8439the identity branch globally. -/
8440def PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget : Prop :=
8441 ∀ χ : RatioOrbit → RatioOrbit,
8442 PRCRatioCharacter χ →
8443 PRCCharacterPrimeDirectionCalibrated χ →
8444 PRCCharacterNonunitIdentityWitnessGlobalizes χ
8445
8446/-- One-sided witness-exclusion target: prime calibration should make one
8447identity-oriented nonunit witness incompatible with every reciprocal-oriented
8448nonunit witness. This strips local orientation out of witness globalization. -/
8449def PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget :
8450 Prop :=
8451 ∀ χ : RatioOrbit → RatioOrbit,
8452 PRCRatioCharacter χ →
8453 PRCCharacterPrimeDirectionCalibrated χ →
8454 PRCCharacterNonunitIdentityWitnessExcludesReciprocal χ
8455
8456/-- Existential no-mixed-witness target: prime calibration should forbid the
8457coexistence of any identity-oriented nonunit witness and any reciprocal-oriented
8458nonunit witness. -/
8459def PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget : Prop :=
8460 ∀ χ : RatioOrbit → RatioOrbit,
8461 PRCRatioCharacter χ →
8462 PRCCharacterPrimeDirectionCalibrated χ →
8463 PRCCharacterNonunitNoMixedWitnesses χ
8464
8465/-- Composite bridge for the witness split: under prime calibration, prime
8466no-mixing should control arbitrary nonunit no-mixing. -/
8467def PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget :
8468 Prop :=
8469 ∀ χ : RatioOrbit → RatioOrbit,
8470 PRCRatioCharacter χ →
8471 PRCCharacterPrimeDirectionCalibrated χ →
8472 PRCCharacterPrimeWitnessesControlNonunitWitnesses χ
8473
8474/-- Reflection form of the composite bridge: mixed nonunit witnesses must reflect
8475down to mixed prime-axis witnesses. -/
8476def PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget :
8477 Prop :=
8478 ∀ χ : RatioOrbit → RatioOrbit,
8479 PRCRatioCharacter χ →
8480 PRCCharacterPrimeDirectionCalibrated χ →
8481 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses χ
8482
8483/-- Identity half of the mixed-context reflection target. -/
8484def PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget :
8485 Prop :=
8486 ∀ χ : RatioOrbit → RatioOrbit,
8487 PRCRatioCharacter χ →
8488 PRCCharacterPrimeDirectionCalibrated χ →
8489 PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness χ
8490
8491/-- Reciprocal half of the mixed-context reflection target. -/
8492def PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget :
8493 Prop :=
8494 ∀ χ : RatioOrbit → RatioOrbit,
8495 PRCRatioCharacter χ →
8496 PRCCharacterPrimeDirectionCalibrated χ →
8497 PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness χ
8498
8499/-- Split form of the mixed nonunit reflection target. -/
8500def PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget :
8501 Prop :=
8502 PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget ∧
8503 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget
8504
8505/-- Split form of the current no-mixed-witness blocker: first rule out mixed
8506prime witnesses, then prove that prime-witness control reaches nonunit
8507composites. -/
8508def PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget : Prop :=
8509 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ∧
8510 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget
8511
8512/-- Local-orientation plus one-sided witness exclusion is the split form of
8513witness globalization. -/
8514def PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget :
8515 Prop :=
8516 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8517 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget
8518
8519/-- Dual transport target: reciprocal orientation at one nonunit direction must
8520transport to every nonunit direction. -/
8521def PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget : Prop :=
8522 ∀ χ : RatioOrbit → RatioOrbit,
8523 PRCRatioCharacter χ →
8524 PRCCharacterPrimeDirectionCalibrated χ →
8525 PRCCharacterNonunitReciprocalBranchTransport χ
8526
8527/-- Split target for the two one-way nonunit branch transports. -/
8528def PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget : Prop :=
8529 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget ∧
8530 PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget
8531
8532/-- Trace-order sharpening of nonunit identity-branch transport: prime
8533calibration should force identity orientation to respect comparability of finite
8534δ-orbit traces on nonunit directions. -/
8535def PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget : Prop :=
8536 ∀ χ : RatioOrbit → RatioOrbit,
8537 PRCRatioCharacter χ →
8538 PRCCharacterPrimeDirectionCalibrated χ →
8539 PRCCharacterNonunitIdentityRespectsComparableTrace χ
8540
8541/-- Two-branch agreement target: prime calibration should force a nonunit branch
8542choice at one direction to agree with every other nonunit direction, for both
8543identity and reciprocal branches. -/
8544def PRCPrimeCalibrationForcesNonunitBranchAgreementTarget : Prop :=
8545 ∀ χ : RatioOrbit → RatioOrbit,
8546 PRCRatioCharacter χ →
8547 PRCCharacterPrimeDirectionCalibrated χ →
8548 PRCCharacterNonunitBranchAgreement χ
8549
8550/-- Local orientation plus two-branch agreement is the positive normal form of
8551the global nonunit branch-coupling blocker. -/
8552def PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget :
8553 Prop :=
8554 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8555 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget
8556
8557/-- Local orientation plus identity-branch transport is the minimal positive
8558normal form: reciprocal transport follows from these two facts. -/
8559def PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget :
8560 Prop :=
8561 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8562 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
8563
8564/-- Trace-layer version of the active local identity-transport target. The
8565identity-transport half is replaced by its equivalent finite δ-trace
8566comparability law. -/
8567def PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget :
8568 Prop :=
8569 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8570 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
8571
8572/-- Sharpened source of global nonunit coherence: first prove every nonunit orbit
8573direction has a local branch, then prove the cross-nonunit no-mixing law. -/
8574def PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget : Prop :=
8575 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8576 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
8577
8578/-- Product-layer sharpening of global nonunit coherence: local nonunit
8579orientation is already available, so the remaining branch-coupling obligation can
8580be carried by the product no-mixing law. -/
8581def PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget : Prop :=
8582 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8583 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
8584
8585theorem PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_coherent
8586 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8587 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget := by
8588 intro χ hχ hprime
8589 exact PRCCharacterNoMixedNonunitOrbitOrientation_of_coherent
8590 (hcoh χ hχ hprime)
8591
8592theorem PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_product_no_mixed
8593 (hprod : PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget) :
8594 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget := by
8595 intro χ hχ hprime
8596 exact PRCCharacterNoMixedNonunitOrbitOrientation_of_product_no_mixed
8597 (hprod χ hχ hprime)
8598
8599theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_no_mixed_nonunit
8600 (hnomix : PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget) :
8601 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget := by
8602 intro χ hχ hprime
8603 exact PRCCharacterOrbitProductNoMixedOrientation_of_no_mixed_nonunit
8604 (hnomix χ hχ hprime)
8605
8606theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_no_mixed_nonunit :
8607 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
8608 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget :=
8609 ⟨PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_product_no_mixed,
8610 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_no_mixed_nonunit⟩
8611
8612theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_branch_transport
8613 (htransport : PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget) :
8614 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget := by
8615 intro χ hχ hprime
8616 exact PRCCharacterOrbitProductNoMixedOrientation_of_identity_branch_transport
8617 (htransport χ hχ hprime)
8618
8619theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_comparable_trace
8620 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
8621 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget := by
8622 intro χ hχ hprime
8623 exact PRCCharacterNonunitIdentityBranchTransport_of_comparable_trace
8624 (hcomp χ hχ hprime)
8625
8626theorem PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_of_transport_pair
8627 (hpair : PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget) :
8628 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget := by
8629 intro χ hχ hprime
8630 exact PRCCharacterNonunitBranchAgreement_of_transport_pair
8631 ⟨hpair.1 χ hχ hprime, hpair.2 χ hχ hprime⟩
8632
8633theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_branch_agreement
8634 (hagree : PRCPrimeCalibrationForcesNonunitBranchAgreementTarget) :
8635 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget := by
8636 intro χ hχ hprime
8637 exact PRCCharacterNonunitIdentityBranchTransport_of_branch_agreement
8638 (hagree χ hχ hprime)
8639
8640theorem PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget_of_branch_agreement
8641 (hagree : PRCPrimeCalibrationForcesNonunitBranchAgreementTarget) :
8642 PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget := by
8643 intro χ hχ hprime
8644 exact PRCCharacterNonunitReciprocalBranchTransport_of_branch_agreement
8645 (hagree χ hχ hprime)
8646
8647theorem PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget_of_branch_agreement
8648 (hagree : PRCPrimeCalibrationForcesNonunitBranchAgreementTarget) :
8649 PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget :=
8650 ⟨PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_branch_agreement
8651 hagree,
8652 PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget_of_branch_agreement
8653 hagree⟩
8654
8655theorem PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_iff_transport_pair :
8656 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget ↔
8657 PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget :=
8658 ⟨PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget_of_branch_agreement,
8659 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_of_transport_pair⟩
8660
8661theorem PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_of_local_identity_transport
8662 (hsharp :
8663 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget) :
8664 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget := by
8665 intro χ hχ hprime
8666 exact PRCCharacterNonunitBranchAgreement_of_local_identity_branch_transport
8667 (hsharp.1 χ hχ hprime) (hsharp.2 χ hχ hprime)
8668
8669theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_of_local_branch_agreement
8670 (hsharp :
8671 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget) :
8672 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget :=
8673 ⟨hsharp.1,
8674 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_branch_agreement
8675 hsharp.2⟩
8676
8677theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_of_local_identity_transport
8678 (hsharp :
8679 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget) :
8680 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget :=
8681 ⟨hsharp.1,
8682 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_of_local_identity_transport
8683 hsharp⟩
8684
8685theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_iff_local_identity_transport :
8686 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget ↔
8687 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget :=
8688 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_of_local_branch_agreement,
8689 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_of_local_identity_transport⟩
8690
8691theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_of_local_identity_transport
8692 (hsharp :
8693 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget) :
8694 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget :=
8695 ⟨hsharp.1,
8696 (by
8697 intro χ hχ hprime
8698 exact PRCCharacterNonunitIdentityRespectsComparableTrace_of_branch_transport
8699 (hsharp.2 χ hχ hprime))⟩
8700
8701theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_of_local_comparable_trace
8702 (hsharp :
8703 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget) :
8704 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget :=
8705 ⟨hsharp.1,
8706 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_comparable_trace
8707 hsharp.2⟩
8708
8709theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_iff_local_comparable_trace :
8710 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget ↔
8711 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget :=
8712 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_of_local_identity_transport,
8713 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_of_local_comparable_trace⟩
8714
8715theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_of_local_product_no_mixed
8716 (hsharp : PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget) :
8717 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget :=
8718 ⟨hsharp.1,
8719 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_product_no_mixed
8720 hsharp.2⟩
8721
8722theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_product_no_mixed
8723 (hsharp : PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget) :
8724 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
8725 intro χ hχ hprime
8726 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_no_mixed
8727 (hsharp.1 χ hχ hprime)
8728 (PRCCharacterNoMixedNonunitOrbitOrientation_of_product_no_mixed
8729 (hsharp.2 χ hχ hprime))
8730
8731theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_of_coherent
8732 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8733 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget :=
8734 ⟨(by
8735 intro χ hχ hprime
8736 exact PRCCharacterNonunitOrbitLocalOrientation_of_coherent
8737 (hcoh χ hχ hprime)),
8738 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_coherent hcoh⟩
8739
8740theorem PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_of_coherent
8741 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8742 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget := by
8743 intro χ hχ hprime
8744 exact PRCCharacterNonunitBranchAgreement_of_coherent (hcoh χ hχ hprime)
8745
8746theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_of_coherent
8747 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8748 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget :=
8749 ⟨(by
8750 intro χ hχ hprime
8751 exact PRCCharacterNonunitOrbitLocalOrientation_of_coherent
8752 (hcoh χ hχ hprime)),
8753 PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_of_coherent hcoh⟩
8754
8755theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_branch_agreement
8756 (hsharp :
8757 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget) :
8758 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
8759 intro χ hχ hprime
8760 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_branch_agreement
8761 (hsharp.1 χ hχ hprime) (hsharp.2 χ hχ hprime)
8762
8763theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_local_branch_agreement :
8764 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
8765 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget :=
8766 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_of_coherent,
8767 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_branch_agreement⟩
8768
8769theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_no_mixed
8770 (hsharp : PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget) :
8771 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
8772 intro χ hχ hprime
8773 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_no_mixed
8774 (hsharp.1 χ hχ hprime) (hsharp.2 χ hχ hprime)
8775
8776theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_coherent
8777 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8778 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget := by
8779 intro χ hχ hprime
8780 exact PRCCharacterNonunitIdentityBranchTransport_of_coherent
8781 (hcoh χ hχ hprime)
8782
8783theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_local_no_mixed :
8784 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
8785 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget :=
8786 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_of_coherent,
8787 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_no_mixed⟩
8788
8789/-- Sharpened source of nonunit orientation coherence: local nonunit orientation
8790plus prime-floor successor transport force every nonunit orbit direction onto
8791one coherent identity/reciprocal branch. -/
8792def PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget : Prop :=
8793 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
8794 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
8795
8796theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_and_prime_floor_successor_transport
8797 (hsharp : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget) :
8798 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
8799 intro χ hχ hprime
8800 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_prime_floor_successor_transport
8801 (hsharp.1 χ hχ hprime) (hsharp.2 χ hχ hprime)
8802
8803theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_nonunit_coherent
8804 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8805 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget := by
8806 intro χ hχ hprime
8807 exact PRCCharacterOrbitProductNoMixedOrientation_of_nonunit_coherent
8808 (hcoh χ hχ hprime)
8809
8810theorem PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_nonunit_coherent
8811 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8812 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget := by
8813 intro χ hχ hprime
8814 exact PRCCharacterNonunitOrbitLocalOrientation_of_coherent
8815 (hcoh χ hχ hprime)
8816
8817theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_nonunit_coherent
8818 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8819 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
8820 intro χ hχ hprime
8821 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_local_adjacent_nomix
8822 (PRCCharacterNonunitOrbitLocalOrientation_of_coherent (hcoh χ hχ hprime))
8823 (PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_nonunit_coherent
8824 (hcoh χ hχ hprime))
8825
8826theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_floor_successor_transport
8827 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
8828 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget := by
8829 intro χ hχ hprime
8830 exact PRCCharacterNonunitIdentityRespectsComparableTrace_of_prime_floor_successor_transport
8831 (hstep χ hχ hprime)
8832
8833theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget_of_nonunit_coherent
8834 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
8835 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget :=
8836 ⟨PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_nonunit_coherent hcoh,
8837 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_nonunit_coherent hcoh⟩
8838
8839theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_sharpened :
8840 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
8841 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget :=
8842 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget_of_nonunit_coherent,
8843 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_and_prime_floor_successor_transport⟩
8844
8845theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_identity_comparable_trace
8846 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
8847 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
8848 intro χ hχ hprime
8849 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_nonunit_identity_comparable_trace
8850 (hcomp χ hχ hprime)
8851
8852theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_iff_prime_floor_successor_transport :
8853 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget ↔
8854 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget :=
8855 ⟨PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_identity_comparable_trace,
8856 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_floor_successor_transport⟩
8857
8858theorem PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget_of_successor_transport
8859 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
8860 PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget := by
8861 intro χ hχ hprime
8862 exact (hstep χ hχ hprime).1
8863
8864theorem PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget_of_successor_transport
8865 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
8866 PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget := by
8867 intro χ hχ hprime
8868 exact (hstep χ hχ hprime).2
8869
8870theorem PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_successor_transport
8871 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
8872 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
8873 ⟨PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget_of_successor_transport
8874 hstep,
8875 PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget_of_successor_transport
8876 hstep⟩
8877
8878theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_successor_step_pair
8879 (hpair :
8880 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget) :
8881 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
8882 intro χ hχ hprime
8883 exact ⟨hpair.1 χ hχ hprime, hpair.2 χ hχ hprime⟩
8884
8885theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_iff_successor_step_pair :
8886 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget ↔
8887 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
8888 ⟨PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_successor_transport,
8889 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_successor_step_pair⟩
8890
8891theorem PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_identity_comparable_trace
8892 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
8893 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
8894 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_successor_transport
8895 (PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_identity_comparable_trace
8896 hcomp)
8897
8898theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_successor_step_pair
8899 (hpair :
8900 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget) :
8901 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
8902 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_floor_successor_transport
8903 (PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_successor_step_pair
8904 hpair)
8905
8906theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_iff_successor_step_pair :
8907 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget ↔
8908 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
8909 ⟨PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_identity_comparable_trace,
8910 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_successor_step_pair⟩
8911
8912/-- Pass-45 sharpening of product-local orientation: same-orientation products
8913are algebraic and product-display compatibility is proved through canonical
8914normalization. The remaining product commitment is nonunit orientation
8915coherence, which implies product no-mixing. -/
8916def PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget : Prop :=
8917 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
8918
8919theorem PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_of_crossEq_respect
8920 (hrespect : PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget) :
8921 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget := by
8922 intro χ hχ hprime
8923 exact PRCCharacterOrbitProductDisplayCompatible_of_crossEq_respect
8924 (hrespect χ hχ hprime)
8925
8926theorem PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved :
8927 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget :=
8928 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_of_crossEq_respect
8929 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_proved
8930
8931theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_of_prime_floor_successor_transport
8932 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
8933 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget := by
8934 intro χ hχ hprime
8935 exact PRCCharacterPrimeIdentityWitnessGlobalizesNonunit_of_prime_floor_successor_transport
8936 (hstep χ hχ hprime)
8937
8938theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_prime_identity_witness_globalizes
8939 (hglobal :
8940 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget) :
8941 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
8942 intro χ hχ hprime
8943 exact
8944 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_prime_identity_witness_globalizes
8945 hχ
8946 (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
8947 χ hχ hprime)
8948 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
8949 (hglobal χ hχ hprime)
8950
8951theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_iff_prime_identity_witness_globalizes :
8952 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget ↔
8953 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget :=
8954 ⟨PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_of_prime_floor_successor_transport,
8955 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_prime_identity_witness_globalizes⟩
8956
8957theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_of_no_mixed_prime_witnesses
8958 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
8959 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget := by
8960 intro χ hχ hprime
8961 exact PRCCharacterPrimeIdentityWitnessGlobalizesNonunit_of_no_mixed_prime_witnesses
8962 hχ
8963 (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
8964 χ hχ hprime)
8965 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
8966 (hnomix χ hχ hprime)
8967
8968theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_identity_witness_globalizes
8969 (hglobal :
8970 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget) :
8971 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
8972 intro χ hχ hprime
8973 exact PRCCharacterNoMixedPrimeWitnesses_of_prime_identity_witness_globalizes
8974 (hglobal χ hχ hprime)
8975
8976theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_iff_no_mixed_prime_witnesses :
8977 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget ↔
8978 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget :=
8979 ⟨PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_identity_witness_globalizes,
8980 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_of_no_mixed_prime_witnesses⟩
8981
8982theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_product_no_mixed
8983 (hprod : PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget) :
8984 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
8985 intro χ hχ hprime
8986 have hprodLocal : PRCCharacterOrbitProductLocalOrientationPropagates χ :=
8987 PRCCharacterOrbitProductLocalOrientationPropagates_of_display_compatible_nomix
8988 hχ (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
8989 χ hχ hprime) (hprod χ hχ hprime)
8990 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_no_mixed
8991 (PRCCharacterNonunitOrbitLocalOrientation_of_prime_and_product_local
8992 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
8993 hprodLocal)
8994 (PRCCharacterNoMixedNonunitOrbitOrientation_of_product_no_mixed
8995 (hprod χ hχ hprime))
8996
8997theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_nonunit_coherent :
8998 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
8999 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget :=
9000 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_product_no_mixed,
9001 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_nonunit_coherent⟩
9002
9003theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_product_no_mixed
9004 (hprod : PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget) :
9005 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget :=
9006 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_coherent
9007 (PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_product_no_mixed
9008 hprod)
9009
9010theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_identity_branch_transport
9011 (htransport : PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget) :
9012 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget := by
9013 intro χ hχ hprime
9014 exact PRCCharacterNonunitIdentityWitnessGlobalizes_of_branch_transport
9015 (htransport χ hχ hprime)
9016
9017theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_identity_witness_globalizes
9018 (hwitness :
9019 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget) :
9020 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget := by
9021 intro χ hχ hprime
9022 exact PRCCharacterNonunitIdentityBranchTransport_of_witness_globalizes
9023 (hwitness χ hχ hprime)
9024
9025theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_iff_identity_branch_transport :
9026 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget ↔
9027 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget :=
9028 ⟨PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_identity_witness_globalizes,
9029 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_identity_branch_transport⟩
9030
9031theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_product_no_mixed
9032 (hprod : PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget) :
9033 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget :=
9034 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_identity_branch_transport
9035 (PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_product_no_mixed
9036 hprod)
9037
9038theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_witness_globalizes
9039 (hwitness :
9040 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget) :
9041 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget :=
9042 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_branch_transport
9043 (PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_identity_witness_globalizes
9044 hwitness)
9045
9046theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_witness_globalizes :
9047 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
9048 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget :=
9049 ⟨PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_product_no_mixed,
9050 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_witness_globalizes⟩
9051
9052theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_identity_witness_globalizes
9053 (hwitness :
9054 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget) :
9055 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget :=
9056 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_product_no_mixed
9057 (PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_witness_globalizes
9058 hwitness)
9059
9060theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_nonunit_coherent
9061 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
9062 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget := by
9063 intro χ hχ hprime
9064 exact PRCCharacterNonunitIdentityWitnessGlobalizes_of_coherent
9065 (hcoh χ hχ hprime)
9066
9067theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_identity_witness_globalizes :
9068 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
9069 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget :=
9070 ⟨PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_nonunit_coherent,
9071 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_identity_witness_globalizes⟩
9072
9073theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_of_no_mixed
9074 (hnomix : PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget) :
9075 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget := by
9076 intro χ hχ hprime
9077 exact PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_no_mixed
9078 (hnomix χ hχ hprime)
9079
9080theorem PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_identity_witness_excludes
9081 (hexcl :
9082 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget) :
9083 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget := by
9084 intro χ hχ hprime
9085 exact PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_witness_excludes
9086 (hexcl χ hχ hprime)
9087
9088theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_iff_no_mixed :
9089 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget ↔
9090 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget :=
9091 ⟨PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_identity_witness_excludes,
9092 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_of_no_mixed⟩
9093
9094theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_identity_witness_excludes
9095 (hexcl :
9096 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget) :
9097 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget := by
9098 intro χ hχ hprime
9099 exact PRCCharacterNonunitNoMixedWitnesses_of_identity_witness_excludes
9100 (hexcl χ hχ hprime)
9101
9102theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_of_no_mixed_witnesses
9103 (hnomix : PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget) :
9104 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget := by
9105 intro χ hχ hprime
9106 exact PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_no_mixed_witnesses
9107 (hnomix χ hχ hprime)
9108
9109theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_identity_witness_excludes :
9110 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget ↔
9111 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget :=
9112 ⟨PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_of_no_mixed_witnesses,
9113 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_identity_witness_excludes⟩
9114
9115theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_no_mixed_prime_orientation
9116 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget) :
9117 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
9118 intro χ hχ hprime
9119 exact PRCCharacterNoMixedPrimeWitnesses_of_no_mixed_prime_orientation
9120 (hnomix χ hχ hprime)
9121
9122theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_no_mixed_prime_witnesses
9123 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
9124 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget := by
9125 intro χ hχ hprime
9126 exact PRCCharacterNoMixedPrimeOrientation_of_no_mixed_prime_witnesses
9127 (hnomix χ hχ hprime)
9128
9129theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_orientation :
9130 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
9131 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget :=
9132 ⟨PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_no_mixed_prime_witnesses,
9133 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_no_mixed_prime_orientation⟩
9134
9135theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_of_no_mixed_prime_orientation
9136 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget) :
9137 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget := by
9138 intro χ hχ hprime
9139 exact PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_orientation
9140 (hnomix χ hχ hprime)
9141
9142theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_identity_witness_excludes_reciprocal
9143 (hexcl :
9144 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget) :
9145 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget := by
9146 intro χ hχ hprime
9147 exact PRCCharacterNoMixedPrimeOrientation_of_identity_witness_excludes_reciprocal
9148 (hexcl χ hχ hprime)
9149
9150theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_iff_no_mixed_prime_orientation :
9151 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget ↔
9152 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget :=
9153 ⟨PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_identity_witness_excludes_reciprocal,
9154 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_of_no_mixed_prime_orientation⟩
9155
9156theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_identity_witness_excludes_reciprocal
9157 (hexcl :
9158 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget) :
9159 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
9160 intro χ hχ hprime
9161 exact PRCCharacterNoMixedPrimeWitnesses_of_identity_witness_excludes_reciprocal
9162 (hexcl χ hχ hprime)
9163
9164theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_of_no_mixed_prime_witnesses
9165 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
9166 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget := by
9167 intro χ hχ hprime
9168 exact PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_witnesses
9169 (hnomix χ hχ hprime)
9170
9171theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_identity_witness_excludes_reciprocal :
9172 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
9173 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget :=
9174 ⟨PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_of_no_mixed_prime_witnesses,
9175 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_identity_witness_excludes_reciprocal⟩
9176
9177theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_of_no_mixed_prime_orientation
9178 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget) :
9179 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget := by
9180 intro χ hχ hprime
9181 exact PRCCharacterPrimeReciprocalWitnessGlobalizes_of_local_no_mixed_prime_orientation
9182 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9183 (hnomix χ hχ hprime)
9184
9185theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_reciprocal_witness_globalizes
9186 (hglobal :
9187 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget) :
9188 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget := by
9189 intro χ hχ hprime
9190 exact PRCCharacterNoMixedPrimeOrientation_of_reciprocal_witness_globalizes
9191 (hglobal χ hχ hprime)
9192
9193theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_no_mixed_prime_orientation :
9194 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget ↔
9195 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget :=
9196 ⟨PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_reciprocal_witness_globalizes,
9197 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_of_no_mixed_prime_orientation⟩
9198
9199theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_identity_witness_excludes_reciprocal :
9200 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget ↔
9201 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget :=
9202 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_no_mixed_prime_orientation.trans
9203 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_iff_no_mixed_prime_orientation.symm
9204
9205theorem PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_reciprocal_witness_globalizes
9206 (hglobal :
9207 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget) :
9208 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget := by
9209 intro χ hχ hprime
9210 exact PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_witness_globalizes
9211 (hglobal χ hχ hprime)
9212
9213theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_reciprocal_witness_globalizes
9214 (hglobal :
9215 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget) :
9216 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget := by
9217 intro χ hχ hprime
9218 exact PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_reciprocal_witness_globalizes
9219 (hglobal χ hχ hprime)
9220
9221theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_of_reciprocal_witness_globalizes
9222 (hglobal :
9223 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget) :
9224 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget :=
9225 ⟨PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_reciprocal_witness_globalizes
9226 hglobal,
9227 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_reciprocal_witness_globalizes
9228 hglobal⟩
9229
9230theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_of_split
9231 (hsplit :
9232 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget) :
9233 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget := by
9234 intro χ hχ hprime
9235 exact PRCCharacterPrimeReciprocalWitnessGlobalizes_of_split
9236 ⟨hsplit.1 χ hχ hprime, hsplit.2 χ hχ hprime⟩
9237
9238theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_split :
9239 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget ↔
9240 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget :=
9241 ⟨PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_of_reciprocal_witness_globalizes,
9242 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_of_split⟩
9243
9244theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_nonunit_no_mixed_witnesses
9245 (hnomix : PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget) :
9246 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
9247 intro χ hχ hprime
9248 exact PRCCharacterNoMixedPrimeWitnesses_of_nonunit_no_mixed_witnesses
9249 (hnomix χ hχ hprime)
9250
9251theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_of_nonunit_no_mixed_witnesses
9252 (hnomix : PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget) :
9253 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget :=
9254 ⟨PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_nonunit_no_mixed_witnesses
9255 hnomix,
9256 by
9257 intro χ hχ hprime _hprimeWitnesses
9258 exact hnomix χ hχ hprime⟩
9259
9260theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_split
9261 (hsplit : PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget) :
9262 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget := by
9263 intro χ hχ hprime
9264 exact (hsplit.2 χ hχ hprime) (hsplit.1 χ hχ hprime)
9265
9266theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_split :
9267 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget ↔
9268 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget :=
9269 ⟨PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_of_nonunit_no_mixed_witnesses,
9270 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_split⟩
9271
9272theorem PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_of_mixed_reflects
9273 (hreflect :
9274 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget) :
9275 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget := by
9276 intro χ hχ hprime
9277 exact PRCCharacterPrimeWitnessesControlNonunitWitnesses_of_mixed_reflects
9278 (hreflect χ hχ hprime)
9279
9280theorem PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_prime_control
9281 (hcontrol :
9282 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget) :
9283 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget := by
9284 intro χ hχ hprime
9285 exact PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_of_prime_control
9286 (hcontrol χ hχ hprime)
9287
9288theorem PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_iff_mixed_reflects :
9289 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget ↔
9290 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget :=
9291 ⟨PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_prime_control,
9292 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_of_mixed_reflects⟩
9293
9294theorem PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_of_reflects
9295 (hreflect :
9296 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget) :
9297 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget := by
9298 constructor
9299 · intro χ hχ hprime
9300 exact (PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit_of_reflects
9301 (hreflect χ hχ hprime)).1
9302 · intro χ hχ hprime
9303 exact (PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit_of_reflects
9304 (hreflect χ hχ hprime)).2
9305
9306theorem PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_split
9307 (hsplit :
9308 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget) :
9309 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget := by
9310 intro χ hχ hprime
9311 exact PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses_of_split
9312 ⟨hsplit.1 χ hχ hprime, hsplit.2 χ hχ hprime⟩
9313
9314theorem PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_iff_split :
9315 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget ↔
9316 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget :=
9317 ⟨PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_of_reflects,
9318 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_split⟩
9319
9320theorem PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget_proved :
9321 PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget := by
9322 intro χ hχ hprime
9323 exact PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
9324 hχ
9325 (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
9326 χ hχ hprime)
9327 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9328
9329theorem PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget_proved :
9330 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget := by
9331 intro χ hχ hprime
9332 exact PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness_of_prime_local
9333 hχ
9334 (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
9335 χ hχ hprime)
9336 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9337
9338theorem PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_proved :
9339 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget :=
9340 ⟨PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget_proved,
9341 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget_proved⟩
9342
9343theorem PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_proved :
9344 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget :=
9345 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_split
9346 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_proved
9347
9348theorem PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_proved :
9349 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget :=
9350 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_of_mixed_reflects
9351 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_proved
9352
9353theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_of_no_mixed_prime_witnesses
9354 (hprime : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
9355 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget :=
9356 ⟨hprime, PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_proved⟩
9357
9358theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_no_mixed_prime_witnesses
9359 (hprime : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
9360 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget :=
9361 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_split
9362 (PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_of_no_mixed_prime_witnesses
9363 hprime)
9364
9365theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_no_mixed_prime_witnesses :
9366 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget ↔
9367 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget :=
9368 ⟨PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_nonunit_no_mixed_witnesses,
9369 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_no_mixed_prime_witnesses⟩
9370
9371theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_local_exclusion
9372 (hsharp :
9373 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget) :
9374 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget := by
9375 intro χ hχ hprime
9376 exact PRCCharacterNonunitIdentityWitnessGlobalizes_of_local_excludes
9377 (hsharp.1 χ hχ hprime) (hsharp.2 χ hχ hprime)
9378
9379theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget_of_identity_witness_globalizes
9380 (hwitness :
9381 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget) :
9382 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget :=
9383 ⟨PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_nonunit_coherent
9384 (PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_identity_witness_globalizes
9385 hwitness),
9386 (by
9387 intro χ hχ hprime
9388 exact PRCCharacterNonunitIdentityWitnessExcludesReciprocal_of_globalizes
9389 (hwitness χ hχ hprime))⟩
9390
9391theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_iff_local_exclusion :
9392 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget ↔
9393 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget :=
9394 ⟨PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget_of_identity_witness_globalizes,
9395 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_local_exclusion⟩
9396
9397theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_branch_transport :
9398 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
9399 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget :=
9400 ⟨PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_product_no_mixed,
9401 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_branch_transport⟩
9402
9403theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_branch_transport
9404 (htransport : PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget) :
9405 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget := by
9406 intro χ hχ hprime
9407 exact PRCCharacterNonunitIdentityRespectsComparableTrace_of_branch_transport
9408 (htransport χ hχ hprime)
9409
9410theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_product_no_mixed
9411 (hprod : PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget) :
9412 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
9413 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_branch_transport
9414 (PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_product_no_mixed
9415 hprod)
9416
9417theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_iff_comparable_trace :
9418 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget ↔
9419 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
9420 ⟨PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_branch_transport,
9421 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_comparable_trace⟩
9422
9423theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_comparable_trace :
9424 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
9425 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
9426 ⟨PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_product_no_mixed,
9427 fun hcomp =>
9428 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_branch_transport
9429 (PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_comparable_trace
9430 hcomp)⟩
9431
9432theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_successor_step_pair
9433 (hpair :
9434 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget) :
9435 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget :=
9436 (PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_comparable_trace.mpr
9437 (PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_successor_step_pair
9438 hpair))
9439
9440theorem PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_product_no_mixed
9441 (hprod : PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget) :
9442 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
9443 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_identity_comparable_trace
9444 (PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_product_no_mixed
9445 hprod)
9446
9447theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_successor_step_pair :
9448 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
9449 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
9450 ⟨PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_product_no_mixed,
9451 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_successor_step_pair⟩
9452
9453theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_successor_step_pair
9454 (hpair :
9455 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget) :
9456 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget :=
9457 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_product_no_mixed
9458 (PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_successor_step_pair
9459 hpair)
9460
9461theorem PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_nonunit_coherent
9462 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
9463 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
9464 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_successor_transport
9465 (PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_nonunit_coherent
9466 hcoh)
9467
9468theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_successor_step_pair :
9469 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
9470 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget :=
9471 ⟨PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_nonunit_coherent,
9472 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_successor_step_pair⟩
9473
9474theorem PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_of_identity_comparable_trace
9475 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
9476 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget := by
9477 intro χ hχ hprime
9478 exact PRCCharacterOrbitProductLocalOrientationPropagates_of_display_compatible_nomix
9479 hχ (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
9480 χ hχ hprime)
9481 ((PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_comparable_trace.mpr
9482 hcomp) χ hχ hprime)
9483
9484theorem PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_identity_comparable_trace
9485 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
9486 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget := by
9487 intro χ hχ hprime
9488 exact PRCCharacterNonunitOrbitLocalOrientation_of_prime_and_product_local
9489 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9490 ((PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_of_identity_comparable_trace
9491 hcomp) χ hχ hprime)
9492
9493theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_of_identity_comparable_trace
9494 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
9495 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget :=
9496 ⟨PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_identity_comparable_trace
9497 hcomp,
9498 hcomp⟩
9499
9500theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_local_comparable_trace
9501 (hsharp :
9502 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget) :
9503 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
9504 hsharp.2
9505
9506theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_iff_identity_comparable_trace :
9507 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget ↔
9508 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
9509 ⟨PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_local_comparable_trace,
9510 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_of_identity_comparable_trace⟩
9511
9512/-- Second component of the prime-floor successor blocker: adjacent nonunit
9513orbit directions cannot carry opposite identity/reciprocal orientations. -/
9514def PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget : Prop :=
9515 ∀ χ : RatioOrbit → RatioOrbit,
9516 PRCRatioCharacter χ →
9517 PRCCharacterPrimeDirectionCalibrated χ →
9518 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ
9519
9520theorem PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_of_nonunit_coherent
9521 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
9522 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget := by
9523 intro χ hχ hprime
9524 exact PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_nonunit_coherent
9525 (hcoh χ hχ hprime)
9526
9527theorem PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_of_successor_transport
9528 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
9529 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget := by
9530 intro χ hχ hprime
9531 exact PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_successor_transport
9532 (hstep χ hχ hprime)
9533
9534/-- The exact local version of the corrected successor blocker: local nonunit
9535orientation plus adjacent no-mixing is equivalent to local nonunit orientation
9536plus prime-floor successor transport. -/
9537def PRCPrimeFloorSuccessorTransportLocalAdjacentTarget : Prop :=
9538 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
9539 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget
9540
9541/-- Pass-39 refinement of the prime-floor successor target. It separates local
9542nonunit orientation from adjacent no-mixing instead of bundling both facts under
9543successor transport. -/
9544def PRCPrimeFloorSuccessorTransportSharpenedTarget : Prop :=
9545 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget ∧
9546 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget
9547
9548theorem PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget_of_additive_compat
9549 (hadd : PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget) :
9550 PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget := by
9551 intro χ hχ hprime
9552 exact PRCCharacterOrbitIdentitySuccessorTransport_of_additive_compat
9553 (hadd χ hχ hprime)
9554
9555theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_nomix
9556 (hsharp : PRCPrimeFloorSuccessorTransportSharpenedTarget) :
9557 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
9558 intro χ hχ hprime
9559 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_local_adjacent_nomix
9560 (PRCCharacterNonunitOrbitLocalOrientation_of_coherent
9561 (hsharp.1 χ hχ hprime))
9562 (hsharp.2 χ hχ hprime)
9563
9564theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_target
9565 (hsharp : PRCPrimeFloorSuccessorTransportLocalAdjacentTarget) :
9566 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
9567 intro χ hχ hprime
9568 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_local_adjacent_nomix
9569 (hsharp.1 χ hχ hprime) (hsharp.2 χ hχ hprime)
9570
9571theorem PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_of_local_successor_transport
9572 (hsharp :
9573 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
9574 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
9575 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget :=
9576 ⟨hsharp.1,
9577 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_of_successor_transport
9578 hsharp.2⟩
9579
9580theorem PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_iff_local_successor_transport :
9581 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget ↔
9582 (PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
9583 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :=
9584 ⟨(fun hsharp =>
9585 ⟨hsharp.1,
9586 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_target
9587 hsharp⟩),
9588 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_of_local_successor_transport⟩
9589
9590theorem PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_of_nonunit_coherent
9591 (hcoh : PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget) :
9592 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget :=
9593 ⟨PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_nonunit_coherent hcoh,
9594 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_of_nonunit_coherent
9595 hcoh⟩
9596
9597theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_adjacent
9598 (hsharp : PRCPrimeFloorSuccessorTransportLocalAdjacentTarget) :
9599 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
9600 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_and_prime_floor_successor_transport
9601 ⟨hsharp.1,
9602 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_target
9603 hsharp⟩
9604
9605theorem PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_iff_nonunit_coherent :
9606 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget ↔
9607 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget :=
9608 ⟨PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_adjacent,
9609 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_of_nonunit_coherent⟩
9610
9611theorem PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_product_local_orientation
9612 (hprod : PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget) :
9613 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget := by
9614 intro χ hχ hprime
9615 exact PRCCharacterNonunitOrbitLocalOrientation_of_prime_and_product_local
9616 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9617 (hprod χ hχ hprime)
9618
9619theorem PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_of_display_compatible_nomix
9620 (hsharp : PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget) :
9621 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget := by
9622 intro χ hχ hprime
9623 exact PRCCharacterOrbitProductLocalOrientationPropagates_of_display_compatible_nomix
9624 hχ (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
9625 χ hχ hprime)
9626 (PRCCharacterOrbitProductNoMixedOrientation_of_nonunit_coherent
9627 (hsharp χ hχ hprime))
9628
9629theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_prime_floor_successor_transport
9630 (hstep : PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) :
9631 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget := by
9632 intro χ hχ hprime
9633 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_prime_floor_successor_transport
9634 (hstep χ hχ hprime)
9635
9636theorem PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget_of_transport
9637 (htransport : PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget) :
9638 PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget := by
9639 intro χ hχ hprime
9640 exact PRCCharacterOrbitIdentityRespectsSuccessorStep_of_transport
9641 (htransport χ hχ hprime)
9642
9643theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_successor_step
9644 (hstep : PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget) :
9645 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget := by
9646 intro χ hχ hprime
9647 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_successor_step
9648 (hstep χ hχ hprime)
9649
9650theorem PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_comparable_trace
9651 (hcomp : PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget) :
9652 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget := by
9653 intro χ hχ hprime
9654 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_comparable_trace
9655 (hcomp χ hχ hprime)
9656
9657theorem PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_common_trace_extension
9658 (hcommon : PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget) :
9659 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget := by
9660 intro χ hχ hprime
9661 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_common_trace_extension
9662 (hcommon χ hχ hprime)
9663
9664theorem PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_canonical_add_trace
9665 (hcanon : PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget) :
9666 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget := by
9667 intro χ hχ hprime
9668 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_canonical_add_trace
9669 (hcanon χ hχ hprime)
9670
9671theorem PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_iff_common_trace_extension :
9672 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget ↔
9673 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget :=
9674 ⟨PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_canonical_add_trace,
9675 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_common_trace_extension⟩
9676
9677theorem PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_common_trace_extension
9678 (hcommon : PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget) :
9679 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget := by
9680 intro χ hχ hprime
9681 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_common_trace_extension
9682 (hcommon χ hχ hprime)
9683
9684theorem PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_trace_transport
9685 (htransport : PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget) :
9686 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget := by
9687 intro χ hχ hprime
9688 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_trace_connected
9689 (htransport χ hχ hprime)
9690
9691theorem PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_canonical_add_trace
9692 (hcanon : PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget) :
9693 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget := by
9694 intro χ hχ hprime
9695 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_canonical_add_trace
9696 (hcanon χ hχ hprime)
9697
9698theorem PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_iff_trace_transport :
9699 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget ↔
9700 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget :=
9701 ⟨PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_canonical_add_trace,
9702 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_trace_transport⟩
9703
9704theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_trace_coherence
9705 (hcoh : PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget) :
9706 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
9707 intro χ hχ hprime
9708 exact PRCCharacterPrimeIdentityBranchUniform_of_trace_coherence
9709 (hcoh χ hχ hprime)
9710
9711theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_branch_uniformity
9712 (huniform : PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
9713 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget := by
9714 intro χ hχ hprime
9715 exact PRCCharacterPrimeIdentityTraceCoherent_of_branch_uniform
9716 (huniform χ hχ hprime)
9717
9718theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_trace_coherence :
9719 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
9720 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget :=
9721 ⟨PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_branch_uniformity,
9722 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_trace_coherence⟩
9723
9724theorem PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_branch_uniformity
9725 (huniform : PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
9726 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget := by
9727 intro χ hχ hprime
9728 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_branch_uniform
9729 (huniform χ hχ hprime)
9730
9731theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_canonical_add_trace
9732 (hcanon : PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget) :
9733 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
9734 intro χ hχ hprime
9735 exact PRCCharacterPrimeIdentityBranchUniform_of_canonical_add_trace
9736 (hcanon χ hχ hprime)
9737
9738theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_canonical_add_trace :
9739 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
9740 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget :=
9741 ⟨PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_branch_uniformity,
9742 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_canonical_add_trace⟩
9743
9744theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_trace_transport
9745 (htransport : PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget) :
9746 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget := by
9747 intro χ hχ hprime p hp r hr hpId
9748 exact htransport χ hχ hprime p hp r hr
9749 (PRCPrimeAxisTraceConnected_proved p hp r hr) hpId
9750
9751theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_trace_coherence
9752 (hcoh : PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget) :
9753 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget := by
9754 intro χ hχ hprime
9755 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_trace_coherence
9756 (hcoh χ hχ hprime)
9757
9758theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_comparable_trace
9759 (hcomp : PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget) :
9760 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget := by
9761 intro χ hχ hprime
9762 exact PRCCharacterPrimeIdentityTraceCoherent_of_comparable_trace
9763 (hcomp χ hχ hprime)
9764
9765theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_comparable_trace :
9766 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget ↔
9767 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget :=
9768 ⟨PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_trace_coherence,
9769 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_comparable_trace⟩
9770
9771theorem PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_trace_coherence
9772 (hcoh : PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget) :
9773 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget := by
9774 intro χ hχ hprime
9775 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_trace_coherence
9776 (hcoh χ hχ hprime)
9777
9778theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_common_trace_extension
9779 (hcommon : PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget) :
9780 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget := by
9781 intro χ hχ hprime
9782 exact PRCCharacterPrimeIdentityTraceCoherent_of_common_trace_extension
9783 (hcommon χ hχ hprime)
9784
9785theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_common_trace_extension :
9786 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget ↔
9787 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget :=
9788 ⟨PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_trace_coherence,
9789 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_common_trace_extension⟩
9790
9791theorem PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_trace_coherence
9792 (hcoh : PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget) :
9793 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget := by
9794 intro χ hχ hprime
9795 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_trace_coherence
9796 (hcoh χ hχ hprime)
9797
9798theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_trace_transport :
9799 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget ↔
9800 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget :=
9801 ⟨PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_trace_coherence,
9802 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_trace_transport⟩
9803
9804theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_nonunit_identity_comparable_trace
9805 (hcomp : PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget) :
9806 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget := by
9807 intro χ hχ hprime
9808 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_nonunit_identity_comparable_trace
9809 (hcomp χ hχ hprime)
9810
9811theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_identity_comparable_trace
9812 (hcomp : PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget) :
9813 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget := by
9814 intro χ hχ hprime
9815 exact PRCCharacterNonunitIdentityRespectsComparableTrace_of_prime_comparable
9816 hχ
9817 (PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
9818 χ hχ hprime)
9819 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9820 (hcomp χ hχ hprime)
9821
9822theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_iff_nonunit_identity_comparable_trace :
9823 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget ↔
9824 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget :=
9825 ⟨PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_identity_comparable_trace,
9826 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_nonunit_identity_comparable_trace⟩
9827
9828theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_iff_prime_floor_successor_transport :
9829 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget ↔
9830 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget :=
9831 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_iff_nonunit_identity_comparable_trace.trans
9832 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_iff_prime_floor_successor_transport
9833
9834theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_trace_coherence
9835 (htrace : PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget) :
9836 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget := by
9837 intro χ hχ hprime p hp r hr hpId hrRec
9838 have hrId := htrace χ hχ hprime p hp r hr hpId
9839 have hself :
9840 RatioOrbit.crossEq
9841 (primeDirection r hr)
9842 (RatioOrbit.recip (primeDirection r hr)) :=
9843 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hrId) hrRec
9844 exact primeDirection_not_crossEq_recip r hr hself
9845
9846theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_no_mixed_prime_orientation
9847 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget) :
9848 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget := by
9849 intro χ hχ hprime
9850 exact PRCCharacterPrimeIdentityTraceCoherent_of_local_no_mixed_prime_orientation
9851 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9852 (hnomix χ hχ hprime)
9853
9854theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_iff_trace_coherence :
9855 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget ↔
9856 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget :=
9857 ⟨PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_no_mixed_prime_orientation,
9858 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_trace_coherence⟩
9859
9860theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_branch_uniformity
9861 (huniform : PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
9862 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget := by
9863 intro χ hχ hprime
9864 exact PRCCharacterNoMixedPrimeOrientation_of_branch_uniform
9865 (huniform χ hχ hprime)
9866
9867theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_no_mixed_prime_orientation
9868 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget) :
9869 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
9870 intro χ hχ hprime
9871 exact PRCCharacterPrimeIdentityBranchUniform_of_local_no_mixed_prime_orientation
9872 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
9873 (hnomix χ hχ hprime)
9874
9875theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_no_mixed_prime_orientation :
9876 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
9877 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget :=
9878 ⟨PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_branch_uniformity,
9879 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_no_mixed_prime_orientation⟩
9880
9881theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_trace_coherence :
9882 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
9883 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget :=
9884 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_orientation.trans
9885 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_iff_trace_coherence
9886
9887/-- Sharper orientation blocker A: prime cost calibration must choose one
9888coherent orientation across all native prime axes. This is the place where
9889mixed independent prime inversions must be ruled out. -/
9890def PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget : Prop :=
9891 ∀ χ : RatioOrbit → RatioOrbit,
9892 PRCRatioCharacter χ →
9893 PRCCharacterPrimeDirectionCalibrated χ →
9894 PRCCharacterPrimeOrientationCoherent χ
9895
9896/-- Distinguished-prime normal form of the same blocker: prime calibration must
9897make the branch chosen at orbit `2` control every native prime branch. -/
9898def PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget : Prop :=
9899 ∀ χ : RatioOrbit → RatioOrbit,
9900 PRCRatioCharacter χ →
9901 PRCCharacterPrimeDirectionCalibrated χ →
9902 PRCCharacterTwoPrimeBranchControlsPrimes χ
9903
9904/-- Identity-iff-two target: prime calibration must force identity orientation
9905on any prime axis exactly when it forces identity on the distinguished orbit
9906`2` prime axis. -/
9907def PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget : Prop :=
9908 ∀ χ : RatioOrbit → RatioOrbit,
9909 PRCRatioCharacter χ →
9910 PRCCharacterPrimeDirectionCalibrated χ →
9911 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ
9912
9913/-- One-sided distinguished-axis target: prime calibration must force identity
9914at the orbit-`2` prime axis from identity at any calibrated prime axis. -/
9915def PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget : Prop :=
9916 ∀ χ : RatioOrbit → RatioOrbit,
9917 PRCRatioCharacter χ →
9918 PRCCharacterPrimeDirectionCalibrated χ →
9919 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ
9920
9921/-- Two-reciprocal exclusion target: if prime calibration leaves the orbit-`2`
9922axis on the reciprocal branch, no native prime axis may remain on identity. -/
9923def PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget : Prop :=
9924 ∀ χ : RatioOrbit → RatioOrbit,
9925 PRCRatioCharacter χ →
9926 PRCCharacterPrimeDirectionCalibrated χ →
9927 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ
9928
9929/-- Two-specific mixed-witness exclusion target: if the orbit-`2` prime axis is
9930reciprocal-oriented, no identity-oriented native prime witness may exist. -/
9931def PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget :
9932 Prop :=
9933 ∀ χ : RatioOrbit → RatioOrbit,
9934 PRCRatioCharacter χ →
9935 PRCCharacterPrimeDirectionCalibrated χ →
9936 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ
9937
9938/-- Exact calibrated mixed-character model whose nonexistence is equivalent to
9939the orbit-`2` mixed-witness exclusion target. Constructing this model would
9940refute the current character-rigidity route. -/
9941def PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter :
9942 Prop :=
9943 ∃ χ : RatioOrbit → RatioOrbit,
9944 PRCRatioCharacter χ ∧
9945 PRCCharacterPrimeDirectionCalibrated χ ∧
9946 PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed χ
9947
9948/-- Sharpened calibrated mixed-character model: orbit `2` is reciprocal, while
9949a non-`2` native prime witness is identity-oriented. -/
9950def PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter :
9951 Prop :=
9952 ∃ χ : RatioOrbit → RatioOrbit,
9953 PRCRatioCharacter χ ∧
9954 PRCCharacterPrimeDirectionCalibrated χ ∧
9955 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed χ
9956
9957/-- Concrete calibrated two-adic axis-twist model. Constructing this object is
9958the native valuation route to refuting the current character-rigidity branch. -/
9959def PRCPrimeCalibratedTwoAdicAxisTwistCharacter : Prop :=
9960 ∃ χ : RatioOrbit → RatioOrbit,
9961 PRCRatioCharacter χ ∧
9962 PRCCharacterPrimeDirectionCalibrated χ ∧
9963 PRCCharacterTwoAdicAxisTwist χ
9964
9965theorem PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist
9966 {χ : RatioOrbit → RatioOrbit}
9967 (htwist : PRCCharacterTwoAdicAxisTwist χ) :
9968 PRCCharacterPrimeDirectionCalibrated χ := by
9969 intro p hp
9970 by_cases hptwo : p = twoOrbit
9971 · subst p
9972 have hcost :
9973 RatioOrbit.crossEq
9974 (costFromCharacter χ twoPrimeDirection)
9975 (onRatioOrbit twoPrimeDirection) := by
9976 unfold costFromCharacter
9977 exact
9978 RatioOrbit.crossEq_trans
9979 (onRatioOrbit_congr htwist.1)
9980 (RatioOrbit.crossEq_symm (reciprocal_symmetric twoPrimeDirection))
9981 simpa [twoPrimeDirection, primeDirection] using hcost
9982 · unfold costFromCharacter
9983 exact onRatioOrbit_congr (htwist.2 p hp hptwo)
9984
9985theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist
9986 (htwist : PRCTwoAdicAxisTwistRatioCharacter) :
9987 PRCPrimeCalibratedTwoAdicAxisTwistCharacter := by
9988 rcases htwist with ⟨χ, hχ, hbranch⟩
9989 exact
9990 ⟨χ, hχ,
9991 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist hbranch,
9992 hbranch⟩
9993
9994theorem PRCTwoAdicAxisTwistRatioCharacter_of_calibrated_two_adic_axis_twist
9995 (htwist : PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
9996 PRCTwoAdicAxisTwistRatioCharacter := by
9997 rcases htwist with ⟨χ, hχ, _hprime, hbranch⟩
9998 exact ⟨χ, hχ, hbranch⟩
9999
10000theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_iff_ratio_character_axis_twist :
10001 PRCPrimeCalibratedTwoAdicAxisTwistCharacter ↔
10002 PRCTwoAdicAxisTwistRatioCharacter :=
10003 ⟨PRCTwoAdicAxisTwistRatioCharacter_of_calibrated_two_adic_axis_twist,
10004 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist⟩
10005
10006theorem PRCTwoAdicAxisTwistRatioCharacter_absurd_of_no_calibrated_twist
10007 (hno : ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
10008 ¬ PRCTwoAdicAxisTwistRatioCharacter := by
10009 intro htwist
10010 exact hno
10011 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist
10012 htwist)
10013
10014/-- Calibrated composite-defect model equivalent to the non-two mixed-prime
10015blocker, but with the forced composite image `χ(2*p)=p/2` exposed. -/
10016def PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter :
10017 Prop :=
10018 ∃ χ : RatioOrbit → RatioOrbit,
10019 PRCRatioCharacter χ ∧
10020 PRCCharacterPrimeDirectionCalibrated χ ∧
10021 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect χ
10022
10023/-- Calibrated cost-visible composite-defect model equivalent to the Pass 95
10024blocker, but now exposing the actual composite J-cost failure. -/
10025def PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter :
10026 Prop :=
10027 ∃ χ : RatioOrbit → RatioOrbit,
10028 PRCRatioCharacter χ ∧
10029 PRCCharacterPrimeDirectionCalibrated χ ∧
10030 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect χ
10031
10032/-- Calibrated mixed-prime witness model: a ratio character satisfies prime
10033calibration while carrying both an identity-oriented prime witness and a
10034reciprocal-oriented prime witness. Nonexistence of this model is definitionally
10035the current no-mixed-prime witness blocker. -/
10036def PRCPrimeCalibratedMixedPrimeWitnessesCharacter : Prop :=
10037 ∃ χ : RatioOrbit → RatioOrbit,
10038 PRCRatioCharacter χ ∧
10039 PRCCharacterPrimeDirectionCalibrated χ ∧
10040 PRCCharacterMixedPrimeWitnesses χ
10041
10042/-- Fully unpacked calibrated mixed-prime pair model: a calibrated ratio
10043character plus named native prime axes `p` and `r`, with `p` identity-oriented
10044and `r` reciprocal-oriented. This is the current obstruction with no remaining
10045propositional packaging around the two branch witnesses. -/
10046def PRCPrimeCalibratedMixedPrimePairWitnessCharacter : Prop :=
10047 ∃ χ : RatioOrbit → RatioOrbit,
10048 PRCRatioCharacter χ ∧
10049 PRCCharacterPrimeDirectionCalibrated χ ∧
10050 PRCCharacterMixedPrimePairWitnesses χ
10051
10052/-- Calibrated same-axis mixed-prime pair model: the mixed branch occurs at a
10053single native prime orbit. -/
10054def PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter : Prop :=
10055 ∃ χ : RatioOrbit → RatioOrbit,
10056 PRCRatioCharacter χ ∧
10057 PRCCharacterPrimeDirectionCalibrated χ ∧
10058 PRCCharacterSamePrimeMixedPairWitnesses χ
10059
10060/-- Calibrated distinct-axis mixed-prime pair model: the mixed branch occurs
10061between two different native prime orbits. -/
10062def PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter : Prop :=
10063 ∃ χ : RatioOrbit → RatioOrbit,
10064 PRCRatioCharacter χ ∧
10065 PRCCharacterPrimeDirectionCalibrated χ ∧
10066 PRCCharacterDistinctPrimeMixedPairWitnesses χ
10067
10068theorem PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter_of_non_two_mixed
10069 (hmix :
10070 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
10071 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
10072 rcases hmix with ⟨χ, hχ, hprime, htwoRec, p, hp, hpne, hpId⟩
10073 exact
10074 ⟨χ, hχ, hprime, p, hp, twoOrbit, twoOrbit_primeOrbit, hpne, hpId,
10075 by simpa [twoPrimeDirection] using htwoRec⟩
10076
10077/-- Trace-connected reciprocal target: prime calibration should force reciprocal
10078orientation at the orbit-`2` prime axis to transport along any finite δ-trace
10079connection to a native prime axis. -/
10080def PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget : Prop :=
10081 ∀ χ : RatioOrbit → RatioOrbit,
10082 PRCRatioCharacter χ →
10083 PRCCharacterPrimeDirectionCalibrated χ →
10084 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ
10085
10086/-- Two-prime identity trace-connected target: prime calibration should force
10087identity orientation at the orbit-`2` prime axis to transport along any finite
10088δ-trace connection to a native prime axis. Pass 81 isolates this as the same
10089blocker as reciprocal trace transport, seen through reciprocal twist. -/
10090def PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget : Prop :=
10091 ∀ χ : RatioOrbit → RatioOrbit,
10092 PRCRatioCharacter χ →
10093 PRCCharacterPrimeDirectionCalibrated χ →
10094 PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ
10095
10096theorem PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_local_and_nomixed
10097 (hlocal : PRCPrimeCalibrationForcesLocalPrimeOrientationTarget)
10098 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget) :
10099 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget := by
10100 intro χ hχ hprime
10101 have hloc := hlocal χ hχ hprime
10102 have hno := hnomix χ hχ hprime
10103 by_cases hId :
10104 ∃ p : DistinctionNat, ∃ hp : DistinctionNat.primeOrbit p,
10105 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
10106 · rcases hId with ⟨p0, hp0, hid0⟩
10107 exact Or.inl (by
10108 intro p hp
10109 rcases hloc p hp with hid | hrec
10110 · exact hid
10111 · exact False.elim (hno p0 hp0 p hp hid0 hrec))
10112 · exact Or.inr (by
10113 intro p hp
10114 rcases hloc p hp with hid | hrec
10115 · exact False.elim (hId ⟨p, hp, hid⟩)
10116 · exact hrec)
10117
10118theorem PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_no_mixed_prime_witnesses
10119 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
10120 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget :=
10121 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_local_and_nomixed
10122 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved
10123 (PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_no_mixed_prime_witnesses
10124 hnomix)
10125
10126theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_coherent_prime_orientation
10127 (hcoh : PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget) :
10128 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
10129 intro χ hχ hprime
10130 exact PRCCharacterNoMixedPrimeWitnesses_of_coherent_prime_orientation
10131 (hcoh χ hχ hprime)
10132
10133theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_coherent_prime_orientation :
10134 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10135 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget :=
10136 ⟨PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_no_mixed_prime_witnesses,
10137 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_coherent_prime_orientation⟩
10138
10139theorem PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_coherent_prime_orientation
10140 (hcoh : PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget) :
10141 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget := by
10142 intro χ hχ hprime
10143 exact PRCCharacterTwoPrimeBranchControlsPrimes_of_coherent
10144 (hcoh χ hχ hprime)
10145
10146theorem PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_two_prime_branch_controls
10147 (hctrl : PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget) :
10148 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget := by
10149 intro χ hχ hprime
10150 exact PRCCharacterPrimeOrientationCoherent_of_local_two_prime_branch_controls
10151 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
10152 (hctrl χ hχ hprime)
10153
10154theorem PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_iff_two_prime_branch_controls :
10155 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget ↔
10156 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget :=
10157 ⟨PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_coherent_prime_orientation,
10158 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_two_prime_branch_controls⟩
10159
10160theorem PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_two_prime_branch_controls
10161 (hctrl : PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget) :
10162 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget := by
10163 intro χ hχ hprime
10164 exact PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_local_two_prime_branch_controls
10165 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
10166 (hctrl χ hχ hprime)
10167
10168theorem PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_prime_identity_iff_two
10169 (hiff : PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget) :
10170 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget := by
10171 intro χ hχ hprime
10172 exact PRCCharacterTwoPrimeBranchControlsPrimes_of_local_prime_identity_iff_two
10173 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
10174 (hiff χ hχ hprime)
10175
10176theorem PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_iff_prime_identity_iff_two :
10177 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget ↔
10178 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget :=
10179 ⟨PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_two_prime_branch_controls,
10180 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_prime_identity_iff_two⟩
10181
10182theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_identity_iff_two
10183 (hiff : PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget) :
10184 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget := by
10185 intro χ hχ hprime
10186 exact PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_identity_iff_two
10187 (hiff χ hχ hprime)
10188
10189theorem PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_identity_forces_two
10190 (hforces :
10191 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
10192 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget := by
10193 intro χ hχ hprime p hp
10194 constructor
10195 · exact hforces χ hχ hprime p hp
10196 · intro htwoId
10197 rcases PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime
10198 p hp with hpId | hpRec
10199 · exact hpId
10200 · have htwistId :
10201 RatioOrbit.crossEq
10202 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
10203 (primeDirection p hp) :=
10204 (PRCCharacterReciprocalTwist_prime_identity_iff_reciprocal
10205 χ p hp).mpr hpRec
10206 have htwistTwoId :=
10207 hforces (PRCCharacterReciprocalTwist χ)
10208 hχ.reciprocalTwist hprime.reciprocalTwist p hp htwistId
10209 have htwoRec :
10210 RatioOrbit.crossEq (χ twoPrimeDirection)
10211 (RatioOrbit.recip twoPrimeDirection) :=
10212 (PRCCharacterReciprocalTwist_two_identity_iff_reciprocal
10213 χ).mp htwistTwoId
10214 have hself :
10215 RatioOrbit.crossEq twoPrimeDirection
10216 (RatioOrbit.recip twoPrimeDirection) :=
10217 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
10218 exact False.elim
10219 (primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself)
10220
10221theorem PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_iff_identity_forces_two :
10222 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget ↔
10223 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
10224 ⟨PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_identity_iff_two,
10225 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_identity_forces_two⟩
10226
10227theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_identity_forces_two
10228 (hforces :
10229 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
10230 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget := by
10231 intro χ hχ hprime
10232 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_identity_forces_two
10233 (hforces χ hχ hprime)
10234
10235theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes
10236 (hexcl :
10237 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget) :
10238 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget := by
10239 intro χ hχ hprime
10240 exact PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_local_two_prime_reciprocal_excludes
10241 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
10242 (hexcl χ hχ hprime)
10243
10244theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes :
10245 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
10246 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget :=
10247 ⟨PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_identity_forces_two,
10248 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes⟩
10249
10250theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_two_prime_reciprocal_excludes
10251 (hexcl :
10252 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget) :
10253 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget := by
10254 intro χ hχ hprime
10255 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_excludes
10256 (hexcl χ hχ hprime)
10257
10258theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_witness
10259 (hexcl :
10260 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget) :
10261 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget := by
10262 intro χ hχ hprime
10263 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_witness_excludes
10264 (hexcl χ hχ hprime)
10265
10266theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_iff_witness :
10267 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget ↔
10268 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget :=
10269 ⟨PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_two_prime_reciprocal_excludes,
10270 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_witness⟩
10271
10272theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes_witness
10273 (hexcl :
10274 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget) :
10275 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
10276 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes
10277 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_witness
10278 hexcl)
10279
10280theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_identity_forces_two
10281 (hforces :
10282 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
10283 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget :=
10284 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_two_prime_reciprocal_excludes
10285 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_identity_forces_two
10286 hforces)
10287
10288theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness :
10289 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
10290 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget :=
10291 ⟨PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_identity_forces_two,
10292 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes_witness⟩
10293
10294theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_no_mixed_character
10295 (hmix :
10296 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter) :
10297 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget := by
10298 intro χ hχ hprime
10299 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_not_mixed
10300 (by
10301 intro hcharMix
10302 exact hmix ⟨χ, hχ, hprime, hcharMix⟩)
10303
10304theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_absurd_of_witness_excludes
10305 (hexcl :
10306 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget) :
10307 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter := by
10308 intro hmix
10309 rcases hmix with ⟨χ, hχ, hprime, hcharMix⟩
10310 exact
10311 (PRCCharacter_not_mixed_of_two_prime_reciprocal_excludes_prime_identity_witness
10312 (hexcl χ hχ hprime)) hcharMix
10313
10314theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_mixed_character :
10315 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget ↔
10316 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter :=
10317 ⟨PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_absurd_of_witness_excludes,
10318 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_no_mixed_character⟩
10319
10320theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_mixed
10321 (hmix : PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter) :
10322 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter := by
10323 rcases hmix with ⟨χ, hχ, hprime, hcharMix⟩
10324 exact
10325 ⟨χ, hχ, hprime,
10326 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_of_mixed hcharMix⟩
10327
10328theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_of_non_two_mixed
10329 (hmix :
10330 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
10331 PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter := by
10332 rcases hmix with ⟨χ, hχ, hprime, hcharMix⟩
10333 exact
10334 ⟨χ, hχ, hprime,
10335 PRCCharacterTwoPrimeReciprocalIdentityPrimeMixed_of_non_two_mixed hcharMix⟩
10336
10337theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_iff_non_two :
10338 PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter ↔
10339 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter :=
10340 ⟨PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_mixed,
10341 PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_of_non_two_mixed⟩
10342
10343theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_adic_axis_twist
10344 (htwist : PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
10345 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter := by
10346 rcases htwist with ⟨χ, hχ, hprime, htwistχ⟩
10347 rcases htwistχ with ⟨htwoRec, hnonTwoId⟩
10348 exact
10349 ⟨χ, hχ, hprime,
10350 ⟨htwoRec, threeOrbit, threeOrbit_primeOrbit, threeOrbit_ne_twoOrbit,
10351 hnonTwoId threeOrbit threeOrbit_primeOrbit threeOrbit_ne_twoOrbit⟩⟩
10352
10353theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_no_non_two_mixed
10354 (hno :
10355 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
10356 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter := by
10357 intro htwist
10358 exact hno
10359 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_adic_axis_twist
10360 htwist)
10361
10362theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_non_two_mixed_character :
10363 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget ↔
10364 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter := by
10365 constructor
10366 · intro hexcl hnonTwo
10367 exact
10368 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_absurd_of_witness_excludes
10369 hexcl)
10370 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_of_non_two_mixed
10371 hnonTwo)
10372 · intro hnonTwo
10373 exact
10374 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_no_mixed_character
10375 (by
10376 intro hmix
10377 exact hnonTwo
10378 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_mixed
10379 hmix))
10380
10381theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_non_two_mixed
10382 (hmix :
10383 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
10384 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter := by
10385 rcases hmix with ⟨χ, hχ, hprime, hcharMix⟩
10386 exact
10387 ⟨χ, hχ, hprime,
10388 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_non_two_mixed
10389 hχ hcharMix⟩
10390
10391theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_composite_defect
10392 (hdefect :
10393 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter) :
10394 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter := by
10395 rcases hdefect with ⟨χ, hχ, hprime, hcharDefect⟩
10396 exact
10397 ⟨χ, hχ, hprime,
10398 PRCCharacterTwoPrimeReciprocalIdentityNonTwoPrimeMixed_of_composite_defect
10399 hcharDefect⟩
10400
10401theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_iff_composite_defect :
10402 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter ↔
10403 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter :=
10404 ⟨PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_non_two_mixed,
10405 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_composite_defect⟩
10406
10407theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_defect_character :
10408 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget ↔
10409 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter := by
10410 constructor
10411 · intro hexcl hdefect
10412 exact
10413 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_non_two_mixed_character.mp
10414 hexcl)
10415 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_composite_defect
10416 hdefect)
10417 · intro hdefect
10418 exact
10419 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_non_two_mixed_character.mpr
10420 (by
10421 intro hmix
10422 exact hdefect
10423 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_non_two_mixed
10424 hmix))
10425
10426theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_of_composite_defect
10427 (hdefect :
10428 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter) :
10429 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter := by
10430 rcases hdefect with ⟨χ, hχ, hprime, hcharDefect⟩
10431 exact
10432 ⟨χ, hχ, hprime,
10433 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect_of_composite_defect
10434 hcharDefect⟩
10435
10436theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_cost_defect
10437 (hdefect :
10438 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter) :
10439 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter := by
10440 rcases hdefect with ⟨χ, hχ, hprime, hcharDefect⟩
10441 exact
10442 ⟨χ, hχ, hprime,
10443 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_cost_defect
10444 hcharDefect⟩
10445
10446theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_iff_cost_defect :
10447 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter ↔
10448 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter :=
10449 ⟨PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_of_composite_defect,
10450 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_cost_defect⟩
10451
10452theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_cost_defect_character :
10453 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget ↔
10454 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter := by
10455 constructor
10456 · intro hexcl hdefect
10457 exact
10458 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_defect_character.mp
10459 hexcl)
10460 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_cost_defect
10461 hdefect)
10462 · intro hdefect
10463 exact
10464 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_defect_character.mpr
10465 (by
10466 intro hplain
10467 exact hdefect
10468 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_of_composite_defect
10469 hplain))
10470
10471theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_of_no_composite_cost_defect
10472 (hno :
10473 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter) :
10474 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget := by
10475 intro χ hχ hprime htwoRec p hp hpne hpId
10476 by_contra hnotCost
10477 have hcharDefect :
10478 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect χ :=
10479 PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeCostDefect_of_composite_defect
10480 (PRCCharacterTwoPrimeReciprocalIdentityNonTwoCompositeDefect_of_non_two_mixed
10481 hχ ⟨htwoRec, p, hp, hpne, hpId⟩)
10482 exact hno ⟨χ, hχ, hprime, hcharDefect⟩
10483
10484theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_absurd_of_mixed_composite_consistency
10485 (hconsistency :
10486 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget) :
10487 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter := by
10488 intro hdefect
10489 rcases hdefect with ⟨χ, hχ, hprime, hcharDefect⟩
10490 rcases hcharDefect with ⟨htwoRec, p, hp, hpne, hpId, _hprod, hnotCost⟩
10491 exact hnotCost (hconsistency χ hχ hprime htwoRec p hp hpne hpId)
10492
10493theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_composite_cost_defect_character :
10494 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget ↔
10495 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter :=
10496 ⟨PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_absurd_of_mixed_composite_consistency,
10497 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_of_no_composite_cost_defect⟩
10498
10499theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_mixed_composite_cost_consistency :
10500 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget ↔
10501 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget := by
10502 constructor
10503 · intro hexcl
10504 exact
10505 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_of_no_composite_cost_defect
10506 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_cost_defect_character.mp
10507 hexcl)
10508 · intro hconsistency
10509 exact
10510 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_cost_defect_character.mpr
10511 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_absurd_of_mixed_composite_consistency
10512 hconsistency)
10513
10514theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_mixed_composite_cost_consistency_direct
10515 (hconsistency :
10516 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget) :
10517 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget := by
10518 intro χ hχ hprime htwoRec hwitness
10519 rcases hwitness with ⟨p, hp, hpId⟩
10520 by_cases hpne : p ≠ twoOrbit
10521 · have hcost :=
10522 hconsistency χ hχ hprime htwoRec p hp hpne hpId
10523 have hmulχ :
10524 RatioOrbit.crossEq
10525 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
10526 (RatioOrbit.mul (χ twoPrimeDirection) (χ (primeDirection p hp))) :=
10527 hχ.multiplicative twoPrimeDirection (primeDirection p hp)
10528 have hmulTarget :
10529 RatioOrbit.crossEq
10530 (RatioOrbit.mul (χ twoPrimeDirection) (χ (primeDirection p hp)))
10531 (RatioOrbit.mul
10532 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)) :=
10533 ratioOrbit_mul_congr htwoRec hpId
10534 have hprod :
10535 RatioOrbit.crossEq
10536 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
10537 (RatioOrbit.mul
10538 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)) :=
10539 RatioOrbit.crossEq_trans hmulχ hmulTarget
10540 have hcostImage :
10541 RatioOrbit.crossEq
10542 (costFromCharacter χ
10543 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
10544 (onRatioOrbit
10545 (RatioOrbit.mul
10546 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp))) :=
10547 onRatioOrbit_congr hprod
10548 exact
10549 two_prime_composite_mixed_image_jcost_mismatch p hp
10550 (RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hcostImage) hcost)
10551 · have hpeq : p = twoOrbit := by
10552 by_contra h
10553 exact hpne h
10554 have hdir : primeDirection p hp = twoPrimeDirection := by
10555 subst hpeq
10556 rfl
10557 rw [hdir] at hpId
10558 have hself :
10559 RatioOrbit.crossEq twoPrimeDirection
10560 (RatioOrbit.recip twoPrimeDirection) :=
10561 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) htwoRec
10562 exact primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself
10563
10564theorem PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_prime_pair_product_cost_consistent
10565 {χ : RatioOrbit → RatioOrbit}
10566 (hχ : PRCRatioCharacter χ)
10567 (hpair : PRCCharacterPrimePairProductCostConsistent χ) :
10568 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ := by
10569 intro htwoRec hwitness
10570 rcases hwitness with ⟨p, hp, hpId⟩
10571 by_cases hpne : p ≠ twoOrbit
10572 · have hcost :=
10573 hpair twoOrbit twoOrbit_primeOrbit p hp
10574 have hmulχ :
10575 RatioOrbit.crossEq
10576 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
10577 (RatioOrbit.mul (χ twoPrimeDirection) (χ (primeDirection p hp))) :=
10578 hχ.multiplicative twoPrimeDirection (primeDirection p hp)
10579 have hmulTarget :
10580 RatioOrbit.crossEq
10581 (RatioOrbit.mul (χ twoPrimeDirection) (χ (primeDirection p hp)))
10582 (RatioOrbit.mul
10583 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)) :=
10584 ratioOrbit_mul_congr htwoRec hpId
10585 have hprod :
10586 RatioOrbit.crossEq
10587 (χ (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
10588 (RatioOrbit.mul
10589 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp)) :=
10590 RatioOrbit.crossEq_trans hmulχ hmulTarget
10591 have hcostImage :
10592 RatioOrbit.crossEq
10593 (costFromCharacter χ
10594 (RatioOrbit.mul twoPrimeDirection (primeDirection p hp)))
10595 (onRatioOrbit
10596 (RatioOrbit.mul
10597 (RatioOrbit.recip twoPrimeDirection) (primeDirection p hp))) :=
10598 onRatioOrbit_congr hprod
10599 exact
10600 two_prime_composite_mixed_image_jcost_mismatch p hp
10601 (RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hcostImage) hcost)
10602 · have hpeq : p = twoOrbit := by
10603 by_contra h
10604 exact hpne h
10605 have hdir : primeDirection p hp = twoPrimeDirection := by
10606 subst hpeq
10607 rfl
10608 rw [hdir] at hpId
10609 have hself :
10610 RatioOrbit.crossEq twoPrimeDirection
10611 (RatioOrbit.recip twoPrimeDirection) :=
10612 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hpId) htwoRec
10613 exact primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself
10614
10615theorem PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_prime_pair_product_cost_consistent
10616 {χ : RatioOrbit → RatioOrbit}
10617 (hχ : PRCRatioCharacter χ)
10618 (hprime : PRCCharacterPrimeDirectionCalibrated χ)
10619 (hpair : PRCCharacterPrimePairProductCostConsistent χ) :
10620 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ := by
10621 have hlocal :=
10622 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime
10623 have hexclWitness :
10624 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness χ :=
10625 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentityWitness_of_prime_pair_product_cost_consistent
10626 hχ hpair
10627 have hexcl :
10628 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ :=
10629 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_witness_excludes
10630 hexclWitness
10631 exact
10632 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_local_two_prime_reciprocal_excludes
10633 hlocal hexcl
10634
10635theorem PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_admissible
10636 {χ : RatioOrbit → RatioOrbit}
10637 (hadm : PRCAdmissibleRatioCharacter χ) :
10638 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ := by
10639 have hforces :
10640 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ :=
10641 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_prime_pair_product_cost_consistent
10642 hadm.ratio_character hadm.prime_calibrated
10643 hadm.prime_pair_product_cost
10644 intro p hp
10645 constructor
10646 · exact hforces p hp
10647 · intro htwoId
10648 rcases PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved
10649 χ hadm.ratio_character hadm.prime_calibrated p hp with hpId | hpRec
10650 · exact hpId
10651 · have htwistAdmissible :
10652 PRCAdmissibleRatioCharacter (PRCCharacterReciprocalTwist χ) :=
10653 hadm.reciprocalTwist
10654 have htwistForces :
10655 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity
10656 (PRCCharacterReciprocalTwist χ) :=
10657 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_prime_pair_product_cost_consistent
10658 htwistAdmissible.ratio_character
10659 htwistAdmissible.prime_calibrated
10660 htwistAdmissible.prime_pair_product_cost
10661 have htwistId :
10662 RatioOrbit.crossEq
10663 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
10664 (primeDirection p hp) :=
10665 (PRCCharacterReciprocalTwist_prime_identity_iff_reciprocal
10666 χ p hp).mpr hpRec
10667 have htwistTwoId := htwistForces p hp htwistId
10668 have htwoRec :
10669 RatioOrbit.crossEq (χ twoPrimeDirection)
10670 (RatioOrbit.recip twoPrimeDirection) :=
10671 (PRCCharacterReciprocalTwist_two_identity_iff_reciprocal
10672 χ).mp htwistTwoId
10673 have hself :
10674 RatioOrbit.crossEq twoPrimeDirection
10675 (RatioOrbit.recip twoPrimeDirection) :=
10676 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
10677 exact False.elim
10678 (primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself)
10679
10680theorem PRCCharacterPrimeOrientationCoherent_of_admissible
10681 {χ : RatioOrbit → RatioOrbit}
10682 (hadm : PRCAdmissibleRatioCharacter χ) :
10683 PRCCharacterPrimeOrientationCoherent χ := by
10684 have hlocal :=
10685 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved
10686 χ hadm.ratio_character hadm.prime_calibrated
10687 have hiff :
10688 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ :=
10689 PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_admissible hadm
10690 have hctrl :
10691 PRCCharacterTwoPrimeBranchControlsPrimes χ :=
10692 PRCCharacterTwoPrimeBranchControlsPrimes_of_local_prime_identity_iff_two
10693 hlocal hiff
10694 exact
10695 PRCCharacterPrimeOrientationCoherent_of_local_two_prime_branch_controls
10696 hlocal hctrl
10697
10698theorem PRCAdmissibleCharacterPrimeOrientationCoherentTarget_proved :
10699 PRCAdmissibleCharacterPrimeOrientationCoherentTarget := by
10700 intro χ hadm
10701 exact PRCCharacterPrimeOrientationCoherent_of_admissible hadm
10702
10703theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_of_prime_pair_product_cost_consistency
10704 (hpair :
10705 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
10706 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget := by
10707 intro χ hχ hprime _htwoRec p hp _hpne _hpId
10708 exact hpair χ hχ hprime twoOrbit twoOrbit_primeOrbit p hp
10709
10710theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_prime_calibration_propagation
10711 (hprop : PRCPrimeCalibrationPropagationTarget) :
10712 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget := by
10713 intro χ hχ hprime p hp r hr
10714 exact hprop χ hχ hprime
10715 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr))
10716
10717theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_coherent_prime_orientation
10718 (hcoh : PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget) :
10719 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget := by
10720 intro χ hχ hprime p hp r hr
10721 let qp := primeDirection p hp
10722 let qr := primeDirection r hr
10723 rcases hcoh χ hχ hprime with hallId | hallRec
10724 · have hpId : RatioOrbit.crossEq (χ qp) qp := by
10725 simpa [qp] using hallId p hp
10726 have hrId : RatioOrbit.crossEq (χ qr) qr := by
10727 simpa [qr] using hallId r hr
10728 exact onRatioOrbit_congr
10729 (RatioOrbit.crossEq_trans
10730 (hχ.multiplicative qp qr)
10731 (ratioOrbit_mul_congr hpId hrId))
10732 · have hpRec :
10733 RatioOrbit.crossEq (χ qp) (RatioOrbit.recip qp) := by
10734 simpa [qp] using hallRec p hp
10735 have hrRec :
10736 RatioOrbit.crossEq (χ qr) (RatioOrbit.recip qr) := by
10737 simpa [qr] using hallRec r hr
10738 exact RatioOrbit.crossEq_trans
10739 (onRatioOrbit_congr
10740 (RatioOrbit.crossEq_trans
10741 (hχ.multiplicative qp qr)
10742 (RatioOrbit.crossEq_trans
10743 (ratioOrbit_mul_congr hpRec hrRec)
10744 (ratioOrbit_mul_recip_recip_crossEq_recip_mul qp qr))))
10745 (RatioOrbit.crossEq_symm (reciprocal_symmetric (RatioOrbit.mul qp qr)))
10746
10747theorem PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_prime_pair_product_cost_consistency
10748 (hpair :
10749 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
10750 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget :=
10751 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_two_prime_branch_controls
10752 (PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_prime_identity_iff_two
10753 (PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_identity_forces_two
10754 (PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes_witness
10755 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_mixed_composite_cost_consistency_direct
10756 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_of_prime_pair_product_cost_consistency
10757 hpair)))))
10758
10759theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_coherent_prime_orientation :
10760 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10761 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget :=
10762 ⟨PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_prime_pair_product_cost_consistency,
10763 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_coherent_prime_orientation⟩
10764
10765theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_no_mixed_prime_witnesses
10766 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
10767 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget :=
10768 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_coherent_prime_orientation
10769 (PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_no_mixed_prime_witnesses
10770 hnomix)
10771
10772theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_pair_product_cost_consistency
10773 (hpair :
10774 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
10775 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget :=
10776 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_coherent_prime_orientation
10777 (PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_prime_pair_product_cost_consistency
10778 hpair)
10779
10780theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_witnesses :
10781 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10782 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget :=
10783 ⟨PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_pair_product_cost_consistency,
10784 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_no_mixed_prime_witnesses⟩
10785
10786theorem PRCPrimeCalibratedMixedPrimeWitnessesCharacter_absurd_of_no_mixed_prime_witnesses
10787 (hnomix : PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
10788 ¬ PRCPrimeCalibratedMixedPrimeWitnessesCharacter := by
10789 intro hmixed
10790 rcases hmixed with ⟨χ, hχ, hprime, hcharMixed⟩
10791 exact (hnomix χ hχ hprime) hcharMixed
10792
10793theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_no_mixed_prime_witness_character
10794 (hmixed : ¬ PRCPrimeCalibratedMixedPrimeWitnessesCharacter) :
10795 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
10796 intro χ hχ hprime hcharMixed
10797 exact hmixed ⟨χ, hχ, hprime, hcharMixed⟩
10798
10799theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_witness_character :
10800 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10801 ¬ PRCPrimeCalibratedMixedPrimeWitnessesCharacter :=
10802 ⟨PRCPrimeCalibratedMixedPrimeWitnessesCharacter_absurd_of_no_mixed_prime_witnesses,
10803 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_no_mixed_prime_witness_character⟩
10804
10805theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_witness_character :
10806 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10807 ¬ PRCPrimeCalibratedMixedPrimeWitnessesCharacter :=
10808 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_witnesses.trans
10809 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_witness_character
10810
10811theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_of_mixed_prime_witness_character
10812 (hmixed : PRCPrimeCalibratedMixedPrimeWitnessesCharacter) :
10813 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
10814 intro hnomix
10815 exact (PRCPrimeCalibratedMixedPrimeWitnessesCharacter_absurd_of_no_mixed_prime_witnesses
10816 hnomix) hmixed
10817
10818theorem PRCPrimeCalibratedMixedPrimeWitnessesCharacter_of_not_no_mixed_prime_witnesses
10819 (hnot : ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget) :
10820 PRCPrimeCalibratedMixedPrimeWitnessesCharacter := by
10821 by_contra hmixed
10822 exact hnot
10823 (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_no_mixed_prime_witness_character
10824 hmixed)
10825
10826theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_mixed_prime_witness_character :
10827 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10828 PRCPrimeCalibratedMixedPrimeWitnessesCharacter :=
10829 ⟨PRCPrimeCalibratedMixedPrimeWitnessesCharacter_of_not_no_mixed_prime_witnesses,
10830 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_of_mixed_prime_witness_character⟩
10831
10832theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_mixed_prime_witness_character
10833 (hmixed : PRCPrimeCalibratedMixedPrimeWitnessesCharacter) :
10834 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget := by
10835 intro hpair
10836 exact (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_of_mixed_prime_witness_character
10837 hmixed)
10838 (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_pair_product_cost_consistency
10839 hpair)
10840
10841theorem PRCPrimeCalibratedMixedPrimeWitnessesCharacter_of_not_prime_pair_product_cost_consistency
10842 (hnot : ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
10843 PRCPrimeCalibratedMixedPrimeWitnessesCharacter := by
10844 by_contra hmixed
10845 exact hnot
10846 ((PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_witness_character).mpr
10847 hmixed)
10848
10849theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_mixed_prime_witness_character :
10850 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10851 PRCPrimeCalibratedMixedPrimeWitnessesCharacter :=
10852 ⟨PRCPrimeCalibratedMixedPrimeWitnessesCharacter_of_not_prime_pair_product_cost_consistency,
10853 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_mixed_prime_witness_character⟩
10854
10855theorem PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_mixed_prime_witness_character
10856 (hmixed : PRCPrimeCalibratedMixedPrimeWitnessesCharacter) :
10857 PRCPrimeCalibratedMixedPrimePairWitnessCharacter := by
10858 rcases hmixed with ⟨χ, hχ, hprime, hcharMixed⟩
10859 exact ⟨χ, hχ, hprime,
10860 PRCCharacterMixedPrimePairWitnesses_of_mixed_prime_witnesses hcharMixed⟩
10861
10862theorem PRCPrimeCalibratedMixedPrimeWitnessesCharacter_of_pair_witness_character
10863 (hpair : PRCPrimeCalibratedMixedPrimePairWitnessCharacter) :
10864 PRCPrimeCalibratedMixedPrimeWitnessesCharacter := by
10865 rcases hpair with ⟨χ, hχ, hprime, hcharPair⟩
10866 exact ⟨χ, hχ, hprime,
10867 PRCCharacterMixedPrimeWitnesses_of_pair_witnesses hcharPair⟩
10868
10869theorem PRCPrimeCalibratedMixedPrimeWitnessesCharacter_iff_pair_witness_character :
10870 PRCPrimeCalibratedMixedPrimeWitnessesCharacter ↔
10871 PRCPrimeCalibratedMixedPrimePairWitnessCharacter :=
10872 ⟨PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_mixed_prime_witness_character,
10873 PRCPrimeCalibratedMixedPrimeWitnessesCharacter_of_pair_witness_character⟩
10874
10875theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_pair_witness_character :
10876 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10877 ¬ PRCPrimeCalibratedMixedPrimePairWitnessCharacter :=
10878 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_witness_character.trans
10879 (not_congr PRCPrimeCalibratedMixedPrimeWitnessesCharacter_iff_pair_witness_character)
10880
10881theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_mixed_prime_pair_witness_character :
10882 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10883 PRCPrimeCalibratedMixedPrimePairWitnessCharacter :=
10884 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_mixed_prime_witness_character.trans
10885 PRCPrimeCalibratedMixedPrimeWitnessesCharacter_iff_pair_witness_character
10886
10887theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_pair_witness_character :
10888 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10889 ¬ PRCPrimeCalibratedMixedPrimePairWitnessCharacter :=
10890 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_witness_character.trans
10891 (not_congr PRCPrimeCalibratedMixedPrimeWitnessesCharacter_iff_pair_witness_character)
10892
10893theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_mixed_prime_pair_witness_character :
10894 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10895 PRCPrimeCalibratedMixedPrimePairWitnessCharacter :=
10896 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_mixed_prime_witness_character.trans
10897 PRCPrimeCalibratedMixedPrimeWitnessesCharacter_iff_pair_witness_character
10898
10899theorem PRCPrimeCalibratedMixedPrimePairWitnessCharacter_same_or_distinct
10900 (hpair : PRCPrimeCalibratedMixedPrimePairWitnessCharacter) :
10901 PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∨
10902 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
10903 rcases hpair with ⟨χ, hχ, hprime, hcharPair⟩
10904 cases PRCCharacterMixedPrimePairWitnesses_same_or_distinct hcharPair with
10905 | inl hsame => exact Or.inl ⟨χ, hχ, hprime, hsame⟩
10906 | inr hdistinct => exact Or.inr ⟨χ, hχ, hprime, hdistinct⟩
10907
10908theorem PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_same
10909 (hsame : PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter) :
10910 PRCPrimeCalibratedMixedPrimePairWitnessCharacter := by
10911 rcases hsame with ⟨χ, hχ, hprime, hcharSame⟩
10912 exact ⟨χ, hχ, hprime,
10913 PRCCharacterMixedPrimePairWitnesses_of_same hcharSame⟩
10914
10915theorem PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_distinct
10916 (hdistinct : PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter) :
10917 PRCPrimeCalibratedMixedPrimePairWitnessCharacter := by
10918 rcases hdistinct with ⟨χ, hχ, hprime, hcharDistinct⟩
10919 exact ⟨χ, hχ, hprime,
10920 PRCCharacterMixedPrimePairWitnesses_of_distinct hcharDistinct⟩
10921
10922theorem PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_same_or_distinct
10923 (hsplit :
10924 PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∨
10925 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter) :
10926 PRCPrimeCalibratedMixedPrimePairWitnessCharacter := by
10927 cases hsplit with
10928 | inl hsame => exact PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_same hsame
10929 | inr hdistinct =>
10930 exact PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_distinct hdistinct
10931
10932theorem PRCPrimeCalibratedMixedPrimePairWitnessCharacter_iff_same_or_distinct :
10933 PRCPrimeCalibratedMixedPrimePairWitnessCharacter ↔
10934 PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∨
10935 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter :=
10936 ⟨PRCPrimeCalibratedMixedPrimePairWitnessCharacter_same_or_distinct,
10937 PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_same_or_distinct⟩
10938
10939theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_same_and_no_distinct_pair_witness_character :
10940 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10941 ¬ PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∧
10942 ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
10943 constructor
10944 · intro htarget
10945 constructor
10946 · intro hsame
10947 exact (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_pair_witness_character.mp
10948 htarget)
10949 (PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_same hsame)
10950 · intro hdistinct
10951 exact (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_pair_witness_character.mp
10952 htarget)
10953 (PRCPrimeCalibratedMixedPrimePairWitnessCharacter_of_distinct hdistinct)
10954 · intro hnoSplit
10955 exact PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_pair_witness_character.mpr
10956 (fun hpair =>
10957 (PRCPrimeCalibratedMixedPrimePairWitnessCharacter_iff_same_or_distinct.mp hpair).elim
10958 hnoSplit.1 hnoSplit.2)
10959
10960theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_same_or_distinct_pair_witness_character :
10961 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10962 PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∨
10963 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter :=
10964 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_mixed_prime_pair_witness_character.trans
10965 PRCPrimeCalibratedMixedPrimePairWitnessCharacter_iff_same_or_distinct
10966
10967theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_same_and_no_distinct_pair_witness_character :
10968 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10969 ¬ PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∧
10970 ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
10971 constructor
10972 · intro htarget
10973 exact PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_same_and_no_distinct_pair_witness_character.mp
10974 (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_pair_product_cost_consistency
10975 htarget)
10976 · intro hnoSplit
10977 exact PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_mixed_prime_pair_witness_character.mpr
10978 (fun hpair =>
10979 (PRCPrimeCalibratedMixedPrimePairWitnessCharacter_iff_same_or_distinct.mp hpair).elim
10980 hnoSplit.1 hnoSplit.2)
10981
10982theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_same_or_distinct_pair_witness_character :
10983 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
10984 PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter ∨
10985 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter :=
10986 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_mixed_prime_pair_witness_character.trans
10987 PRCPrimeCalibratedMixedPrimePairWitnessCharacter_iff_same_or_distinct
10988
10989theorem PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter_absurd :
10990 ¬ PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter := by
10991 intro hsame
10992 rcases hsame with ⟨χ, _hχ, _hprime, hcharSame⟩
10993 exact PRCCharacterSamePrimeMixedPairWitnesses_absurd hcharSame
10994
10995theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_distinct_prime_pair_witness_character :
10996 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
10997 ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
10998 constructor
10999 · intro htarget hdistinct
11000 exact (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_same_and_no_distinct_pair_witness_character.mp
11001 htarget).2 hdistinct
11002 · intro hnoDistinct
11003 exact PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_same_and_no_distinct_pair_witness_character.mpr
11004 ⟨PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter_absurd, hnoDistinct⟩
11005
11006theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_distinct_prime_pair_witness_character :
11007 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
11008 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
11009 constructor
11010 · intro hnot
11011 rcases (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_not_iff_same_or_distinct_pair_witness_character.mp
11012 hnot) with hsame | hdistinct
11013 · exact False.elim
11014 (PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter_absurd hsame)
11015 · exact hdistinct
11016 · intro hdistinct htarget
11017 exact (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_distinct_prime_pair_witness_character.mp
11018 htarget) hdistinct
11019
11020theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_distinct_prime_pair_witness_character :
11021 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
11022 ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
11023 constructor
11024 · intro htarget hdistinct
11025 exact (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_same_and_no_distinct_pair_witness_character.mp
11026 htarget).2 hdistinct
11027 · intro hnoDistinct
11028 exact PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_same_and_no_distinct_pair_witness_character.mpr
11029 ⟨PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter_absurd, hnoDistinct⟩
11030
11031theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_distinct_prime_pair_witness_character :
11032 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
11033 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
11034 constructor
11035 · intro hnot
11036 rcases (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_iff_same_or_distinct_pair_witness_character.mp
11037 hnot) with hsame | hdistinct
11038 · exact False.elim
11039 (PRCPrimeCalibratedSamePrimeMixedPairWitnessCharacter_absurd hsame)
11040 · exact hdistinct
11041 · intro hdistinct htarget
11042 exact (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_distinct_prime_pair_witness_character.mp
11043 htarget) hdistinct
11044
11045theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_no_distinct_prime_pair_witness_character
11046 (hnoDistinct : ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter) :
11047 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
11048 intro χ hχ hprime
11049 exact PRCCharacterPrimeIdentityBranchUniform_of_local_no_distinct_prime_pair
11050 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime) (by
11051 intro hdistinct
11052 exact hnoDistinct ⟨χ, hχ, hprime, hdistinct⟩)
11053
11054theorem PRCPrimeCalibrationForcesNoDistinctPrimePairWitnessCharacter_of_prime_identity_branch_uniformity
11055 (huniform : PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
11056 ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
11057 intro hdistinct
11058 rcases hdistinct with ⟨χ, hχ, hprime, hcharDistinct⟩
11059 exact PRCCharacterDistinctPrimeMixedPairWitnesses_absurd_of_branch_uniform
11060 (huniform χ hχ hprime) hcharDistinct
11061
11062theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_no_distinct_prime_pair_witness_character :
11063 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
11064 ¬ PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter :=
11065 ⟨PRCPrimeCalibrationForcesNoDistinctPrimePairWitnessCharacter_of_prime_identity_branch_uniformity,
11066 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_no_distinct_prime_pair_witness_character⟩
11067
11068theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_not_iff_distinct_prime_pair_witness_character :
11069 ¬ PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
11070 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
11071 constructor
11072 · intro hnot
11073 by_contra hnoDistinct
11074 exact hnot
11075 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_no_distinct_prime_pair_witness_character
11076 hnoDistinct)
11077 · intro hdistinct huniform
11078 exact (PRCPrimeCalibrationForcesNoDistinctPrimePairWitnessCharacter_of_prime_identity_branch_uniformity
11079 huniform) hdistinct
11080
11081theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_prime_identity_branch_uniformity :
11082 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
11083 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
11084 exact
11085 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_no_distinct_prime_pair_witness_character.trans
11086 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_no_distinct_prime_pair_witness_character.symm)
11087
11088theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_identity_iff_two
11089 (hiff : PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget) :
11090 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
11091 intro χ hχ hprime
11092 exact PRCCharacterPrimeIdentityBranchUniform_of_identity_iff_two
11093 (hiff χ hχ hprime)
11094
11095theorem PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_branch_uniformity
11096 (huniform : PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
11097 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget := by
11098 intro χ hχ hprime
11099 exact PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_branch_uniform
11100 (huniform χ hχ hprime)
11101
11102theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_identity_iff_two :
11103 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
11104 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget :=
11105 ⟨PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_branch_uniformity,
11106 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_identity_iff_two⟩
11107
11108theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_identity_forces_two :
11109 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
11110 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
11111 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_identity_iff_two.trans
11112 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_iff_identity_forces_two
11113
11114theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_prime_identity_forces_two :
11115 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
11116 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
11117 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_prime_identity_branch_uniformity.trans
11118 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_identity_forces_two
11119
11120theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_iff_distinct_prime_pair_witness_character :
11121 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
11122 PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter := by
11123 constructor
11124 · intro hnot
11125 exact PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_not_iff_distinct_prime_pair_witness_character.mp
11126 (fun huniform =>
11127 hnot
11128 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_identity_forces_two.mp
11129 huniform))
11130 · intro hdistinct hforces
11131 exact
11132 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_not_iff_distinct_prime_pair_witness_character.mpr
11133 hdistinct)
11134 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_identity_forces_two.mpr
11135 hforces)
11136
11137theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_no_two_prime_mixed_character :
11138 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
11139 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter :=
11140 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness.trans
11141 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_mixed_character
11142
11143theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_no_non_two_mixed_character :
11144 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
11145 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter :=
11146 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness.trans
11147 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_non_two_mixed_character
11148
11149theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_no_non_two_composite_defect_character :
11150 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
11151 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter :=
11152 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness.trans
11153 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_defect_character
11154
11155theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_no_non_two_composite_cost_defect_character :
11156 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
11157 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter :=
11158 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness.trans
11159 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_composite_cost_defect_character
11160
11161theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_mixed_composite_cost_consistency :
11162 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
11163 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget :=
11164 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness.trans
11165 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_mixed_composite_cost_consistency
11166
11167theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_mixed_composite_cost_consistency :
11168 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget ↔
11169 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget :=
11170 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_prime_identity_forces_two.trans
11171 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_mixed_composite_cost_consistency
11172
11173theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_non_two_mixed_character :
11174 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget ↔
11175 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter :=
11176 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_mixed_composite_cost_consistency.symm.trans
11177 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_non_two_mixed_character
11178
11179theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_iff_non_two_mixed_character :
11180 ¬ PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget ↔
11181 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter := by
11182 constructor
11183 · intro hnot
11184 by_contra hnoMixed
11185 exact hnot
11186 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_non_two_mixed_character.mpr
11187 hnoMixed)
11188 · intro hmixed htarget
11189 exact
11190 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_non_two_mixed_character.mp
11191 htarget) hmixed
11192
11193theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_mixed_composite_cost_consistency
11194 (hconsistency :
11195 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget) :
11196 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter := by
11197 intro htwist
11198 exact
11199 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_non_two_mixed_character.mp
11200 hconsistency)
11201 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_adic_axis_twist
11202 htwist)
11203
11204theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_prime_identity_forces_two
11205 (hforces :
11206 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
11207 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter :=
11208 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_mixed_composite_cost_consistency
11209 (PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_mixed_composite_cost_consistency.mp
11210 hforces)
11211
11212theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_prime_pair_product_cost_consistency
11213 (hpair :
11214 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
11215 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter :=
11216 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_mixed_composite_cost_consistency
11217 (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_mixed_composite_cost_consistency.mp
11218 hpair)
11219
11220theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_of_two_adic_axis_twist
11221 (htwist :
11222 PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
11223 ¬ PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget := by
11224 intro hconsistency
11225 exact
11226 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_mixed_composite_cost_consistency
11227 hconsistency) htwist
11228
11229theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_of_two_adic_axis_twist
11230 (htwist :
11231 PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
11232 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget := by
11233 intro hforces
11234 exact
11235 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_prime_identity_forces_two
11236 hforces) htwist
11237
11238theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_two_adic_axis_twist
11239 (htwist :
11240 PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
11241 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget := by
11242 intro hpair
11243 exact
11244 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_prime_pair_product_cost_consistency
11245 hpair) htwist
11246
11247theorem PRCTwoAdicAxisTwistRatioCharacter_absurd_of_mixed_composite_cost_consistency
11248 (hconsistency :
11249 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget) :
11250 ¬ PRCTwoAdicAxisTwistRatioCharacter :=
11251 PRCTwoAdicAxisTwistRatioCharacter_absurd_of_no_calibrated_twist
11252 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_mixed_composite_cost_consistency
11253 hconsistency)
11254
11255theorem PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_forces_two
11256 (hforces :
11257 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
11258 ¬ PRCTwoAdicAxisTwistRatioCharacter :=
11259 PRCTwoAdicAxisTwistRatioCharacter_absurd_of_no_calibrated_twist
11260 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_prime_identity_forces_two
11261 hforces)
11262
11263theorem PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_pair_product_cost_consistency
11264 (hpair :
11265 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
11266 ¬ PRCTwoAdicAxisTwistRatioCharacter :=
11267 PRCTwoAdicAxisTwistRatioCharacter_absurd_of_no_calibrated_twist
11268 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_prime_pair_product_cost_consistency
11269 hpair)
11270
11271theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_of_ratio_character_axis_twist
11272 (htwist :
11273 PRCTwoAdicAxisTwistRatioCharacter) :
11274 ¬ PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget := by
11275 exact
11276 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_of_two_adic_axis_twist
11277 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist
11278 htwist)
11279
11280theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_of_ratio_character_axis_twist
11281 (htwist :
11282 PRCTwoAdicAxisTwistRatioCharacter) :
11283 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget := by
11284 exact
11285 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_of_two_adic_axis_twist
11286 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist
11287 htwist)
11288
11289theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_ratio_character_axis_twist
11290 (htwist :
11291 PRCTwoAdicAxisTwistRatioCharacter) :
11292 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget := by
11293 exact
11294 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_two_adic_axis_twist
11295 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist
11296 htwist)
11297
11298theorem twoThreePrimeMixedDirection_not_crossEq_composite :
11299 ¬ RatioOrbit.crossEq twoThreePrimeMixedDirection
11300 twoThreePrimeCompositeDirection := by
11301 intro h
11302 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
11303 rw [twoThreePrimeMixedDirection_toRat,
11304 twoThreePrimeCompositeDirection_toRat] at h
11305 norm_num at h
11306
11307theorem twoThreePrimeMixedDirection_not_crossEq_composite_recip :
11308 ¬ RatioOrbit.crossEq twoThreePrimeMixedDirection
11309 (RatioOrbit.recip twoThreePrimeCompositeDirection) := by
11310 intro h
11311 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
11312 rw [twoThreePrimeMixedDirection_toRat, RatioOrbit.recip_toRat,
11313 twoThreePrimeCompositeDirection_toRat] at h
11314 norm_num at h
11315
11316theorem PRCCharacterTwoAdicAxisTwist_two_three_mixed_image
11317 {χ : RatioOrbit → RatioOrbit}
11318 (hχ : PRCRatioCharacter χ)
11319 (htwist : PRCCharacterTwoAdicAxisTwist χ) :
11320 RatioOrbit.crossEq (χ twoThreePrimeCompositeDirection)
11321 twoThreePrimeMixedDirection := by
11322 have hthreeId :
11323 RatioOrbit.crossEq (χ threePrimeDirection) threePrimeDirection := by
11324 simpa [threePrimeDirection] using
11325 htwist.2 threeOrbit threeOrbit_primeOrbit threeOrbit_ne_twoOrbit
11326 exact
11327 RatioOrbit.crossEq_trans
11328 (by
11329 simpa [twoThreePrimeCompositeDirection] using
11330 hχ.multiplicative twoPrimeDirection threePrimeDirection)
11331 (by
11332 simpa [twoThreePrimeMixedDirection] using
11333 ratioOrbit_mul_congr htwist.1 hthreeId)
11334
11335theorem PRCCharacterTwoAdicAxisTwist_two_three_local_orientation_absurd
11336 {χ : RatioOrbit → RatioOrbit}
11337 (hχ : PRCRatioCharacter χ)
11338 (htwist : PRCCharacterTwoAdicAxisTwist χ) :
11339 ¬ PRCCharacterTwoThreeCompositeLocalOrientation χ := by
11340 intro hlocal
11341 have himage :=
11342 PRCCharacterTwoAdicAxisTwist_two_three_mixed_image hχ htwist
11343 rcases hlocal with hidentity | hreciprocal
11344 · exact twoThreePrimeMixedDirection_not_crossEq_composite
11345 (RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm himage) hidentity)
11346 · exact twoThreePrimeMixedDirection_not_crossEq_composite_recip
11347 (RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm himage) hreciprocal)
11348
11349theorem PRCTwoAdicAxisTwistRatioCharacter_forces_two_three_local_orientation_failure
11350 (htwist : PRCTwoAdicAxisTwistRatioCharacter) :
11351 ∃ χ : RatioOrbit → RatioOrbit,
11352 PRCRatioCharacter χ ∧
11353 PRCCharacterTwoAdicAxisTwist χ ∧
11354 ¬ PRCCharacterTwoThreeCompositeLocalOrientation χ := by
11355 rcases htwist with ⟨χ, hχ, hbranch⟩
11356 exact ⟨χ, hχ, hbranch,
11357 PRCCharacterTwoAdicAxisTwist_two_three_local_orientation_absurd hχ hbranch⟩
11358
11359theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_of_ratio_character_axis_twist
11360 (htwist : PRCTwoAdicAxisTwistRatioCharacter) :
11361 PRCTwoThreeCompositeLocalOrientationFailureCharacter :=
11362 PRCTwoAdicAxisTwistRatioCharacter_forces_two_three_local_orientation_failure
11363 htwist
11364
11365theorem PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11366 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11367 PRCTwoAdicAxisTwistRatioCharacter := by
11368 rcases hfail with ⟨χ, hχ, hbranch, _hnotLocal⟩
11369 exact ⟨χ, hχ, hbranch⟩
11370
11371theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_ratio_character_axis_twist :
11372 PRCTwoThreeCompositeLocalOrientationFailureCharacter ↔
11373 PRCTwoAdicAxisTwistRatioCharacter :=
11374 ⟨PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character,
11375 PRCTwoThreeCompositeLocalOrientationFailureCharacter_of_ratio_character_axis_twist⟩
11376
11377theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_calibrated_two_adic_axis_twist :
11378 PRCTwoThreeCompositeLocalOrientationFailureCharacter ↔
11379 PRCPrimeCalibratedTwoAdicAxisTwistCharacter :=
11380 PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_ratio_character_axis_twist.trans
11381 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_iff_ratio_character_axis_twist.symm
11382
11383theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_ratio_character_axis_twist
11384 (hno : ¬ PRCTwoAdicAxisTwistRatioCharacter) :
11385 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget := by
11386 intro χ hχ hbranch
11387 exfalso
11388 exact hno ⟨χ, hχ, hbranch⟩
11389
11390theorem PRCTwoAdicAxisTwistRatioCharacter_absurd_of_two_three_local_orientation_target
11391 (htarget :
11392 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget) :
11393 ¬ PRCTwoAdicAxisTwistRatioCharacter := by
11394 intro htwist
11395 rcases htwist with ⟨χ, hχ, hbranch⟩
11396 exact
11397 (PRCCharacterTwoAdicAxisTwist_two_three_local_orientation_absurd hχ hbranch)
11398 (htarget χ hχ hbranch)
11399
11400theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_ratio_character_axis_twist :
11401 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget ↔
11402 ¬ PRCTwoAdicAxisTwistRatioCharacter :=
11403 ⟨PRCTwoAdicAxisTwistRatioCharacter_absurd_of_two_three_local_orientation_target,
11404 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_ratio_character_axis_twist⟩
11405
11406theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_two_three_local_orientation_target
11407 (htarget :
11408 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget) :
11409 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter := by
11410 intro hfail
11411 exact
11412 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_two_three_local_orientation_target
11413 htarget)
11414 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11415 hfail)
11416
11417theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character :
11418 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget ↔
11419 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter :=
11420 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_ratio_character_axis_twist.trans
11421 (not_congr
11422 PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_ratio_character_axis_twist.symm)
11423
11424theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_calibrated_two_adic_axis_twist :
11425 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget ↔
11426 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter :=
11427 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character.trans
11428 (not_congr
11429 PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_calibrated_two_adic_axis_twist)
11430
11431theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_two_three_local_orientation_target
11432 (htarget :
11433 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget) :
11434 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter :=
11435 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_calibrated_two_adic_axis_twist.mp
11436 htarget
11437
11438theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_failure_character
11439 (hno : ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11440 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11441 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character.mpr
11442 hno
11443
11444/-- Closed certificate for the exact `2*3` two-adic fork. It packages the
11445constructive branch (`failure` / `ratio twist` / `calibrated twist`) and the
11446positive branch (local orientation as the negation of each equivalent witness)
11447under one name, so downstream certificate wiring does not have to repeat the
11448equivalence chain. -/
11449structure PRCTwoThreeCompositeLocalForkCertificate : Prop where
11450 failure_iff_ratio_character_axis_twist :
11451 PRCTwoThreeCompositeLocalOrientationFailureCharacter ↔
11452 PRCTwoAdicAxisTwistRatioCharacter
11453 calibrated_two_adic_axis_twist_iff_ratio_character_axis_twist :
11454 PRCPrimeCalibratedTwoAdicAxisTwistCharacter ↔
11455 PRCTwoAdicAxisTwistRatioCharacter
11456 failure_iff_calibrated_two_adic_axis_twist :
11457 PRCTwoThreeCompositeLocalOrientationFailureCharacter ↔
11458 PRCPrimeCalibratedTwoAdicAxisTwistCharacter
11459 target_iff_no_ratio_character_axis_twist :
11460 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget ↔
11461 ¬ PRCTwoAdicAxisTwistRatioCharacter
11462 target_iff_no_failure_character :
11463 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget ↔
11464 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter
11465 target_iff_no_calibrated_two_adic_axis_twist :
11466 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget ↔
11467 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter
11468 target_excludes_calibrated_two_adic_axis_twist :
11469 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget →
11470 ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter
11471 no_failure_character_forces_target :
11472 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter →
11473 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget
11474 mixed_composite_cost_consistency_excludes_failure_character :
11475 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget →
11476 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter
11477 prime_identity_forces_two_excludes_failure_character :
11478 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget →
11479 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter
11480 prime_pair_product_cost_consistency_excludes_failure_character :
11481 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget →
11482 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter
11483
11484def prcTwoThreeCompositeLocalForkCertificate :
11485 PRCTwoThreeCompositeLocalForkCertificate where
11486 failure_iff_ratio_character_axis_twist :=
11487 PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_ratio_character_axis_twist
11488 calibrated_two_adic_axis_twist_iff_ratio_character_axis_twist :=
11489 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_iff_ratio_character_axis_twist
11490 failure_iff_calibrated_two_adic_axis_twist :=
11491 PRCTwoThreeCompositeLocalOrientationFailureCharacter_iff_calibrated_two_adic_axis_twist
11492 target_iff_no_ratio_character_axis_twist :=
11493 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_ratio_character_axis_twist
11494 target_iff_no_failure_character :=
11495 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character
11496 target_iff_no_calibrated_two_adic_axis_twist :=
11497 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_calibrated_two_adic_axis_twist
11498 target_excludes_calibrated_two_adic_axis_twist :=
11499 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_absurd_of_two_three_local_orientation_target
11500 no_failure_character_forces_target :=
11501 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_failure_character
11502 mixed_composite_cost_consistency_excludes_failure_character := by
11503 intro hconsistency hfail
11504 exact
11505 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_mixed_composite_cost_consistency
11506 hconsistency)
11507 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11508 hfail)
11509 prime_identity_forces_two_excludes_failure_character := by
11510 intro hforces hfail
11511 exact
11512 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_forces_two
11513 hforces)
11514 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11515 hfail)
11516 prime_pair_product_cost_consistency_excludes_failure_character := by
11517 intro hpair hfail
11518 exact
11519 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_pair_product_cost_consistency
11520 hpair)
11521 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11522 hfail)
11523
11524theorem PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_two_three_local_orientation_failure_character
11525 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11526 PRCPrimeCalibratedTwoAdicAxisTwistCharacter :=
11527 PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_ratio_character_axis_twist
11528 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11529 hfail)
11530
11531theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_three_local_orientation_failure_character
11532 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11533 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter :=
11534 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_adic_axis_twist
11535 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_two_three_local_orientation_failure_character
11536 hfail)
11537
11538theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_two_three_local_orientation_failure_character
11539 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11540 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter :=
11541 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_non_two_mixed
11542 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_three_local_orientation_failure_character
11543 hfail)
11544
11545theorem PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_of_two_three_local_orientation_failure_character
11546 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11547 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter :=
11548 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_of_composite_defect
11549 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_two_three_local_orientation_failure_character
11550 hfail)
11551
11552theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_of_two_three_local_orientation_failure_character
11553 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11554 ¬ PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget :=
11555 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_of_ratio_character_axis_twist
11556 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11557 hfail)
11558
11559theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_of_two_three_local_orientation_failure_character
11560 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11561 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
11562 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_of_ratio_character_axis_twist
11563 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11564 hfail)
11565
11566theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_two_three_local_orientation_failure_character
11567 (hfail : PRCTwoThreeCompositeLocalOrientationFailureCharacter) :
11568 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget :=
11569 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_not_of_ratio_character_axis_twist
11570 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11571 hfail)
11572
11573theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_calibrated_two_adic_axis_twist
11574 (hno : ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
11575 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter := by
11576 intro hfail
11577 exact hno
11578 (PRCPrimeCalibratedTwoAdicAxisTwistCharacter_of_two_three_local_orientation_failure_character
11579 hfail)
11580
11581theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_non_two_mixed_character
11582 (hno :
11583 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
11584 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter := by
11585 intro hfail
11586 exact hno
11587 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter_of_two_three_local_orientation_failure_character
11588 hfail)
11589
11590theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_non_two_composite_defect_character
11591 (hno :
11592 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter) :
11593 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter := by
11594 intro hfail
11595 exact hno
11596 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter_of_two_three_local_orientation_failure_character
11597 hfail)
11598
11599theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_non_two_composite_cost_defect_character
11600 (hno :
11601 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter) :
11602 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter := by
11603 intro hfail
11604 exact hno
11605 (PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter_of_two_three_local_orientation_failure_character
11606 hfail)
11607
11608theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_calibrated_two_adic_axis_twist
11609 (hno : ¬ PRCPrimeCalibratedTwoAdicAxisTwistCharacter) :
11610 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11611 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character.mpr
11612 (PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_calibrated_two_adic_axis_twist
11613 hno)
11614
11615theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_non_two_mixed_character
11616 (hno :
11617 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
11618 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11619 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character.mpr
11620 (PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_non_two_mixed_character
11621 hno)
11622
11623theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_non_two_composite_defect_character
11624 (hno :
11625 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeDefectCharacter) :
11626 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11627 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character.mpr
11628 (PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_non_two_composite_defect_character
11629 hno)
11630
11631theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_non_two_composite_cost_defect_character
11632 (hno :
11633 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter) :
11634 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11635 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_failure_character.mpr
11636 (PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_no_non_two_composite_cost_defect_character
11637 hno)
11638
11639theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_mixed_composite_cost_consistency
11640 (hconsistency :
11641 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget) :
11642 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11643 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_ratio_character_axis_twist.mpr
11644 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_mixed_composite_cost_consistency
11645 hconsistency)
11646
11647theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_prime_identity_forces_two
11648 (hforces :
11649 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
11650 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11651 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_ratio_character_axis_twist.mpr
11652 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_forces_two
11653 hforces)
11654
11655theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_prime_pair_product_cost_consistency
11656 (hpair :
11657 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
11658 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11659 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_iff_no_ratio_character_axis_twist.mpr
11660 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_pair_product_cost_consistency
11661 hpair)
11662
11663theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_mixed_composite_cost_consistency
11664 (hconsistency :
11665 PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget) :
11666 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter :=
11667 PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_two_three_local_orientation_target
11668 (PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_mixed_composite_cost_consistency
11669 hconsistency)
11670
11671theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_prime_identity_forces_two
11672 (hforces :
11673 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
11674 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter :=
11675 PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_two_three_local_orientation_target
11676 (PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_prime_identity_forces_two
11677 hforces)
11678
11679theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_prime_pair_product_cost_consistency
11680 (hpair :
11681 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
11682 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter :=
11683 PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_two_three_local_orientation_target
11684 (PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_prime_pair_product_cost_consistency
11685 hpair)
11686
11687theorem PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_branch_uniformity
11688 (huniform :
11689 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
11690 ¬ PRCTwoAdicAxisTwistRatioCharacter := by
11691 intro htwist
11692 rcases htwist with ⟨χ, hχ, haxis⟩
11693 have hprime : PRCCharacterPrimeDirectionCalibrated χ :=
11694 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist haxis
11695 have hthreeId :
11696 RatioOrbit.crossEq (χ threePrimeDirection) threePrimeDirection := by
11697 simpa [threePrimeDirection] using
11698 haxis.2 threeOrbit threeOrbit_primeOrbit threeOrbit_ne_twoOrbit
11699 have htwoId :
11700 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection :=
11701 huniform χ hχ hprime threeOrbit threeOrbit_primeOrbit
11702 twoOrbit twoOrbit_primeOrbit hthreeId
11703 have hself :
11704 RatioOrbit.crossEq twoPrimeDirection
11705 (RatioOrbit.recip twoPrimeDirection) :=
11706 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) haxis.1
11707 exact primeDirection_not_crossEq_recip twoOrbit twoOrbit_primeOrbit hself
11708
11709theorem PRCTwoThreeCompositeLocalOrientationFailureCharacter_absurd_of_prime_identity_branch_uniformity
11710 (huniform :
11711 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
11712 ¬ PRCTwoThreeCompositeLocalOrientationFailureCharacter := by
11713 intro hfail
11714 exact
11715 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_branch_uniformity
11716 huniform)
11717 (PRCTwoAdicAxisTwistRatioCharacter_of_two_three_local_orientation_failure_character
11718 hfail)
11719
11720theorem PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_prime_identity_branch_uniformity
11721 (huniform :
11722 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget) :
11723 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget :=
11724 PRCTwoThreeCompositeLocalOrientationForTwoAdicAxisTwistTarget_of_no_ratio_character_axis_twist
11725 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_branch_uniformity
11726 huniform)
11727
11728theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_not_of_non_two_mixed_character
11729 (hmix :
11730 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoPrimeMixedCharacter) :
11731 ¬ PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
11732 intro huniform
11733 exact
11734 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_no_distinct_prime_pair_witness_character.mp
11735 huniform)
11736 (PRCPrimeCalibratedDistinctPrimeMixedPairWitnessCharacter_of_non_two_mixed
11737 hmix)
11738
11739theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_not_of_ratio_character_axis_twist
11740 (htwist :
11741 PRCTwoAdicAxisTwistRatioCharacter) :
11742 ¬ PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget := by
11743 intro huniform
11744 exact
11745 (PRCTwoAdicAxisTwistRatioCharacter_absurd_of_prime_identity_branch_uniformity
11746 huniform) htwist
11747
11748theorem PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_refuted :
11749 ¬ PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget :=
11750 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_not_of_ratio_character_axis_twist
11751 PRCTwoAdicAxisTwistRatioCharacter_constructed
11752
11753theorem PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_refuted :
11754 ¬ PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget := by
11755 intro hpair
11756 exact PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_refuted
11757 (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_prime_identity_branch_uniformity.mp
11758 hpair)
11759
11760theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_refuted :
11761 ¬ PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget := by
11762 intro hconsistency
11763 exact PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_refuted
11764 (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_mixed_composite_cost_consistency.mpr
11765 hconsistency)
11766
11767theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_refuted :
11768 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget := by
11769 intro htarget
11770 exact PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_refuted
11771 (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_iff_prime_identity_forces_two.mpr
11772 htarget)
11773
11774theorem PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_refuted :
11775 ¬ PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget := by
11776 intro htarget
11777 exact PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_refuted
11778 (PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_iff_identity_forces_two.mp
11779 htarget)
11780
11781theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_refuted :
11782 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget := by
11783 intro htarget
11784 exact PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_refuted
11785 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_mixed_composite_cost_consistency.mp
11786 htarget)
11787
11788theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_refuted :
11789 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget := by
11790 intro htarget
11791 exact PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_refuted
11792 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_iff_witness.mp
11793 htarget)
11794
11795theorem PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_refuted :
11796 ¬ PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget := by
11797 intro htarget
11798 exact PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_refuted
11799 (PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_iff_prime_identity_iff_two.mp
11800 htarget)
11801
11802theorem PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_refuted :
11803 ¬ PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget := by
11804 intro htarget
11805 exact PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_refuted
11806 (PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_iff_two_prime_branch_controls.mp
11807 htarget)
11808
11809theorem PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_refuted :
11810 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget := by
11811 intro htarget
11812 exact PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_refuted
11813 (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_coherent_prime_orientation.mp
11814 htarget)
11815
11816theorem PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_refuted :
11817 ¬ PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget := by
11818 intro htarget
11819 exact PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_refuted
11820 (PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_orientation.mpr
11821 htarget)
11822
11823theorem PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_refuted :
11824 ¬ PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget := by
11825 intro htarget
11826 exact PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_refuted
11827 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_trace_coherence.mpr
11828 htarget)
11829
11830theorem PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_refuted :
11831 ¬ PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget := by
11832 intro htarget
11833 exact PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_refuted
11834 (PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_trace_transport.mpr
11835 htarget)
11836
11837theorem PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_refuted :
11838 ¬ PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget := by
11839 intro htarget
11840 exact PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_refuted
11841 (PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_common_trace_extension.mpr
11842 htarget)
11843
11844theorem PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_refuted :
11845 ¬ PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget := by
11846 intro htarget
11847 exact PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_refuted
11848 (PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_canonical_add_trace.mpr
11849 htarget)
11850
11851theorem PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_refuted :
11852 ¬ PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget := by
11853 intro htarget
11854 exact PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_refuted
11855 (PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_comparable_trace.mpr
11856 htarget)
11857
11858theorem twoAdicAxisTwistCharacter_not_prime_pair_product_cost_consistent :
11859 ¬ PRCCharacterPrimePairProductCostConsistent
11860 twoAdicAxisTwistCharacter := by
11861 intro hconsistent
11862 have hcost :
11863 RatioOrbit.crossEq
11864 (costFromCharacter twoAdicAxisTwistCharacter
11865 twoThreePrimeCompositeDirection)
11866 (onRatioOrbit twoThreePrimeCompositeDirection) := by
11867 simpa [twoThreePrimeCompositeDirection, twoPrimeDirection,
11868 threePrimeDirection] using
11869 hconsistent twoOrbit twoOrbit_primeOrbit
11870 threeOrbit threeOrbit_primeOrbit
11871 have himage :
11872 RatioOrbit.crossEq
11873 (twoAdicAxisTwistCharacter twoThreePrimeCompositeDirection)
11874 twoThreePrimeMixedDirection :=
11875 PRCCharacterTwoAdicAxisTwist_two_three_mixed_image
11876 twoAdicAxisTwistCharacter_ratio_character
11877 twoAdicAxisTwistCharacter_branch
11878 have hcostImage :
11879 RatioOrbit.crossEq
11880 (costFromCharacter twoAdicAxisTwistCharacter
11881 twoThreePrimeCompositeDirection)
11882 (onRatioOrbit twoThreePrimeMixedDirection) := by
11883 unfold costFromCharacter
11884 exact onRatioOrbit_congr himage
11885 exact
11886 two_prime_composite_mixed_image_jcost_mismatch
11887 threeOrbit threeOrbit_primeOrbit
11888 (by
11889 simpa [twoThreePrimeMixedDirection, twoThreePrimeCompositeDirection,
11890 threePrimeDirection] using
11891 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hcostImage) hcost)
11892
11893theorem twoAdicAxisTwistCharacter_not_admissible :
11894 ¬ PRCAdmissibleRatioCharacter twoAdicAxisTwistCharacter := by
11895 intro hadm
11896 exact twoAdicAxisTwistCharacter_not_prime_pair_product_cost_consistent
11897 hadm.prime_pair_product_cost
11898
11899theorem costFromCharacter_reciprocal_congr
11900 (χ : RatioOrbit → RatioOrbit) (hχ : PRCRatioCharacter χ)
11901 (q : RatioOrbit) :
11902 RatioOrbit.crossEq (costFromCharacter χ q)
11903 (costFromCharacter χ (RatioOrbit.recip q)) := by
11904 unfold costFromCharacter
11905 exact RatioOrbit.crossEq_trans
11906 (reciprocal_symmetric (χ q))
11907 (RatioOrbit.crossEq_symm (onRatioOrbit_congr (hχ.reciprocal q)))
11908
11909theorem costFromCharacter_normalized_congr
11910 (χ : RatioOrbit → RatioOrbit) (hχ : PRCRatioCharacter χ)
11911 (q : RatioOrbit) :
11912 RatioOrbit.crossEq (costFromCharacter χ q)
11913 (costFromCharacter χ (DistinctionNat.normalizeRatio q)) := by
11914 unfold costFromCharacter
11915 exact onRatioOrbit_congr (hχ.normalized_invariant q)
11916
11917theorem costFromCharacter_mul_congr
11918 (χ : RatioOrbit → RatioOrbit) (hχ : PRCRatioCharacter χ)
11919 (x y : RatioOrbit) :
11920 RatioOrbit.crossEq (costFromCharacter χ (RatioOrbit.mul x y))
11921 (onRatioOrbit (RatioOrbit.mul (χ x) (χ y))) := by
11922 unfold costFromCharacter
11923 exact onRatioOrbit_congr (hχ.multiplicative x y)
11924
11925theorem costFromCharacter_div_congr
11926 (χ : RatioOrbit → RatioOrbit) (hχ : PRCRatioCharacter χ)
11927 (x y : RatioOrbit) :
11928 RatioOrbit.crossEq (costFromCharacter χ (div x y))
11929 (onRatioOrbit (div (χ x) (χ y))) := by
11930 unfold costFromCharacter div
11931 exact onRatioOrbit_congr
11932 (RatioOrbit.crossEq_trans
11933 (hχ.multiplicative x (RatioOrbit.recip y))
11934 (ratioOrbit_mul_congr (RatioOrbit.crossEq_refl (χ x))
11935 (hχ.reciprocal y)))
11936
11937theorem costFromCharacter_canonical_rcl
11938 (χ : RatioOrbit → RatioOrbit) (hχ : PRCRatioCharacter χ)
11939 {x y : RatioOrbit} (hx : x.toRat ≠ 0) (hy : y.toRat ≠ 0) :
11940 RatioOrbit.crossEq
11941 (RatioOrbit.add
11942 (costFromCharacter χ (RatioOrbit.mul x y))
11943 (costFromCharacter χ (div x y)))
11944 (RatioOrbit.add
11945 (RatioOrbit.add
11946 (RatioOrbit.mul two
11947 (RatioOrbit.mul (costFromCharacter χ x)
11948 (costFromCharacter χ y)))
11949 (RatioOrbit.mul two (costFromCharacter χ x)))
11950 (RatioOrbit.mul two (costFromCharacter χ y))) := by
11951 let X := χ x
11952 let Y := χ y
11953 have hX : X.toRat ≠ 0 := by
11954 exact hχ.nonzero_preserving hx
11955 have hY : Y.toRat ≠ 0 := by
11956 exact hχ.nonzero_preserving hy
11957 have hcanon :
11958 RatioOrbit.crossEq
11959 (RatioOrbit.add (onRatioOrbit (RatioOrbit.mul X Y))
11960 (onRatioOrbit (div X Y)))
11961 (RatioOrbit.add
11962 (RatioOrbit.add
11963 (RatioOrbit.mul two
11964 (RatioOrbit.mul (onRatioOrbit X) (onRatioOrbit Y)))
11965 (RatioOrbit.mul two (onRatioOrbit X)))
11966 (RatioOrbit.mul two (onRatioOrbit Y))) :=
11967 canonical_rcl_surface hX hY
11968 have hleft :
11969 RatioOrbit.crossEq
11970 (RatioOrbit.add
11971 (costFromCharacter χ (RatioOrbit.mul x y))
11972 (costFromCharacter χ (div x y)))
11973 (RatioOrbit.add (onRatioOrbit (RatioOrbit.mul X Y))
11974 (onRatioOrbit (div X Y))) := by
11975 exact ratioOrbit_add_congr
11976 (costFromCharacter_mul_congr χ hχ x y)
11977 (costFromCharacter_div_congr χ hχ x y)
11978 have hright :
11979 RatioOrbit.crossEq
11980 (RatioOrbit.add
11981 (RatioOrbit.add
11982 (RatioOrbit.mul two
11983 (RatioOrbit.mul (onRatioOrbit X) (onRatioOrbit Y)))
11984 (RatioOrbit.mul two (onRatioOrbit X)))
11985 (RatioOrbit.mul two (onRatioOrbit Y)))
11986 (RatioOrbit.add
11987 (RatioOrbit.add
11988 (RatioOrbit.mul two
11989 (RatioOrbit.mul (costFromCharacter χ x)
11990 (costFromCharacter χ y)))
11991 (RatioOrbit.mul two (costFromCharacter χ x)))
11992 (RatioOrbit.mul two (costFromCharacter χ y))) := by
11993 unfold costFromCharacter X Y
11994 exact RatioOrbit.crossEq_refl _
11995 exact RatioOrbit.crossEq_trans hleft
11996 (RatioOrbit.crossEq_trans hcanon hright)
11997
11998/-- Exact remaining construction target for refuting the admissibility-upgrade
11999route: find an exact-unit-zero native cost cross-equivalent to the two-adic
12000generated character cost. The generated cost has the right quotient behavior;
12001the only delicate point is satisfying the `PRCNativeCostHypotheses` interface
12002whose `unit_zero` field is definitional equality, not cross-equivalence. -/
12003def PRCTwoAdicAxisTwistGeneratedCostNativeHypothesesTarget : Prop :=
12004 ∃ F : RatioOrbit → RatioOrbit,
12005 PRCNativeCostHypotheses F ∧
12006 ∀ q : RatioOrbit,
12007 RatioOrbit.crossEq (F q)
12008 (costFromCharacter twoAdicAxisTwistCharacter q)
12009
12010noncomputable def twoAdicGeneratedNativeCost (q : RatioOrbit) : RatioOrbit :=
12011 by
12012 classical
12013 exact if q = RatioOrbit.one then RatioOrbit.zero
12014 else costFromCharacter twoAdicAxisTwistCharacter q
12015
12016theorem twoAdicGeneratedNativeCost_crossEq_generated (q : RatioOrbit) :
12017 RatioOrbit.crossEq (twoAdicGeneratedNativeCost q)
12018 (costFromCharacter twoAdicAxisTwistCharacter q) := by
12019 classical
12020 by_cases hq : q = RatioOrbit.one
12021 · subst q
12022 rw [twoAdicGeneratedNativeCost, if_pos rfl]
12023 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.zero_toRat,
12024 costFromCharacter_toRat, twoAdicAxisTwistCharacter_toRat,
12025 RatioOrbit.one_toRat]
12026 rw [twoAdicTwistRat_one]
12027 norm_num
12028 · rw [twoAdicGeneratedNativeCost, if_neg hq]
12029 exact RatioOrbit.crossEq_refl _
12030
12031theorem twoAdicGeneratedNativeCost_hypotheses :
12032 PRCNativeCostHypotheses twoAdicGeneratedNativeCost where
12033 reciprocal := by
12034 intro q
12035 exact RatioOrbit.crossEq_trans
12036 (twoAdicGeneratedNativeCost_crossEq_generated q)
12037 (RatioOrbit.crossEq_trans
12038 (costFromCharacter_reciprocal_congr
12039 twoAdicAxisTwistCharacter
12040 twoAdicAxisTwistCharacter_ratio_character q)
12041 (RatioOrbit.crossEq_symm
12042 (twoAdicGeneratedNativeCost_crossEq_generated
12043 (RatioOrbit.recip q))))
12044 normalized_invariant := by
12045 intro q
12046 exact RatioOrbit.crossEq_trans
12047 (twoAdicGeneratedNativeCost_crossEq_generated q)
12048 (RatioOrbit.crossEq_trans
12049 (costFromCharacter_normalized_congr
12050 twoAdicAxisTwistCharacter
12051 twoAdicAxisTwistCharacter_ratio_character q)
12052 (RatioOrbit.crossEq_symm
12053 (twoAdicGeneratedNativeCost_crossEq_generated
12054 (DistinctionNat.normalizeRatio q))))
12055 canonical_rcl := by
12056 intro x y hx hy
12057 let C := costFromCharacter twoAdicAxisTwistCharacter
12058 have hC :
12059 RatioOrbit.crossEq
12060 (RatioOrbit.add (C (RatioOrbit.mul x y)) (C (div x y)))
12061 (RatioOrbit.add
12062 (RatioOrbit.add
12063 (RatioOrbit.mul two (RatioOrbit.mul (C x) (C y)))
12064 (RatioOrbit.mul two (C x)))
12065 (RatioOrbit.mul two (C y))) :=
12066 costFromCharacter_canonical_rcl twoAdicAxisTwistCharacter
12067 twoAdicAxisTwistCharacter_ratio_character hx hy
12068 have hleft :
12069 RatioOrbit.crossEq
12070 (RatioOrbit.add
12071 (twoAdicGeneratedNativeCost (RatioOrbit.mul x y))
12072 (twoAdicGeneratedNativeCost (div x y)))
12073 (RatioOrbit.add (C (RatioOrbit.mul x y)) (C (div x y))) := by
12074 exact ratioOrbit_add_congr
12075 (twoAdicGeneratedNativeCost_crossEq_generated (RatioOrbit.mul x y))
12076 (twoAdicGeneratedNativeCost_crossEq_generated (div x y))
12077 have hxF := twoAdicGeneratedNativeCost_crossEq_generated x
12078 have hyF := twoAdicGeneratedNativeCost_crossEq_generated y
12079 have hmulInner :
12080 RatioOrbit.crossEq
12081 (RatioOrbit.mul (C x) (C y))
12082 (RatioOrbit.mul (twoAdicGeneratedNativeCost x)
12083 (twoAdicGeneratedNativeCost y)) :=
12084 ratioOrbit_mul_congr
12085 (RatioOrbit.crossEq_symm hxF)
12086 (RatioOrbit.crossEq_symm hyF)
12087 have hterm₁ :
12088 RatioOrbit.crossEq
12089 (RatioOrbit.mul two (RatioOrbit.mul (C x) (C y)))
12090 (RatioOrbit.mul two
12091 (RatioOrbit.mul (twoAdicGeneratedNativeCost x)
12092 (twoAdicGeneratedNativeCost y))) :=
12093 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two) hmulInner
12094 have hterm₂ :
12095 RatioOrbit.crossEq
12096 (RatioOrbit.mul two (C x))
12097 (RatioOrbit.mul two (twoAdicGeneratedNativeCost x)) :=
12098 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two)
12099 (RatioOrbit.crossEq_symm hxF)
12100 have hterm₃ :
12101 RatioOrbit.crossEq
12102 (RatioOrbit.mul two (C y))
12103 (RatioOrbit.mul two (twoAdicGeneratedNativeCost y)) :=
12104 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two)
12105 (RatioOrbit.crossEq_symm hyF)
12106 have hright :
12107 RatioOrbit.crossEq
12108 (RatioOrbit.add
12109 (RatioOrbit.add
12110 (RatioOrbit.mul two (RatioOrbit.mul (C x) (C y)))
12111 (RatioOrbit.mul two (C x)))
12112 (RatioOrbit.mul two (C y)))
12113 (RatioOrbit.add
12114 (RatioOrbit.add
12115 (RatioOrbit.mul two
12116 (RatioOrbit.mul (twoAdicGeneratedNativeCost x)
12117 (twoAdicGeneratedNativeCost y)))
12118 (RatioOrbit.mul two (twoAdicGeneratedNativeCost x)))
12119 (RatioOrbit.mul two (twoAdicGeneratedNativeCost y))) :=
12120 ratioOrbit_add_congr (ratioOrbit_add_congr hterm₁ hterm₂) hterm₃
12121 exact RatioOrbit.crossEq_trans hleft
12122 (RatioOrbit.crossEq_trans hC hright)
12123 unit_zero := by
12124 classical
12125 rw [twoAdicGeneratedNativeCost, if_pos rfl]
12126 two_calibrated := by
12127 have hFtwo := twoAdicGeneratedNativeCost_crossEq_generated two
12128 have htwistTwo :
12129 RatioOrbit.crossEq (twoAdicAxisTwistCharacter two)
12130 (RatioOrbit.recip two) := by
12131 rw [RatioOrbit.crossEq_iff_toRat_eq, twoAdicAxisTwistCharacter_toRat,
12132 RatioOrbit.recip_toRat, two_toRat]
12133 rw [twoAdicTwistRat_two]
12134 have hcost :
12135 RatioOrbit.crossEq
12136 (costFromCharacter twoAdicAxisTwistCharacter two)
12137 (onRatioOrbit two) := by
12138 unfold costFromCharacter
12139 exact RatioOrbit.crossEq_trans
12140 (onRatioOrbit_congr htwistTwo)
12141 (RatioOrbit.crossEq_symm (reciprocal_symmetric two))
12142 exact RatioOrbit.crossEq_trans hFtwo hcost
12143
12144theorem PRCTwoAdicAxisTwistGeneratedCostNativeHypothesesTarget_constructed :
12145 PRCTwoAdicAxisTwistGeneratedCostNativeHypothesesTarget :=
12146 ⟨twoAdicGeneratedNativeCost,
12147 twoAdicGeneratedNativeCost_hypotheses,
12148 twoAdicGeneratedNativeCost_crossEq_generated⟩
12149
12150theorem PRCNoAdmissibleFactorForTwoAdicAxisTwistGeneratedCost
12151 {F : RatioOrbit → RatioOrbit}
12152 (hFtwist :
12153 ∀ q : RatioOrbit,
12154 RatioOrbit.crossEq (F q)
12155 (costFromCharacter twoAdicAxisTwistCharacter q)) :
12156 ¬ ∃ ψ : RatioOrbit → RatioOrbit,
12157 PRCAdmissibleRatioCharacter ψ ∧
12158 ∀ q : RatioOrbit,
12159 RatioOrbit.crossEq (F q) (costFromCharacter ψ q) := by
12160 intro hψ
12161 rcases hψ with ⟨ψ, hadm, hFψ⟩
12162 have hψcost :
12163 RatioOrbit.crossEq
12164 (costFromCharacter ψ twoThreePrimeCompositeDirection)
12165 (onRatioOrbit twoThreePrimeCompositeDirection) := by
12166 simpa [twoThreePrimeCompositeDirection, twoPrimeDirection,
12167 threePrimeDirection] using
12168 hadm.prime_pair_product_cost twoOrbit twoOrbit_primeOrbit
12169 threeOrbit threeOrbit_primeOrbit
12170 have himage :
12171 RatioOrbit.crossEq
12172 (twoAdicAxisTwistCharacter twoThreePrimeCompositeDirection)
12173 twoThreePrimeMixedDirection :=
12174 PRCCharacterTwoAdicAxisTwist_two_three_mixed_image
12175 twoAdicAxisTwistCharacter_ratio_character
12176 twoAdicAxisTwistCharacter_branch
12177 have htwistCost :
12178 RatioOrbit.crossEq
12179 (costFromCharacter twoAdicAxisTwistCharacter
12180 twoThreePrimeCompositeDirection)
12181 (onRatioOrbit twoThreePrimeMixedDirection) := by
12182 unfold costFromCharacter
12183 exact onRatioOrbit_congr himage
12184 have htwistCanonical :
12185 RatioOrbit.crossEq
12186 (onRatioOrbit twoThreePrimeMixedDirection)
12187 (onRatioOrbit twoThreePrimeCompositeDirection) :=
12188 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwistCost)
12189 (RatioOrbit.crossEq_trans
12190 (RatioOrbit.crossEq_symm
12191 (hFtwist twoThreePrimeCompositeDirection))
12192 (RatioOrbit.crossEq_trans
12193 (hFψ twoThreePrimeCompositeDirection)
12194 hψcost))
12195 exact
12196 two_prime_composite_mixed_image_jcost_mismatch
12197 threeOrbit threeOrbit_primeOrbit
12198 (by
12199 simpa [twoThreePrimeMixedDirection, twoThreePrimeCompositeDirection,
12200 threePrimeDirection] using htwistCanonical)
12201
12202theorem PRCNativeCostFactorizationAdmissibilityUpgradeTarget_not_of_two_adic_axis_twist_generated_cost
12203 (htwistCost :
12204 PRCTwoAdicAxisTwistGeneratedCostNativeHypothesesTarget) :
12205 ¬ PRCNativeCostFactorizationAdmissibilityUpgradeTarget := by
12206 intro hupgrade
12207 rcases htwistCost with ⟨F, hF, hFtwist⟩
12208 exact
12209 PRCNoAdmissibleFactorForTwoAdicAxisTwistGeneratedCost hFtwist
12210 (hupgrade F hF twoAdicAxisTwistCharacter
12211 twoAdicAxisTwistCharacter_ratio_character hFtwist)
12212
12213theorem PRCNativeCostFactorizationAdmissibilityUpgradeTarget_refuted :
12214 ¬ PRCNativeCostFactorizationAdmissibilityUpgradeTarget :=
12215 PRCNativeCostFactorizationAdmissibilityUpgradeTarget_not_of_two_adic_axis_twist_generated_cost
12216 PRCTwoAdicAxisTwistGeneratedCostNativeHypothesesTarget_constructed
12217
12218theorem PRCNativeCostUniquenessTarget_refuted :
12219 ¬ PRCNativeCostUniquenessTarget := by
12220 intro hunique
12221 have hcanonical :
12222 RatioOrbit.crossEq
12223 (twoAdicGeneratedNativeCost twoThreePrimeCompositeDirection)
12224 (onRatioOrbit twoThreePrimeCompositeDirection) :=
12225 hunique twoAdicGeneratedNativeCost
12226 twoAdicGeneratedNativeCost_hypotheses
12227 twoThreePrimeCompositeDirection
12228 have htwistGenerated :
12229 RatioOrbit.crossEq
12230 (twoAdicGeneratedNativeCost twoThreePrimeCompositeDirection)
12231 (costFromCharacter twoAdicAxisTwistCharacter
12232 twoThreePrimeCompositeDirection) :=
12233 twoAdicGeneratedNativeCost_crossEq_generated
12234 twoThreePrimeCompositeDirection
12235 have himage :
12236 RatioOrbit.crossEq
12237 (twoAdicAxisTwistCharacter twoThreePrimeCompositeDirection)
12238 twoThreePrimeMixedDirection :=
12239 PRCCharacterTwoAdicAxisTwist_two_three_mixed_image
12240 twoAdicAxisTwistCharacter_ratio_character
12241 twoAdicAxisTwistCharacter_branch
12242 have htwistCost :
12243 RatioOrbit.crossEq
12244 (costFromCharacter twoAdicAxisTwistCharacter
12245 twoThreePrimeCompositeDirection)
12246 (onRatioOrbit twoThreePrimeMixedDirection) := by
12247 unfold costFromCharacter
12248 exact onRatioOrbit_congr himage
12249 have hbad :
12250 RatioOrbit.crossEq
12251 (onRatioOrbit twoThreePrimeMixedDirection)
12252 (onRatioOrbit twoThreePrimeCompositeDirection) :=
12253 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwistCost)
12254 (RatioOrbit.crossEq_trans
12255 (RatioOrbit.crossEq_symm htwistGenerated)
12256 hcanonical)
12257 exact
12258 two_prime_composite_mixed_image_jcost_mismatch
12259 threeOrbit threeOrbit_primeOrbit
12260 (by
12261 simpa [twoThreePrimeMixedDirection, twoThreePrimeCompositeDirection,
12262 threePrimeDirection] using hbad)
12263
12264/-- Cost-level repair for the native uniqueness hypotheses: a native cost must
12265already be canonical on products of native prime directions. This is the exact
12266surface where the two-adic generated cost slips through the older
12267`PRCNativeCostHypotheses`. -/
12268def PRCNativeCostPrimePairProductCalibrated
12269 (F : RatioOrbit → RatioOrbit) : Prop :=
12270 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
12271 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
12272 RatioOrbit.crossEq
12273 (F (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
12274 (onRatioOrbit
12275 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
12276
12277/-- Strengthened native-cost interface after the two-adic no-go: keep the old
12278RCL/normalization/calibration fields, but add prime-pair product calibration at
12279the cost level. -/
12280structure PRCStrengthenedNativeCostHypotheses
12281 (F : RatioOrbit → RatioOrbit) : Prop where
12282 native : PRCNativeCostHypotheses F
12283 prime_pair_product_cost :
12284 PRCNativeCostPrimePairProductCalibrated F
12285
12286/-- Signed-unit repair for native costs: the cost must see the signed unit
12287`-1`, not only positive prime and prime-pair probes. -/
12288def PRCNativeCostSignedUnitCalibrated
12289 (F : RatioOrbit → RatioOrbit) : Prop :=
12290 RatioOrbit.crossEq (F negativeOneRatio) (onRatioOrbit negativeOneRatio)
12291
12292/-- Signed repaired native-cost interface after the absolute-value no-go:
12293the pass-274 strengthened hypotheses plus direct calibration at the signed
12294unit. -/
12295structure PRCSignedStrengthenedNativeCostHypotheses
12296 (F : RatioOrbit → RatioOrbit) : Prop where
12297 strengthened : PRCStrengthenedNativeCostHypotheses F
12298 signed_unit : PRCNativeCostSignedUnitCalibrated F
12299
12300/-- Replacement target after pass 281: uniqueness is now asked only for native
12301costs that also calibrate the signed unit. -/
12302def PRCSignedStrengthenedNativeCostUniquenessTarget : Prop :=
12303 ∀ F : RatioOrbit → RatioOrbit,
12304 PRCSignedStrengthenedNativeCostHypotheses F →
12305 ∀ q : RatioOrbit,
12306 RatioOrbit.crossEq (F q) (onRatioOrbit q)
12307
12308/-- Native cost-level all-prime calibration. Pass 283 refutes deriving this from
12309two calibration alone. -/
12310def PRCNativeCostPrimeDirectionCalibrated
12311 (F : RatioOrbit → RatioOrbit) : Prop :=
12312 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
12313 RatioOrbit.crossEq (F (primeDirection p hp))
12314 (onRatioOrbit (primeDirection p hp))
12315
12316/-- Prime-signed repaired native-cost interface: signed strengthened hypotheses
12317plus direct all-prime calibration at the cost level. -/
12318structure PRCPrimeSignedStrengthenedNativeCostHypotheses
12319 (F : RatioOrbit → RatioOrbit) : Prop where
12320 signed_strengthened : PRCSignedStrengthenedNativeCostHypotheses F
12321 prime_direction_cost : PRCNativeCostPrimeDirectionCalibrated F
12322
12323/-- Zero-calibrated final native-cost interface for the character-factorization
12324route: the native cost has zero trace at the zero orbit, sees the signed unit,
12325and is calibrated on all native prime axes and prime-pair products. -/
12326structure PRCZeroCalibratedPrimeSignedStrengthenedNativeCostHypotheses
12327 (F : RatioOrbit → RatioOrbit) : Prop where
12328 prime_signed : PRCPrimeSignedStrengthenedNativeCostHypotheses F
12329 zero_calibrated :
12330 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F)
12331
12332/-- Replacement uniqueness target after both no-go repairs: sign and every prime
12333axis are calibrated at the native-cost level. -/
12334def PRCPrimeSignedStrengthenedNativeCostUniquenessTarget : Prop :=
12335 ∀ F : RatioOrbit → RatioOrbit,
12336 PRCPrimeSignedStrengthenedNativeCostHypotheses F →
12337 ∀ q : RatioOrbit,
12338 RatioOrbit.crossEq (F q) (onRatioOrbit q)
12339
12340/-- Zero-calibrated replacement uniqueness target after the zero-flat and
12341absolute-value no-gos. -/
12342def PRCZeroCalibratedPrimeSignedStrengthenedNativeCostUniquenessTarget : Prop :=
12343 ∀ F : RatioOrbit → RatioOrbit,
12344 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostHypotheses F →
12345 ∀ q : RatioOrbit,
12346 RatioOrbit.crossEq (F q) (onRatioOrbit q)
12347
12348/-- Replacement target for the refuted old native uniqueness statement. -/
12349def PRCStrengthenedNativeCostUniquenessTarget : Prop :=
12350 ∀ F : RatioOrbit → RatioOrbit,
12351 PRCStrengthenedNativeCostHypotheses F →
12352 ∀ q : RatioOrbit,
12353 RatioOrbit.crossEq (F q) (onRatioOrbit q)
12354
12355/-- Strengthened factorization target: once the cost-level prime-pair field is
12356part of the native hypotheses, a factor character must be admissible. -/
12357def PRCStrengthenedNativeCostAdmissibleCharacterFactorizationTarget : Prop :=
12358 ∀ F : RatioOrbit → RatioOrbit,
12359 PRCStrengthenedNativeCostHypotheses F →
12360 ∃ χ : RatioOrbit → RatioOrbit,
12361 PRCAdmissibleRatioCharacter χ ∧
12362 ∀ q : RatioOrbit,
12363 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
12364
12365theorem PRCStrengthenedNativeCostAdmissibleCharacterFactorizationTarget_of_character_factorization_and_two_calibration
12366 (hfactor : PRCNativeCostCharacterFactorizationTarget)
12367 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget) :
12368 PRCStrengthenedNativeCostAdmissibleCharacterFactorizationTarget := by
12369 intro F hF
12370 rcases hfactor F hF.native with ⟨χ, hχ, hFχ⟩
12371 have htwoCal :
12372 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) :=
12373 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ two))
12374 hF.native.two_calibrated
12375 have hprime :
12376 PRCCharacterPrimeDirectionCalibrated χ :=
12377 htwo χ hχ htwoCal
12378 have hpair :
12379 PRCCharacterPrimePairProductCostConsistent χ := by
12380 intro p hp r hr
12381 exact RatioOrbit.crossEq_trans
12382 (RatioOrbit.crossEq_symm
12383 (hFχ (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr))))
12384 (hF.prime_pair_product_cost p hp r hr)
12385 exact ⟨χ, ⟨hχ, hprime, hpair⟩, hFχ⟩
12386
12387theorem PRCStrengthenedNativeCostUniquenessTarget_of_strengthened_admissible_factorization_and_rigidity
12388 (hfactor : PRCStrengthenedNativeCostAdmissibleCharacterFactorizationTarget)
12389 (hrigid : PRCNativeCostAdmissibleCharacterRigidityTarget) :
12390 PRCStrengthenedNativeCostUniquenessTarget := by
12391 intro F hF q
12392 rcases hfactor F hF with ⟨χ, hadm, hFχ⟩
12393 exact RatioOrbit.crossEq_trans (hFχ q) (hrigid χ hadm q)
12394
12395theorem PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_rigidity
12396 (hfactor : PRCNativeCostCharacterFactorizationTarget)
12397 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
12398 (hrigid : PRCNativeCostAdmissibleCharacterRigidityTarget) :
12399 PRCStrengthenedNativeCostUniquenessTarget :=
12400 PRCStrengthenedNativeCostUniquenessTarget_of_strengthened_admissible_factorization_and_rigidity
12401 (PRCStrengthenedNativeCostAdmissibleCharacterFactorizationTarget_of_character_factorization_and_two_calibration
12402 hfactor htwo)
12403 hrigid
12404
12405theorem PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_global_orientation
12406 (hfactor : PRCNativeCostCharacterFactorizationTarget)
12407 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
12408 (horient : PRCAdmissibleCharacterGlobalOrientationTarget) :
12409 PRCStrengthenedNativeCostUniquenessTarget :=
12410 PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_rigidity
12411 hfactor htwo
12412 (PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_global_orientation
12413 horient)
12414
12415theorem PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_prime_propagation
12416 (hfactor : PRCNativeCostCharacterFactorizationTarget)
12417 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
12418 (hprop : PRCPrimeCalibrationPropagationTarget) :
12419 PRCStrengthenedNativeCostUniquenessTarget :=
12420 PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_rigidity
12421 hfactor htwo
12422 (PRCNativeCostAdmissibleCharacterRigidityTarget_of_prime_calibration_propagation
12423 hprop)
12424
12425/-- Exact strengthened-hypothesis no-go target after the signed-unit analysis:
12426the absolute-value character generates a native cost satisfying the prime-pair
12427repair while erasing the signed unit. -/
12428def PRCAbsValueGeneratedCostStrengthenedNativeHypothesesTarget : Prop :=
12429 ∃ F : RatioOrbit → RatioOrbit,
12430 PRCStrengthenedNativeCostHypotheses F ∧
12431 ∀ q : RatioOrbit,
12432 RatioOrbit.crossEq (F q)
12433 (costFromCharacter absValueCharacter q)
12434
12435noncomputable def absValueGeneratedNativeCost (q : RatioOrbit) : RatioOrbit :=
12436 by
12437 classical
12438 exact if q = RatioOrbit.one then RatioOrbit.zero
12439 else costFromCharacter absValueCharacter q
12440
12441theorem absValueGeneratedNativeCost_crossEq_generated (q : RatioOrbit) :
12442 RatioOrbit.crossEq (absValueGeneratedNativeCost q)
12443 (costFromCharacter absValueCharacter q) := by
12444 classical
12445 by_cases hq : q = RatioOrbit.one
12446 · subst q
12447 rw [absValueGeneratedNativeCost, if_pos rfl]
12448 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.zero_toRat,
12449 costFromCharacter_toRat, absValueCharacter_toRat, RatioOrbit.one_toRat]
12450 norm_num
12451 · rw [absValueGeneratedNativeCost, if_neg hq]
12452 exact RatioOrbit.crossEq_refl _
12453
12454theorem absValueGeneratedNativeCost_native_hypotheses :
12455 PRCNativeCostHypotheses absValueGeneratedNativeCost where
12456 reciprocal := by
12457 intro q
12458 exact RatioOrbit.crossEq_trans
12459 (absValueGeneratedNativeCost_crossEq_generated q)
12460 (RatioOrbit.crossEq_trans
12461 (costFromCharacter_reciprocal_congr
12462 absValueCharacter
12463 absValueCharacter_ratio_character q)
12464 (RatioOrbit.crossEq_symm
12465 (absValueGeneratedNativeCost_crossEq_generated
12466 (RatioOrbit.recip q))))
12467 normalized_invariant := by
12468 intro q
12469 exact RatioOrbit.crossEq_trans
12470 (absValueGeneratedNativeCost_crossEq_generated q)
12471 (RatioOrbit.crossEq_trans
12472 (costFromCharacter_normalized_congr
12473 absValueCharacter
12474 absValueCharacter_ratio_character q)
12475 (RatioOrbit.crossEq_symm
12476 (absValueGeneratedNativeCost_crossEq_generated
12477 (DistinctionNat.normalizeRatio q))))
12478 canonical_rcl := by
12479 intro x y hx hy
12480 let C := costFromCharacter absValueCharacter
12481 have hC :
12482 RatioOrbit.crossEq
12483 (RatioOrbit.add (C (RatioOrbit.mul x y)) (C (div x y)))
12484 (RatioOrbit.add
12485 (RatioOrbit.add
12486 (RatioOrbit.mul two (RatioOrbit.mul (C x) (C y)))
12487 (RatioOrbit.mul two (C x)))
12488 (RatioOrbit.mul two (C y))) :=
12489 costFromCharacter_canonical_rcl absValueCharacter
12490 absValueCharacter_ratio_character hx hy
12491 have hleft :
12492 RatioOrbit.crossEq
12493 (RatioOrbit.add
12494 (absValueGeneratedNativeCost (RatioOrbit.mul x y))
12495 (absValueGeneratedNativeCost (div x y)))
12496 (RatioOrbit.add (C (RatioOrbit.mul x y)) (C (div x y))) := by
12497 exact ratioOrbit_add_congr
12498 (absValueGeneratedNativeCost_crossEq_generated (RatioOrbit.mul x y))
12499 (absValueGeneratedNativeCost_crossEq_generated (div x y))
12500 have hxF := absValueGeneratedNativeCost_crossEq_generated x
12501 have hyF := absValueGeneratedNativeCost_crossEq_generated y
12502 have hmulInner :
12503 RatioOrbit.crossEq
12504 (RatioOrbit.mul (C x) (C y))
12505 (RatioOrbit.mul (absValueGeneratedNativeCost x)
12506 (absValueGeneratedNativeCost y)) :=
12507 ratioOrbit_mul_congr
12508 (RatioOrbit.crossEq_symm hxF)
12509 (RatioOrbit.crossEq_symm hyF)
12510 have hterm₁ :
12511 RatioOrbit.crossEq
12512 (RatioOrbit.mul two (RatioOrbit.mul (C x) (C y)))
12513 (RatioOrbit.mul two
12514 (RatioOrbit.mul (absValueGeneratedNativeCost x)
12515 (absValueGeneratedNativeCost y))) :=
12516 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two) hmulInner
12517 have hterm₂ :
12518 RatioOrbit.crossEq
12519 (RatioOrbit.mul two (C x))
12520 (RatioOrbit.mul two (absValueGeneratedNativeCost x)) :=
12521 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two)
12522 (RatioOrbit.crossEq_symm hxF)
12523 have hterm₃ :
12524 RatioOrbit.crossEq
12525 (RatioOrbit.mul two (C y))
12526 (RatioOrbit.mul two (absValueGeneratedNativeCost y)) :=
12527 ratioOrbit_mul_congr (RatioOrbit.crossEq_refl two)
12528 (RatioOrbit.crossEq_symm hyF)
12529 have hright :
12530 RatioOrbit.crossEq
12531 (RatioOrbit.add
12532 (RatioOrbit.add
12533 (RatioOrbit.mul two (RatioOrbit.mul (C x) (C y)))
12534 (RatioOrbit.mul two (C x)))
12535 (RatioOrbit.mul two (C y)))
12536 (RatioOrbit.add
12537 (RatioOrbit.add
12538 (RatioOrbit.mul two
12539 (RatioOrbit.mul (absValueGeneratedNativeCost x)
12540 (absValueGeneratedNativeCost y)))
12541 (RatioOrbit.mul two (absValueGeneratedNativeCost x)))
12542 (RatioOrbit.mul two (absValueGeneratedNativeCost y))) :=
12543 ratioOrbit_add_congr (ratioOrbit_add_congr hterm₁ hterm₂) hterm₃
12544 exact RatioOrbit.crossEq_trans hleft
12545 (RatioOrbit.crossEq_trans hC hright)
12546 unit_zero := by
12547 classical
12548 rw [absValueGeneratedNativeCost, if_pos rfl]
12549 two_calibrated := by
12550 have hFtwo := absValueGeneratedNativeCost_crossEq_generated two
12551 have hcost := absValueCharacter_prime_calibrated twoOrbit twoOrbit_primeOrbit
12552 simpa [twoPrimeDirection, primeDirection] using
12553 RatioOrbit.crossEq_trans hFtwo hcost
12554
12555theorem absValueGeneratedNativeCost_prime_pair_product_cost :
12556 PRCNativeCostPrimePairProductCalibrated absValueGeneratedNativeCost := by
12557 intro p hp r hr
12558 exact RatioOrbit.crossEq_trans
12559 (absValueGeneratedNativeCost_crossEq_generated
12560 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
12561 (absValueCharacter_prime_pair_product_cost p hp r hr)
12562
12563theorem absValueGeneratedNativeCost_prime_direction_cost :
12564 PRCNativeCostPrimeDirectionCalibrated absValueGeneratedNativeCost := by
12565 intro p hp
12566 exact RatioOrbit.crossEq_trans
12567 (absValueGeneratedNativeCost_crossEq_generated (primeDirection p hp))
12568 (absValueCharacter_prime_calibrated p hp)
12569
12570theorem absValueGeneratedNativeCost_strengthened_hypotheses :
12571 PRCStrengthenedNativeCostHypotheses absValueGeneratedNativeCost where
12572 native := absValueGeneratedNativeCost_native_hypotheses
12573 prime_pair_product_cost := absValueGeneratedNativeCost_prime_pair_product_cost
12574
12575theorem absValueGeneratedNativeCost_doubled_trace_zero_calibrated :
12576 PRCDoubledTraceZeroCalibrated
12577 (nativeCostDoubledTrace absValueGeneratedNativeCost) := by
12578 rw [PRCDoubledTraceZeroCalibrated, RatioOrbit.crossEq_iff_toRat_eq,
12579 nativeCostDoubledTrace, doubledTraceValue, RatioOrbit.mul_toRat,
12580 RatioOrbit.add_toRat, two_toRat, RatioOrbit.zero_toRat,
12581 RatioOrbit.one_toRat]
12582 rw [absValueGeneratedNativeCost, if_neg (by
12583 intro h
12584 have hrat := congrArg RatioOrbit.toRat h
12585 rw [RatioOrbit.zero_toRat, RatioOrbit.one_toRat] at hrat
12586 norm_num at hrat)]
12587 rw [costFromCharacter_toRat, absValueCharacter_toRat, RatioOrbit.zero_toRat]
12588 norm_num
12589
12590theorem PRCAbsValueGeneratedCostStrengthenedNativeHypothesesTarget_constructed :
12591 PRCAbsValueGeneratedCostStrengthenedNativeHypothesesTarget :=
12592 ⟨absValueGeneratedNativeCost,
12593 absValueGeneratedNativeCost_strengthened_hypotheses,
12594 absValueGeneratedNativeCost_crossEq_generated⟩
12595
12596theorem negativeOneRatio_ne_one :
12597 negativeOneRatio ≠ RatioOrbit.one := by
12598 intro h
12599 have hrat := congrArg RatioOrbit.toRat h
12600 rw [negativeOneRatio_toRat, RatioOrbit.one_toRat] at hrat
12601 norm_num at hrat
12602
12603theorem absValueGeneratedNativeCost_negative_one_zero :
12604 RatioOrbit.crossEq (absValueGeneratedNativeCost negativeOneRatio)
12605 RatioOrbit.zero := by
12606 rw [absValueGeneratedNativeCost, if_neg negativeOneRatio_ne_one]
12607 rw [RatioOrbit.crossEq_iff_toRat_eq, costFromCharacter_toRat,
12608 absValueCharacter_toRat, negativeOneRatio_toRat, RatioOrbit.zero_toRat]
12609 norm_num
12610
12611theorem onRatioOrbit_negativeOneRatio_toRat :
12612 (onRatioOrbit negativeOneRatio).toRat = -2 := by
12613 rw [onRatioOrbit_toRat, negativeOneRatio_toRat]
12614 norm_num
12615
12616theorem absValueGeneratedNativeCost_negative_one_not_canonical :
12617 ¬ RatioOrbit.crossEq (absValueGeneratedNativeCost negativeOneRatio)
12618 (onRatioOrbit negativeOneRatio) := by
12619 intro h
12620 rw [RatioOrbit.crossEq_iff_toRat_eq] at h
12621 have hzero :=
12622 (RatioOrbit.crossEq_iff_toRat_eq
12623 (absValueGeneratedNativeCost negativeOneRatio) RatioOrbit.zero).mp
12624 absValueGeneratedNativeCost_negative_one_zero
12625 rw [hzero, onRatioOrbit_negativeOneRatio_toRat] at h
12626 norm_num at h
12627
12628theorem PRCStrengthenedNativeCostUniquenessTarget_refuted :
12629 ¬ PRCStrengthenedNativeCostUniquenessTarget := by
12630 intro huniq
12631 exact absValueGeneratedNativeCost_negative_one_not_canonical
12632 (huniq absValueGeneratedNativeCost
12633 absValueGeneratedNativeCost_strengthened_hypotheses negativeOneRatio)
12634
12635theorem onRatioOrbit_signed_unit_calibrated :
12636 PRCNativeCostSignedUnitCalibrated onRatioOrbit :=
12637 RatioOrbit.crossEq_refl (onRatioOrbit negativeOneRatio)
12638
12639theorem absValueGeneratedNativeCost_not_signed_unit_calibrated :
12640 ¬ PRCNativeCostSignedUnitCalibrated absValueGeneratedNativeCost :=
12641 absValueGeneratedNativeCost_negative_one_not_canonical
12642
12643def PRCZeroCalibrationForcesNativeCostSignedUnitCalibrationTarget : Prop :=
12644 ∀ F : RatioOrbit → RatioOrbit,
12645 PRCNativeCostHypotheses F →
12646 PRCDoubledTraceZeroCalibrated (nativeCostDoubledTrace F) →
12647 PRCNativeCostSignedUnitCalibrated F
12648
12649theorem PRCZeroCalibrationForcesNativeCostSignedUnitCalibrationTarget_refuted :
12650 ¬ PRCZeroCalibrationForcesNativeCostSignedUnitCalibrationTarget := by
12651 intro htarget
12652 exact absValueGeneratedNativeCost_not_signed_unit_calibrated
12653 (htarget absValueGeneratedNativeCost
12654 absValueGeneratedNativeCost_native_hypotheses
12655 absValueGeneratedNativeCost_doubled_trace_zero_calibrated)
12656
12657theorem absValueGeneratedNativeCost_not_signed_strengthened_hypotheses :
12658 ¬ PRCSignedStrengthenedNativeCostHypotheses absValueGeneratedNativeCost := by
12659 intro h
12660 exact absValueGeneratedNativeCost_not_signed_unit_calibrated h.signed_unit
12661
12662theorem onRatioOrbit_prime_pair_product_calibrated :
12663 PRCNativeCostPrimePairProductCalibrated onRatioOrbit := by
12664 intro p hp r hr
12665 exact RatioOrbit.crossEq_refl
12666 (onRatioOrbit (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
12667
12668theorem twoAdicGeneratedNativeCost_not_prime_pair_product_calibrated :
12669 ¬ PRCNativeCostPrimePairProductCalibrated twoAdicGeneratedNativeCost := by
12670 intro hpair
12671 have hcanonical :
12672 RatioOrbit.crossEq
12673 (twoAdicGeneratedNativeCost twoThreePrimeCompositeDirection)
12674 (onRatioOrbit twoThreePrimeCompositeDirection) := by
12675 simpa [twoThreePrimeCompositeDirection, twoPrimeDirection,
12676 threePrimeDirection] using
12677 hpair twoOrbit twoOrbit_primeOrbit threeOrbit threeOrbit_primeOrbit
12678 have htwistGenerated :
12679 RatioOrbit.crossEq
12680 (twoAdicGeneratedNativeCost twoThreePrimeCompositeDirection)
12681 (costFromCharacter twoAdicAxisTwistCharacter
12682 twoThreePrimeCompositeDirection) :=
12683 twoAdicGeneratedNativeCost_crossEq_generated
12684 twoThreePrimeCompositeDirection
12685 have himage :
12686 RatioOrbit.crossEq
12687 (twoAdicAxisTwistCharacter twoThreePrimeCompositeDirection)
12688 twoThreePrimeMixedDirection :=
12689 PRCCharacterTwoAdicAxisTwist_two_three_mixed_image
12690 twoAdicAxisTwistCharacter_ratio_character
12691 twoAdicAxisTwistCharacter_branch
12692 have htwistCost :
12693 RatioOrbit.crossEq
12694 (costFromCharacter twoAdicAxisTwistCharacter
12695 twoThreePrimeCompositeDirection)
12696 (onRatioOrbit twoThreePrimeMixedDirection) := by
12697 unfold costFromCharacter
12698 exact onRatioOrbit_congr himage
12699 have hbad :
12700 RatioOrbit.crossEq
12701 (onRatioOrbit twoThreePrimeMixedDirection)
12702 (onRatioOrbit twoThreePrimeCompositeDirection) :=
12703 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwistCost)
12704 (RatioOrbit.crossEq_trans
12705 (RatioOrbit.crossEq_symm htwistGenerated)
12706 hcanonical)
12707 exact
12708 two_prime_composite_mixed_image_jcost_mismatch
12709 threeOrbit threeOrbit_primeOrbit
12710 (by
12711 simpa [twoThreePrimeMixedDirection, twoThreePrimeCompositeDirection,
12712 threePrimeDirection] using hbad)
12713
12714theorem twoAdicGeneratedNativeCost_not_strengthened_hypotheses :
12715 ¬ PRCStrengthenedNativeCostHypotheses twoAdicGeneratedNativeCost := by
12716 intro hstrong
12717 exact twoAdicGeneratedNativeCost_not_prime_pair_product_calibrated
12718 hstrong.prime_pair_product_cost
12719
12720theorem PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_not_iff_non_two_composite_cost_defect_character :
12721 ¬ PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget ↔
12722 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter := by
12723 constructor
12724 · intro hnot
12725 by_contra hnoDefect
12726 exact hnot
12727 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_composite_cost_defect_character.mpr
12728 hnoDefect)
12729 · intro hdefect htarget
12730 exact
12731 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_iff_no_composite_cost_defect_character.mp
12732 htarget) hdefect
12733
12734theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_not_iff_non_two_composite_cost_defect_character :
12735 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
12736 PRCPrimeCalibratedTwoPrimeReciprocalIdentityNonTwoCompositeCostDefectCharacter := by
12737 constructor
12738 · intro hnot
12739 by_contra hnoDefect
12740 exact hnot
12741 (PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_no_non_two_composite_cost_defect_character.mpr
12742 hnoDefect)
12743 · intro hdefect htarget
12744 exact
12745 (PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_no_non_two_composite_cost_defect_character.mp
12746 htarget) hdefect
12747
12748theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_prime_pair_product_cost_consistency
12749 (hpair :
12750 PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget) :
12751 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget :=
12752 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_mixed_composite_cost_consistency_direct
12753 (PRCPrimeCalibrationForcesTwoPrimeMixedCompositeCostConsistencyTarget_of_prime_pair_product_cost_consistency
12754 hpair)
12755
12756theorem PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_identity_forces_two
12757 (hforces :
12758 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
12759 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget := by
12760 intro χ hχ hprime
12761 exact
12762 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_twist_identity_forces_two
12763 (hforces
12764 (PRCCharacterReciprocalTwist χ)
12765 (PRCRatioCharacter.reciprocalTwist hχ)
12766 (PRCCharacterPrimeDirectionCalibrated.reciprocalTwist hprime))
12767
12768theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_prime_reciprocal_forces_two
12769 (hforces :
12770 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget) :
12771 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget := by
12772 intro χ hχ hprime
12773 exact
12774 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_reciprocal_twist_reciprocal_forces_two
12775 (hforces
12776 (PRCCharacterReciprocalTwist χ)
12777 (PRCRatioCharacter.reciprocalTwist hχ)
12778 (PRCCharacterPrimeDirectionCalibrated.reciprocalTwist hprime))
12779
12780theorem PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_iff_identity_forces_two :
12781 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget ↔
12782 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
12783 ⟨PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_prime_reciprocal_forces_two,
12784 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_identity_forces_two⟩
12785
12786theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_two_prime_reciprocal_forces
12787 (hforces :
12788 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget) :
12789 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget := by
12790 intro χ hχ hprime
12791 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_two_prime_reciprocal_forces
12792 (hforces χ hχ hprime)
12793
12794theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_two_prime_reciprocal_excludes
12795 (hexcl :
12796 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget) :
12797 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget := by
12798 intro χ hχ hprime
12799 exact PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_local_excludes_prime_identity
12800 (PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved χ hχ hprime)
12801 (hexcl χ hχ hprime)
12802
12803theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_iff_two_prime_reciprocal_forces :
12804 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget ↔
12805 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget :=
12806 ⟨PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_two_prime_reciprocal_excludes,
12807 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_two_prime_reciprocal_forces⟩
12808
12809theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_identity_forces_two
12810 (hidentity :
12811 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget) :
12812 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget :=
12813 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_two_prime_reciprocal_excludes
12814 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_identity_forces_two
12815 hidentity)
12816
12817theorem PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_forces
12818 (hforces :
12819 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget) :
12820 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
12821 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes
12822 (PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_two_prime_reciprocal_forces
12823 hforces)
12824
12825theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_iff_identity_forces_two :
12826 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget ↔
12827 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
12828 ⟨PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_forces,
12829 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_identity_forces_two⟩
12830
12831theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_of_two_prime_reciprocal_forces
12832 (hforces :
12833 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget) :
12834 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget := by
12835 constructor
12836 · have hexcl :
12837 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget :=
12838 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_two_prime_reciprocal_forces
12839 hforces
12840 have hidentity :
12841 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
12842 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes
12843 hexcl
12844 exact
12845 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_identity_forces_two
12846 hidentity
12847 · exact hforces
12848
12849theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_split
12850 (hsplit :
12851 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget) :
12852 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget :=
12853 hsplit.2
12854
12855theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_iff_two_prime_reciprocal_forces :
12856 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget ↔
12857 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget :=
12858 ⟨PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_split,
12859 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_of_two_prime_reciprocal_forces⟩
12860
12861theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_trace_connected
12862 (htrace :
12863 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget) :
12864 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget := by
12865 intro χ hχ hprime
12866 exact PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_trace_connected
12867 (htrace χ hχ hprime)
12868
12869theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_forces
12870 (hforces :
12871 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget) :
12872 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget := by
12873 intro χ hχ hprime
12874 exact PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_forces
12875 (hforces χ hχ hprime)
12876
12877theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_iff_forces :
12878 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget ↔
12879 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget :=
12880 ⟨PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_trace_connected,
12881 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_forces⟩
12882
12883theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_identity_trace_connected
12884 (hidentity :
12885 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget) :
12886 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget := by
12887 intro χ hχ hprime
12888 exact
12889 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_reciprocal_twist_identity
12890 (hidentity (PRCCharacterReciprocalTwist χ)
12891 hχ.reciprocalTwist hprime.reciprocalTwist)
12892
12893theorem PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_of_reciprocal_trace_connected
12894 (hreciprocal :
12895 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget) :
12896 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget := by
12897 intro χ hχ hprime
12898 exact
12899 PRCCharacterTwoPrimeIdentityRespectsTraceConnected_of_reciprocal_twist_reciprocal
12900 (hreciprocal (PRCCharacterReciprocalTwist χ)
12901 hχ.reciprocalTwist hprime.reciprocalTwist)
12902
12903theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_iff_identity_trace_connected :
12904 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget ↔
12905 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget :=
12906 ⟨PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_of_reciprocal_trace_connected,
12907 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_identity_trace_connected⟩
12908
12909theorem PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_of_prime_identity_trace_transport
12910 (htransport :
12911 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget) :
12912 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget := by
12913 intro χ hχ hprime
12914 exact
12915 PRCCharacterTwoPrimeIdentityRespectsTraceConnected_of_prime_identity_trace_connected
12916 (htransport χ hχ hprime)
12917
12918theorem PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_two_prime_identity_trace_connected
12919 (htwo :
12920 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget) :
12921 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget := by
12922 intro χ hχ hprime
12923 have hrecTrace :
12924 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget :=
12925 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_identity_trace_connected
12926 htwo
12927 have hrecForces :
12928 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget :=
12929 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_trace_connected
12930 hrecTrace
12931 have hexcl :
12932 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget :=
12933 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_two_prime_reciprocal_forces
12934 hrecForces
12935 have hforcesTwo :
12936 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget :=
12937 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes
12938 hexcl
12939 exact
12940 PRCCharacterPrimeIdentityRespectsTraceConnected_of_two_prime_identity_and_forces_two
12941 (htwo χ hχ hprime)
12942 (hforcesTwo χ hχ hprime)
12943
12944theorem PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_iff_prime_identity_trace_transport :
12945 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget ↔
12946 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget :=
12947 ⟨PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_two_prime_identity_trace_connected,
12948 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_of_prime_identity_trace_transport⟩
12949
12950theorem PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_refuted :
12951 ¬ PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget := by
12952 intro htarget
12953 exact PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_refuted
12954 (PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_iff_prime_identity_trace_transport.mp
12955 htarget)
12956
12957theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_refuted :
12958 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget := by
12959 intro htarget
12960 exact PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_refuted
12961 (PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_iff_identity_trace_connected.mp
12962 htarget)
12963
12964theorem PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_refuted :
12965 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget := by
12966 intro htarget
12967 exact PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_refuted
12968 (PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_iff_identity_forces_two.mp
12969 htarget)
12970
12971theorem PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_refuted :
12972 ¬ PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget := by
12973 intro htarget
12974 exact PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_refuted
12975 (PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_iff_identity_forces_two.mp
12976 htarget)
12977
12978theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_refuted :
12979 ¬ PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget := by
12980 intro htarget
12981 exact PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_refuted
12982 (PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_iff_two_prime_reciprocal_forces.mp
12983 htarget)
12984
12985theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_refuted :
12986 ¬ PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget := by
12987 intro htarget
12988 exact PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_refuted
12989 (PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_iff_no_mixed_prime_witnesses.mp
12990 htarget)
12991
12992theorem PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_refuted :
12993 ¬ PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget := by
12994 intro htarget
12995 exact PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_refuted
12996 (PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_iff_prime_identity_witness_globalizes.mp
12997 htarget)
12998
12999theorem PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_refuted :
13000 ¬ PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget := by
13001 intro htarget
13002 exact PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_refuted
13003 (PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_iff_prime_floor_successor_transport.mp
13004 htarget)
13005
13006theorem PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_refuted :
13007 ¬ PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget := by
13008 intro htarget
13009 exact PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_refuted
13010 (PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_iff_comparable_trace.mp
13011 htarget)
13012
13013theorem PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_refuted :
13014 ¬ PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget := by
13015 intro htarget
13016 exact PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_refuted
13017 (PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_branch_transport.mp
13018 htarget)
13019
13020theorem PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_refuted :
13021 ¬ PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget := by
13022 intro htarget
13023 exact PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_refuted
13024 (PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_no_mixed_nonunit.mpr
13025 htarget)
13026
13027theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_refuted :
13028 ¬ PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget := by
13029 intro htarget
13030 exact PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_refuted
13031 (PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_iff_identity_branch_transport.mp
13032 htarget)
13033
13034theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted :
13035 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget := by
13036 intro htarget
13037 exact PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_refuted
13038 (PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_identity_witness_globalizes.mp
13039 htarget)
13040
13041theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_refuted :
13042 ¬ PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget := by
13043 intro htarget
13044 exact PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_refuted
13045 (PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_iff_no_mixed.mp
13046 htarget)
13047
13048theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_refuted :
13049 ¬ PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget := by
13050 intro htarget
13051 exact PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_refuted
13052 (PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_no_mixed_prime_witnesses.mp
13053 htarget)
13054
13055theorem PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_refuted :
13056 ¬ PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget := by
13057 intro htarget
13058 exact PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_refuted
13059 (PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_iff_successor_step_pair.mpr
13060 htarget)
13061
13062theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget_refuted :
13063 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget := by
13064 intro htarget
13065 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted
13066 (PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_sharpened.mpr
13067 htarget)
13068
13069theorem PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget_refuted :
13070 ¬ PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget :=
13071 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted
13072
13073theorem PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_refuted :
13074 ¬ PRCPrimeFloorSuccessorTransportLocalAdjacentTarget := by
13075 intro htarget
13076 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted
13077 (PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_iff_nonunit_coherent.mp
13078 htarget)
13079
13080theorem PRCPrimeFloorSuccessorTransportSharpenedTarget_refuted :
13081 ¬ PRCPrimeFloorSuccessorTransportSharpenedTarget := by
13082 intro htarget
13083 exact PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget_refuted
13084 htarget.1
13085
13086theorem PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_refuted :
13087 ¬ PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget := by
13088 intro htarget
13089 exact PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_refuted
13090 (PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_split.mpr htarget)
13091
13092theorem PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget_refuted :
13093 ¬ PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget := by
13094 intro htarget
13095 exact PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_refuted
13096 (PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_iff_local_exclusion.mpr
13097 htarget)
13098
13099theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_refuted :
13100 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget := by
13101 intro htarget
13102 exact PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_refuted
13103 (PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_iff_identity_comparable_trace.mp
13104 htarget)
13105
13106theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_refuted :
13107 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget := by
13108 intro htarget
13109 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted
13110 (PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_local_no_mixed.mpr
13111 htarget)
13112
13113theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget_refuted :
13114 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget := by
13115 intro htarget
13116 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted
13117 (PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_product_no_mixed
13118 htarget)
13119
13120theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_refuted :
13121 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget := by
13122 intro htarget
13123 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_refuted
13124 (PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_iff_local_comparable_trace.mp
13125 htarget)
13126
13127theorem PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_refuted :
13128 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget := by
13129 intro htarget
13130 exact PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalIdentityTransportTarget_refuted
13131 (PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalBranchAgreementTarget_iff_local_identity_transport.mp
13132 htarget)
13133
13134theorem PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget_refuted :
13135 ¬ PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget := by
13136 intro htarget
13137 exact PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_refuted
13138 (PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_successor_step
13139 htarget)
13140
13141theorem PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget_refuted :
13142 ¬ PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget := by
13143 intro htarget
13144 exact PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget_refuted
13145 (PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget_of_transport htarget)
13146
13147theorem PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_refuted :
13148 ¬ PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget := by
13149 intro htarget
13150 exact PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_refuted
13151 (PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_iff_no_mixed_prime_orientation.mp
13152 htarget)
13153
13154theorem PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_refuted :
13155 ¬ PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget := by
13156 intro htarget
13157 exact PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_refuted
13158 (PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_no_mixed_prime_orientation.mp
13159 htarget)
13160
13161theorem PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_refuted :
13162 ¬ PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget := by
13163 intro htarget
13164 have hprime :
13165 PRCCharacterPrimeDirectionCalibrated twoAdicAxisTwistCharacter :=
13166 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist
13167 twoAdicAxisTwistCharacter_branch
13168 have hlocal :
13169 PRCCharacterNonunitOrbitLocalOrientation twoAdicAxisTwistCharacter :=
13170 htarget twoAdicAxisTwistCharacter twoAdicAxisTwistCharacter_ratio_character
13171 hprime
13172 have hprod0 : twoOrbit * threeOrbit ≠ DistinctionNat.zero :=
13173 DistinctionNat.mul_ne_zero twoOrbit_primeOrbit.1 threeOrbit_primeOrbit.1
13174 have hprodUnit : ¬ DistinctionNat.unit (twoOrbit * threeOrbit) :=
13175 orbit_mul_not_unit_of_left_not_unit
13176 (p := twoOrbit) (r := threeOrbit) twoOrbit_primeOrbit.2.1
13177 have hprodCross :
13178 RatioOrbit.crossEq (orbitDirection (twoOrbit * threeOrbit) hprod0)
13179 twoThreePrimeCompositeDirection := by
13180 simpa [twoThreePrimeCompositeDirection, twoPrimeDirection,
13181 threePrimeDirection, primeDirection] using
13182 orbitDirection_mul_crossEq twoOrbit threeOrbit (twoOrbit * threeOrbit)
13183 twoOrbit_primeOrbit.1 threeOrbit_primeOrbit.1 hprod0 rfl
13184 have hrespect : PRCCharacterRespectsCrossEq twoAdicAxisTwistCharacter :=
13185 PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical
13186 twoAdicAxisTwistCharacter_ratio_character
13187 PRCNormalizeRatioCanonicalTarget_proved
13188 have htwoThree :
13189 PRCCharacterTwoThreeCompositeLocalOrientation twoAdicAxisTwistCharacter := by
13190 rcases hlocal (twoOrbit * threeOrbit) hprod0 hprodUnit with hId | hRec
13191 · exact Or.inl
13192 (RatioOrbit.crossEq_trans
13193 (hrespect twoThreePrimeCompositeDirection
13194 (orbitDirection (twoOrbit * threeOrbit) hprod0)
13195 (RatioOrbit.crossEq_symm hprodCross))
13196 (RatioOrbit.crossEq_trans hId hprodCross))
13197 · exact Or.inr
13198 (RatioOrbit.crossEq_trans
13199 (hrespect twoThreePrimeCompositeDirection
13200 (orbitDirection (twoOrbit * threeOrbit) hprod0)
13201 (RatioOrbit.crossEq_symm hprodCross))
13202 (RatioOrbit.crossEq_trans hRec (ratioOrbit_recip_congr hprodCross)))
13203 exact PRCCharacterTwoAdicAxisTwist_two_three_local_orientation_absurd
13204 twoAdicAxisTwistCharacter_ratio_character
13205 twoAdicAxisTwistCharacter_branch htwoThree
13206
13207theorem PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_refuted :
13208 ¬ PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget := by
13209 intro htarget
13210 exact PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_refuted
13211 (PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_product_local_orientation
13212 htarget)
13213
13214theorem PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget_refuted :
13215 ¬ PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget := by
13216 intro htarget
13217 have hprime :
13218 PRCCharacterPrimeDirectionCalibrated twoAdicAxisTwistCharacter :=
13219 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist
13220 twoAdicAxisTwistCharacter_branch
13221 have htransport :
13222 PRCCharacterNonunitReciprocalBranchTransport twoAdicAxisTwistCharacter :=
13223 htarget twoAdicAxisTwistCharacter twoAdicAxisTwistCharacter_ratio_character
13224 hprime
13225 have htwoRec :
13226 PRCCharacterOrbitDirectionReciprocal twoAdicAxisTwistCharacter
13227 twoOrbit twoOrbit_primeOrbit.1 := by
13228 simpa [PRCCharacterOrbitDirectionReciprocal, twoPrimeDirection,
13229 primeDirection] using twoAdicAxisTwistCharacter_branch.1
13230 have hthreeRec :
13231 PRCCharacterOrbitDirectionReciprocal twoAdicAxisTwistCharacter
13232 threeOrbit threeOrbit_primeOrbit.1 :=
13233 htransport twoOrbit twoOrbit_primeOrbit.1 twoOrbit_primeOrbit.2.1 htwoRec
13234 threeOrbit threeOrbit_primeOrbit.1 threeOrbit_primeOrbit.2.1
13235 have hthreeId :
13236 PRCCharacterOrbitDirectionIdentity twoAdicAxisTwistCharacter
13237 threeOrbit threeOrbit_primeOrbit.1 := by
13238 simpa [PRCCharacterOrbitDirectionIdentity, threePrimeDirection,
13239 primeDirection] using
13240 twoAdicAxisTwistCharacter_branch.2 threeOrbit threeOrbit_primeOrbit
13241 threeOrbit_ne_twoOrbit
13242 have hself :
13243 RatioOrbit.crossEq (orbitDirection threeOrbit threeOrbit_primeOrbit.1)
13244 (RatioOrbit.recip (orbitDirection threeOrbit threeOrbit_primeOrbit.1)) :=
13245 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hthreeId) hthreeRec
13246 exact orbitDirection_nonunit_not_crossEq_recip threeOrbit
13247 threeOrbit_primeOrbit.1 threeOrbit_primeOrbit.2.1 hself
13248
13249theorem PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget_refuted :
13250 ¬ PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget := by
13251 intro htarget
13252 exact PRCPrimeCalibrationForcesNonunitReciprocalBranchTransportTarget_refuted
13253 htarget.2
13254
13255theorem PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_refuted :
13256 ¬ PRCPrimeCalibrationForcesNonunitBranchAgreementTarget := by
13257 intro htarget
13258 exact PRCPrimeCalibrationForcesNonunitBranchTransportPairTarget_refuted
13259 (PRCPrimeCalibrationForcesNonunitBranchAgreementTarget_iff_transport_pair.mp
13260 htarget)
13261
13262theorem PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_refuted :
13263 ¬ PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget := by
13264 intro htarget
13265 have hprime :
13266 PRCCharacterPrimeDirectionCalibrated twoAdicAxisTwistCharacter :=
13267 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist
13268 twoAdicAxisTwistCharacter_branch
13269 have hnoAdj :
13270 PRCCharacterPrimeFloorNoAdjacentMixedOrientation
13271 twoAdicAxisTwistCharacter :=
13272 htarget twoAdicAxisTwistCharacter twoAdicAxisTwistCharacter_ratio_character
13273 hprime
13274 have htwoRec :
13275 PRCCharacterOrbitDirectionReciprocal twoAdicAxisTwistCharacter
13276 twoOrbit twoOrbit_primeOrbit.1 := by
13277 simpa [PRCCharacterOrbitDirectionReciprocal, twoPrimeDirection,
13278 primeDirection] using twoAdicAxisTwistCharacter_branch.1
13279 have hthreeId :
13280 PRCCharacterOrbitDirectionIdentity twoAdicAxisTwistCharacter
13281 (DistinctionNat.succ twoOrbit) (orbit_succ_ne_zero twoOrbit) := by
13282 simpa [PRCCharacterOrbitDirectionIdentity, threeOrbit,
13283 threePrimeDirection, primeDirection] using
13284 twoAdicAxisTwistCharacter_branch.2 threeOrbit threeOrbit_primeOrbit
13285 threeOrbit_ne_twoOrbit
13286 exact (hnoAdj twoOrbit twoOrbit_primeOrbit.1 twoOrbit_primeOrbit.2.1).2
13287 ⟨htwoRec, hthreeId⟩
13288
13289theorem PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget_refuted :
13290 ¬ PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget := by
13291 intro htarget
13292 have hprime :
13293 PRCCharacterPrimeDirectionCalibrated twoAdicAxisTwistCharacter :=
13294 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist
13295 twoAdicAxisTwistCharacter_branch
13296 have hcontracts :
13297 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep
13298 twoAdicAxisTwistCharacter :=
13299 htarget twoAdicAxisTwistCharacter twoAdicAxisTwistCharacter_ratio_character
13300 hprime
13301 have hthreeId :
13302 PRCCharacterOrbitDirectionIdentity twoAdicAxisTwistCharacter
13303 (DistinctionNat.succ twoOrbit) (orbit_succ_ne_zero twoOrbit) := by
13304 simpa [PRCCharacterOrbitDirectionIdentity, threeOrbit,
13305 threePrimeDirection, primeDirection] using
13306 twoAdicAxisTwistCharacter_branch.2 threeOrbit threeOrbit_primeOrbit
13307 threeOrbit_ne_twoOrbit
13308 have htwoId :
13309 PRCCharacterOrbitDirectionIdentity twoAdicAxisTwistCharacter
13310 twoOrbit twoOrbit_primeOrbit.1 :=
13311 hcontracts twoOrbit twoOrbit_primeOrbit.1 twoOrbit_primeOrbit.2.1
13312 hthreeId
13313 have htwoRec :
13314 PRCCharacterOrbitDirectionReciprocal twoAdicAxisTwistCharacter
13315 twoOrbit twoOrbit_primeOrbit.1 := by
13316 simpa [PRCCharacterOrbitDirectionReciprocal, twoPrimeDirection,
13317 primeDirection] using twoAdicAxisTwistCharacter_branch.1
13318 have hself :
13319 RatioOrbit.crossEq (orbitDirection twoOrbit twoOrbit_primeOrbit.1)
13320 (RatioOrbit.recip (orbitDirection twoOrbit twoOrbit_primeOrbit.1)) :=
13321 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) htwoRec
13322 exact orbitDirection_nonunit_not_crossEq_recip twoOrbit
13323 twoOrbit_primeOrbit.1 twoOrbit_primeOrbit.2.1 hself
13324
13325theorem twoAdicTwistRat_four :
13326 twoAdicTwistRat 4 = (1 / 4 : ℚ) := by
13327 have hmul := twoAdicTwistRat_mul (2 : ℚ) (2 : ℚ)
13328 rw [twoAdicTwistRat_two] at hmul
13329 norm_num at hmul
13330 exact hmul
13331
13332theorem twoAdicAxisTwistCharacter_succ_three_not_identity :
13333 ¬ PRCCharacterOrbitDirectionIdentity twoAdicAxisTwistCharacter
13334 (DistinctionNat.succ threeOrbit) (orbit_succ_ne_zero threeOrbit) := by
13335 intro hId
13336 rw [PRCCharacterOrbitDirectionIdentity, RatioOrbit.crossEq_iff_toRat_eq,
13337 twoAdicAxisTwistCharacter_toRat, orbitDirection_toRat,
13338 DistinctionNat.toNat_succ, threeOrbit_toNat] at hId
13339 norm_num [twoAdicTwistRat_four] at hId
13340
13341theorem PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget_refuted :
13342 ¬ PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget := by
13343 intro htarget
13344 have hprime :
13345 PRCCharacterPrimeDirectionCalibrated twoAdicAxisTwistCharacter :=
13346 PRCCharacterPrimeDirectionCalibrated_of_two_adic_axis_twist
13347 twoAdicAxisTwistCharacter_branch
13348 have hextends :
13349 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep
13350 twoAdicAxisTwistCharacter :=
13351 htarget twoAdicAxisTwistCharacter twoAdicAxisTwistCharacter_ratio_character
13352 hprime
13353 have hthreeId :
13354 PRCCharacterOrbitDirectionIdentity twoAdicAxisTwistCharacter
13355 threeOrbit threeOrbit_primeOrbit.1 := by
13356 simpa [PRCCharacterOrbitDirectionIdentity, threePrimeDirection,
13357 primeDirection] using
13358 twoAdicAxisTwistCharacter_branch.2 threeOrbit threeOrbit_primeOrbit
13359 threeOrbit_ne_twoOrbit
13360 exact twoAdicAxisTwistCharacter_succ_three_not_identity
13361 (hextends threeOrbit threeOrbit_primeOrbit.1 threeOrbit_primeOrbit.2.1
13362 hthreeId)
13363
13364/-- Sharper orientation blocker B: once prime orientation is coherent, the
13365multiplicative character law and native rational factorization must propagate
13366that orientation to every ratio direction. -/
13367def PRCCoherentPrimeOrientationPropagatesToGlobalTarget : Prop :=
13368 ∀ χ : RatioOrbit → RatioOrbit,
13369 PRCRatioCharacter χ →
13370 PRCCharacterPrimeOrientationCoherent χ →
13371 PRCCharacterGlobalCostOrientation χ
13372
13373/-- Exact repaired orientation target after the absolute-value countermodel:
13374coherent prime orientation must be supplemented by signed-unit calibration before
13375one can ask for global pointwise identity-or-reciprocal orientation. -/
13376def PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget : Prop :=
13377 ∀ χ : RatioOrbit → RatioOrbit,
13378 PRCRatioCharacter χ →
13379 PRCCharacterSignedUnitCalibrated χ →
13380 PRCCharacterPrimeOrientationCoherent χ →
13381 PRCCharacterGlobalCostOrientation χ
13382
13383/-- The admissible interface must also force signed-unit calibration. Pass 279
13384shows that the repaired prime-pair admissibility fields still do not do this. -/
13385def PRCAdmissibleCharacterSignedUnitCalibratedTarget : Prop :=
13386 ∀ χ : RatioOrbit → RatioOrbit,
13387 PRCAdmissibleRatioCharacter χ →
13388 PRCCharacterSignedUnitCalibrated χ
13389
13390theorem PRCAdmissibleCharacterGlobalOrientationTarget_of_signed_global_propagation
13391 (hsign : PRCAdmissibleCharacterSignedUnitCalibratedTarget)
13392 (hprop : PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget) :
13393 PRCAdmissibleCharacterGlobalOrientationTarget := by
13394 intro χ hadm
13395 exact hprop χ hadm.ratio_character (hsign χ hadm)
13396 (PRCAdmissibleCharacterPrimeOrientationCoherentTarget_proved χ hadm)
13397
13398theorem absValueCharacter_negative_one_no_global_orientation :
13399 ¬ (RatioOrbit.crossEq (absValueCharacter negativeOneRatio) negativeOneRatio ∨
13400 RatioOrbit.crossEq (absValueCharacter negativeOneRatio)
13401 (RatioOrbit.recip negativeOneRatio)) := by
13402 intro horient
13403 rcases horient with hsame | hrec
13404 · rw [RatioOrbit.crossEq_iff_toRat_eq, absValueCharacter_toRat,
13405 negativeOneRatio_toRat] at hsame
13406 norm_num at hsame
13407 · rw [RatioOrbit.crossEq_iff_toRat_eq, absValueCharacter_toRat,
13408 negativeOneRatio_toRat, RatioOrbit.recip_toRat,
13409 negativeOneRatio_toRat] at hrec
13410 norm_num at hrec
13411
13412/-- The coherent-prime-to-global target is false without a signed-unit
13413calibration. The absolute-value character fixes every positive prime axis, but
13414it sends `-1` to `+1`, so the global orientation conclusion fails exactly at the
13415signed unit. -/
13416theorem PRCCoherentPrimeOrientationPropagatesToGlobalTarget_refuted :
13417 ¬ PRCCoherentPrimeOrientationPropagatesToGlobalTarget := by
13418 intro hprop
13419 exact absValueCharacter_negative_one_no_global_orientation
13420 (hprop absValueCharacter absValueCharacter_ratio_character
13421 absValueCharacter_prime_orientation_coherent negativeOneRatio)
13422
13423theorem PRCAdmissibleCharacterSignedUnitCalibratedTarget_refuted :
13424 ¬ PRCAdmissibleCharacterSignedUnitCalibratedTarget := by
13425 intro hsign
13426 exact absValueCharacter_not_signed_unit_calibrated
13427 (hsign absValueCharacter absValueCharacter_admissible)
13428
13429theorem negativeOneRatio_self_recip :
13430 RatioOrbit.crossEq negativeOneRatio (RatioOrbit.recip negativeOneRatio) := by
13431 rw [RatioOrbit.crossEq_iff_toRat_eq, negativeOneRatio_toRat,
13432 RatioOrbit.recip_toRat, negativeOneRatio_toRat]
13433 norm_num
13434
13435theorem PRCCharacterZero_of_prime_orientation_coherent
13436 {χ : RatioOrbit → RatioOrbit}
13437 (hχ : PRCRatioCharacter χ)
13438 (hcoh : PRCCharacterPrimeOrientationCoherent χ) :
13439 RatioOrbit.crossEq (χ RatioOrbit.zero) RatioOrbit.zero := by
13440 have hrespect : PRCCharacterRespectsCrossEq χ :=
13441 PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical hχ
13442 PRCNormalizeRatioCanonicalTarget_proved
13443 have htwoNotOne :
13444 ¬ RatioOrbit.crossEq (χ twoPrimeDirection) RatioOrbit.one := by
13445 intro hone
13446 rcases hcoh with hallId | hallRec
13447 · have htwoId := hallId twoOrbit twoOrbit_primeOrbit
13448 have htwoOne :
13449 RatioOrbit.crossEq twoPrimeDirection RatioOrbit.one :=
13450 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoId) hone
13451 rw [RatioOrbit.crossEq_iff_toRat_eq, twoPrimeDirection_toRat,
13452 RatioOrbit.one_toRat] at htwoOne
13453 norm_num at htwoOne
13454 · have htwoRec := hallRec twoOrbit twoOrbit_primeOrbit
13455 have hrecOne :
13456 RatioOrbit.crossEq (RatioOrbit.recip twoPrimeDirection)
13457 RatioOrbit.one :=
13458 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm htwoRec) hone
13459 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
13460 twoPrimeDirection_toRat, RatioOrbit.one_toRat] at hrecOne
13461 norm_num at hrecOne
13462 have hzeroMul :
13463 RatioOrbit.crossEq (RatioOrbit.mul RatioOrbit.zero twoPrimeDirection)
13464 RatioOrbit.zero := by
13465 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat,
13466 RatioOrbit.zero_toRat]
13467 norm_num
13468 have hχzeroMul :
13469 RatioOrbit.crossEq
13470 (χ (RatioOrbit.mul RatioOrbit.zero twoPrimeDirection))
13471 (χ RatioOrbit.zero) :=
13472 hrespect (RatioOrbit.mul RatioOrbit.zero twoPrimeDirection)
13473 RatioOrbit.zero hzeroMul
13474 have hmul :
13475 RatioOrbit.crossEq
13476 (χ (RatioOrbit.mul RatioOrbit.zero twoPrimeDirection))
13477 (RatioOrbit.mul (χ RatioOrbit.zero) (χ twoPrimeDirection)) :=
13478 hχ.multiplicative RatioOrbit.zero twoPrimeDirection
13479 have hzeroEq :
13480 RatioOrbit.crossEq (χ RatioOrbit.zero)
13481 (RatioOrbit.mul (χ RatioOrbit.zero) (χ twoPrimeDirection)) :=
13482 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm hχzeroMul) hmul
13483 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.mul_toRat] at hzeroEq
13484 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.zero_toRat]
13485 by_cases hy : (χ RatioOrbit.zero).toRat = 0
13486 · exact hy
13487 · have htwoRatOne : (χ twoPrimeDirection).toRat = 1 := by
13488 have hcancel :
13489 (χ RatioOrbit.zero).toRat * 1 =
13490 (χ RatioOrbit.zero).toRat * (χ twoPrimeDirection).toRat := by
13491 simpa [mul_one] using hzeroEq
13492 exact (mul_left_cancel₀ hy hcancel).symm
13493 exact False.elim (htwoNotOne (by
13494 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.one_toRat]
13495 exact htwoRatOne))
13496
13497theorem PRCCharacterPositiveOrbitIdentity_of_all_prime_identity
13498 {χ : RatioOrbit → RatioOrbit}
13499 (hχ : PRCRatioCharacter χ)
13500 (hrespect : PRCCharacterRespectsCrossEq χ)
13501 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
13502 (hprimeId : ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
13503 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp))
13504 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero) :
13505 PRCCharacterOrbitDirectionIdentity χ p hp := by
13506 by_cases hunit : DistinctionNat.unit p
13507 · have hpOne :
13508 RatioOrbit.crossEq (orbitDirection p hp) RatioOrbit.one := by
13509 rw [RatioOrbit.crossEq_iff_toRat_eq, orbitDirection_toRat,
13510 RatioOrbit.one_toRat]
13511 exact_mod_cast (DistinctionNat.unit_iff_toNat_eq_one p).mp hunit
13512 exact RatioOrbit.crossEq_trans (hrespect (orbitDirection p hp)
13513 RatioOrbit.one hpOne)
13514 (RatioOrbit.crossEq_trans hχ.unit (RatioOrbit.crossEq_symm hpOne))
13515 · exact PRCCharacterNonunitOrbitAllIdentity_of_all_prime_identity
13516 hχ hcompat hprimeId p hp hunit
13517
13518theorem PRCCharacterPositiveOrbitReciprocal_of_all_prime_reciprocal
13519 {χ : RatioOrbit → RatioOrbit}
13520 (hχ : PRCRatioCharacter χ)
13521 (hrespect : PRCCharacterRespectsCrossEq χ)
13522 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
13523 (hprimeRec : ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
13524 RatioOrbit.crossEq (χ (primeDirection p hp))
13525 (RatioOrbit.recip (primeDirection p hp)))
13526 (p : DistinctionNat) (hp : p ≠ DistinctionNat.zero) :
13527 PRCCharacterOrbitDirectionReciprocal χ p hp := by
13528 by_cases hunit : DistinctionNat.unit p
13529 · have hpOne :
13530 RatioOrbit.crossEq (orbitDirection p hp) RatioOrbit.one := by
13531 rw [RatioOrbit.crossEq_iff_toRat_eq, orbitDirection_toRat,
13532 RatioOrbit.one_toRat]
13533 exact_mod_cast (DistinctionNat.unit_iff_toNat_eq_one p).mp hunit
13534 have hrecOne :
13535 RatioOrbit.crossEq RatioOrbit.one
13536 (RatioOrbit.recip (orbitDirection p hp)) := by
13537 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.one_toRat,
13538 RatioOrbit.recip_toRat, orbitDirection_toRat]
13539 rw [(DistinctionNat.unit_iff_toNat_eq_one p).mp hunit]
13540 norm_num
13541 exact RatioOrbit.crossEq_trans (hrespect (orbitDirection p hp)
13542 RatioOrbit.one hpOne)
13543 (RatioOrbit.crossEq_trans hχ.unit hrecOne)
13544 · exact PRCCharacterNonunitOrbitAllReciprocal_of_all_prime_reciprocal
13545 hχ hcompat hprimeRec p hp hunit
13546
13547theorem PRCCharacterPositiveRatioIdentity_of_all_prime_identity
13548 {χ : RatioOrbit → RatioOrbit}
13549 (hχ : PRCRatioCharacter χ)
13550 (hrespect : PRCCharacterRespectsCrossEq χ)
13551 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
13552 (hprimeId : ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
13553 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp))
13554 {n d : DistinctionNat}
13555 (hn : n ≠ DistinctionNat.zero) (hd : d ≠ DistinctionNat.zero) :
13556 RatioOrbit.crossEq
13557 (χ (RatioOrbit.mul (orbitDirection n hn)
13558 (RatioOrbit.recip (orbitDirection d hd))))
13559 (RatioOrbit.mul (orbitDirection n hn)
13560 (RatioOrbit.recip (orbitDirection d hd))) := by
13561 have hnId := PRCCharacterPositiveOrbitIdentity_of_all_prime_identity
13562 hχ hrespect hcompat hprimeId n hn
13563 have hdId := PRCCharacterPositiveOrbitIdentity_of_all_prime_identity
13564 hχ hrespect hcompat hprimeId d hd
13565 have hrecD :
13566 RatioOrbit.crossEq
13567 (χ (RatioOrbit.recip (orbitDirection d hd)))
13568 (RatioOrbit.recip (orbitDirection d hd)) :=
13569 RatioOrbit.crossEq_trans (hχ.reciprocal (orbitDirection d hd))
13570 (ratioOrbit_recip_congr hdId)
13571 exact RatioOrbit.crossEq_trans
13572 (hχ.multiplicative (orbitDirection n hn)
13573 (RatioOrbit.recip (orbitDirection d hd)))
13574 (ratioOrbit_mul_congr hnId hrecD)
13575
13576theorem PRCCharacterPositiveRatioReciprocal_of_all_prime_reciprocal
13577 {χ : RatioOrbit → RatioOrbit}
13578 (hχ : PRCRatioCharacter χ)
13579 (hrespect : PRCCharacterRespectsCrossEq χ)
13580 (hcompat : PRCCharacterOrbitProductDisplayCompatible χ)
13581 (hprimeRec : ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
13582 RatioOrbit.crossEq (χ (primeDirection p hp))
13583 (RatioOrbit.recip (primeDirection p hp)))
13584 {n d : DistinctionNat}
13585 (hn : n ≠ DistinctionNat.zero) (hd : d ≠ DistinctionNat.zero) :
13586 RatioOrbit.crossEq
13587 (χ (RatioOrbit.mul (orbitDirection n hn)
13588 (RatioOrbit.recip (orbitDirection d hd))))
13589 (RatioOrbit.recip
13590 (RatioOrbit.mul (orbitDirection n hn)
13591 (RatioOrbit.recip (orbitDirection d hd)))) := by
13592 have hnRec := PRCCharacterPositiveOrbitReciprocal_of_all_prime_reciprocal
13593 hχ hrespect hcompat hprimeRec n hn
13594 have hdRec := PRCCharacterPositiveOrbitReciprocal_of_all_prime_reciprocal
13595 hχ hrespect hcompat hprimeRec d hd
13596 have hrecD :
13597 RatioOrbit.crossEq
13598 (χ (RatioOrbit.recip (orbitDirection d hd)))
13599 (orbitDirection d hd) :=
13600 RatioOrbit.crossEq_trans (hχ.reciprocal (orbitDirection d hd))
13601 (RatioOrbit.crossEq_trans (ratioOrbit_recip_congr hdRec)
13602 (ratioOrbit_recip_recip_crossEq_self (orbitDirection d hd)))
13603 have hprod :
13604 RatioOrbit.crossEq
13605 (RatioOrbit.mul
13606 (RatioOrbit.recip (orbitDirection n hn)) (orbitDirection d hd))
13607 (RatioOrbit.recip
13608 (RatioOrbit.mul (orbitDirection n hn)
13609 (RatioOrbit.recip (orbitDirection d hd)))) :=
13610 RatioOrbit.crossEq_trans
13611 (ratioOrbit_mul_congr (RatioOrbit.crossEq_refl _)
13612 (RatioOrbit.crossEq_symm
13613 (ratioOrbit_recip_recip_crossEq_self (orbitDirection d hd))))
13614 (ratioOrbit_mul_recip_recip_crossEq_recip_mul
13615 (orbitDirection n hn) (RatioOrbit.recip (orbitDirection d hd)))
13616 exact RatioOrbit.crossEq_trans
13617 (hχ.multiplicative (orbitDirection n hn)
13618 (RatioOrbit.recip (orbitDirection d hd)))
13619 (RatioOrbit.crossEq_trans (ratioOrbit_mul_congr hnRec hrecD) hprod)
13620
13621theorem PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget_proved :
13622 PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget := by
13623 intro χ hχ hsign hcoh q
13624 have hrespect : PRCCharacterRespectsCrossEq χ :=
13625 PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical hχ
13626 PRCNormalizeRatioCanonicalTarget_proved
13627 have hcompat : PRCCharacterOrbitProductDisplayCompatible χ :=
13628 PRCCharacterOrbitProductDisplayCompatible_of_crossEq_respect hrespect
13629 by_cases hq0 : q.toRat = 0
13630 · have hqZero : RatioOrbit.crossEq q RatioOrbit.zero := by
13631 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.zero_toRat]
13632 exact hq0
13633 have hχzero := PRCCharacterZero_of_prime_orientation_coherent hχ hcoh
13634 exact Or.inl
13635 (RatioOrbit.crossEq_trans (hrespect q RatioOrbit.zero hqZero)
13636 (RatioOrbit.crossEq_trans hχzero (RatioOrbit.crossEq_symm hqZero)))
13637 · rcases PRCSignedRatioDecompositionTarget_proved q hq0 with hpos | hneg
13638 · rcases hpos with ⟨n, d, hn, hd, hqpos⟩
13639 rcases hcoh with hallId | hallRec
13640 · have hposId :
13641 RatioOrbit.crossEq
13642 (χ (RatioOrbit.mul (orbitDirection n hn)
13643 (RatioOrbit.recip (orbitDirection d hd))))
13644 (RatioOrbit.mul (orbitDirection n hn)
13645 (RatioOrbit.recip (orbitDirection d hd))) :=
13646 PRCCharacterPositiveRatioIdentity_of_all_prime_identity
13647 hχ hrespect hcompat hallId hn hd
13648 exact Or.inl
13649 (RatioOrbit.crossEq_trans (hrespect q _ hqpos)
13650 (RatioOrbit.crossEq_trans hposId (RatioOrbit.crossEq_symm hqpos)))
13651 · have hposRec :
13652 RatioOrbit.crossEq
13653 (χ (RatioOrbit.mul (orbitDirection n hn)
13654 (RatioOrbit.recip (orbitDirection d hd))))
13655 (RatioOrbit.recip
13656 (RatioOrbit.mul (orbitDirection n hn)
13657 (RatioOrbit.recip (orbitDirection d hd)))) :=
13658 PRCCharacterPositiveRatioReciprocal_of_all_prime_reciprocal
13659 hχ hrespect hcompat hallRec hn hd
13660 exact Or.inr
13661 (RatioOrbit.crossEq_trans (hrespect q _ hqpos)
13662 (RatioOrbit.crossEq_trans hposRec
13663 (ratioOrbit_recip_congr (RatioOrbit.crossEq_symm hqpos))))
13664 · rcases hneg with ⟨n, d, hn, hd, hqneg⟩
13665 let pos :=
13666 RatioOrbit.mul (orbitDirection n hn)
13667 (RatioOrbit.recip (orbitDirection d hd))
13668 rcases hcoh with hallId | hallRec
13669 · have hposId : RatioOrbit.crossEq (χ pos) pos :=
13670 PRCCharacterPositiveRatioIdentity_of_all_prime_identity
13671 hχ hrespect hcompat hallId hn hd
13672 have hnegId :
13673 RatioOrbit.crossEq
13674 (χ (RatioOrbit.mul negativeOneRatio pos))
13675 (RatioOrbit.mul negativeOneRatio pos) :=
13676 RatioOrbit.crossEq_trans
13677 (hχ.multiplicative negativeOneRatio pos)
13678 (ratioOrbit_mul_congr hsign hposId)
13679 exact Or.inl
13680 (RatioOrbit.crossEq_trans (hrespect q _ hqneg)
13681 (RatioOrbit.crossEq_trans hnegId (RatioOrbit.crossEq_symm hqneg)))
13682 · have hposRec : RatioOrbit.crossEq (χ pos) (RatioOrbit.recip pos) :=
13683 PRCCharacterPositiveRatioReciprocal_of_all_prime_reciprocal
13684 hχ hrespect hcompat hallRec hn hd
13685 have hnegRec :
13686 RatioOrbit.crossEq
13687 (χ (RatioOrbit.mul negativeOneRatio pos))
13688 (RatioOrbit.recip (RatioOrbit.mul negativeOneRatio pos)) :=
13689 RatioOrbit.crossEq_trans
13690 (hχ.multiplicative negativeOneRatio pos)
13691 (RatioOrbit.crossEq_trans
13692 (ratioOrbit_mul_congr hsign hposRec)
13693 (RatioOrbit.crossEq_trans
13694 (ratioOrbit_mul_congr negativeOneRatio_self_recip
13695 (RatioOrbit.crossEq_refl _))
13696 (ratioOrbit_mul_recip_recip_crossEq_recip_mul
13697 negativeOneRatio pos)))
13698 exact Or.inr
13699 (RatioOrbit.crossEq_trans (hrespect q _ hqneg)
13700 (RatioOrbit.crossEq_trans hnegRec
13701 (ratioOrbit_recip_congr (RatioOrbit.crossEq_symm hqneg))))
13702
13703theorem PRCAdmissibleCharacterGlobalOrientationTarget_of_signed_unit_calibration
13704 (hsign : PRCAdmissibleCharacterSignedUnitCalibratedTarget) :
13705 PRCAdmissibleCharacterGlobalOrientationTarget :=
13706 PRCAdmissibleCharacterGlobalOrientationTarget_of_signed_global_propagation
13707 hsign PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget_proved
13708
13709theorem PRCNativeCostAdmissibleCharacterRigidityTarget_of_signed_unit_calibration
13710 (hsign : PRCAdmissibleCharacterSignedUnitCalibratedTarget) :
13711 PRCNativeCostAdmissibleCharacterRigidityTarget :=
13712 PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_global_orientation
13713 (PRCAdmissibleCharacterGlobalOrientationTarget_of_signed_unit_calibration
13714 hsign)
13715
13716theorem PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_signed_unit_calibration
13717 (hfactor : PRCNativeCostCharacterFactorizationTarget)
13718 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
13719 (hsign : PRCAdmissibleCharacterSignedUnitCalibratedTarget) :
13720 PRCStrengthenedNativeCostUniquenessTarget :=
13721 PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_rigidity
13722 hfactor htwo
13723 (PRCNativeCostAdmissibleCharacterRigidityTarget_of_signed_unit_calibration
13724 hsign)
13725
13726theorem PRCSignedAdmissibleRatioCharacter_global_orientation
13727 {χ : RatioOrbit → RatioOrbit}
13728 (hadm : PRCSignedAdmissibleRatioCharacter χ) :
13729 PRCCharacterGlobalCostOrientation χ :=
13730 PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget_proved χ
13731 hadm.admissible.ratio_character hadm.signed_unit
13732 (PRCAdmissibleCharacterPrimeOrientationCoherentTarget_proved χ
13733 hadm.admissible)
13734
13735/-- Signed-admissible character rigidity is the repaired version of admissible
13736rigidity: once sign erasure is excluded, the character-generated cost is
13737canonical everywhere. -/
13738def PRCNativeCostSignedAdmissibleCharacterRigidityTarget : Prop :=
13739 ∀ χ : RatioOrbit → RatioOrbit,
13740 PRCSignedAdmissibleRatioCharacter χ →
13741 ∀ q : RatioOrbit,
13742 RatioOrbit.crossEq (costFromCharacter χ q) (onRatioOrbit q)
13743
13744theorem PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved :
13745 PRCNativeCostSignedAdmissibleCharacterRigidityTarget := by
13746 intro χ hadm q
13747 rcases PRCSignedAdmissibleRatioCharacter_global_orientation hadm q with hsame | hinv
13748 · exact onRatioOrbit_congr hsame
13749 · exact RatioOrbit.crossEq_trans
13750 (onRatioOrbit_congr hinv)
13751 (RatioOrbit.crossEq_symm (reciprocal_symmetric q))
13752
13753theorem PRCZeroCalibratedNativeCostUniquenessTarget_of_signed_admissible_factorization
13754 (hfactor : PRCZeroCalibratedNativeCostSignedAdmissibleCharacterFactorizationTarget) :
13755 PRCZeroCalibratedNativeCostUniquenessTarget := by
13756 intro F hF hzero q
13757 rcases hfactor F hF hzero with ⟨χ, hadm, hFχ⟩
13758 exact RatioOrbit.crossEq_trans (hFχ q)
13759 (PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved χ hadm q)
13760
13761theorem PRCNoSignedAdmissibleFactorForAbsValueGeneratedNativeCost :
13762 ¬ ∃ χ : RatioOrbit → RatioOrbit,
13763 PRCSignedAdmissibleRatioCharacter χ ∧
13764 ∀ q : RatioOrbit,
13765 RatioOrbit.crossEq (absValueGeneratedNativeCost q)
13766 (costFromCharacter χ q) := by
13767 intro hχ
13768 rcases hχ with ⟨χ, hadm, hFχ⟩
13769 have hcanonical :
13770 RatioOrbit.crossEq (absValueGeneratedNativeCost negativeOneRatio)
13771 (onRatioOrbit negativeOneRatio) :=
13772 RatioOrbit.crossEq_trans (hFχ negativeOneRatio)
13773 (PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved
13774 χ hadm negativeOneRatio)
13775 exact absValueGeneratedNativeCost_negative_one_not_canonical hcanonical
13776
13777theorem PRCZeroCalibratedNativeCostSignedAdmissibleCharacterFactorizationTarget_refuted :
13778 ¬ PRCZeroCalibratedNativeCostSignedAdmissibleCharacterFactorizationTarget := by
13779 intro hfactor
13780 exact PRCNoSignedAdmissibleFactorForAbsValueGeneratedNativeCost
13781 (hfactor absValueGeneratedNativeCost
13782 absValueGeneratedNativeCost_native_hypotheses
13783 absValueGeneratedNativeCost_doubled_trace_zero_calibrated)
13784
13785theorem PRCZeroCalibratedNativeCostUniquenessTarget_refuted :
13786 ¬ PRCZeroCalibratedNativeCostUniquenessTarget := by
13787 intro huniq
13788 exact absValueGeneratedNativeCost_negative_one_not_canonical
13789 (huniq absValueGeneratedNativeCost
13790 absValueGeneratedNativeCost_native_hypotheses
13791 absValueGeneratedNativeCost_doubled_trace_zero_calibrated
13792 negativeOneRatio)
13793
13794/-- Upstream repaired factorization target: a strengthened native cost must
13795factor through a signed-admissible character, not merely through the unsigned
13796admissible interface refuted by `absValueCharacter`. -/
13797def PRCStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget : Prop :=
13798 ∀ F : RatioOrbit → RatioOrbit,
13799 PRCStrengthenedNativeCostHypotheses F →
13800 ∃ χ : RatioOrbit → RatioOrbit,
13801 PRCSignedAdmissibleRatioCharacter χ ∧
13802 ∀ q : RatioOrbit,
13803 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
13804
13805theorem PRCStrengthenedNativeCostUniquenessTarget_of_signed_admissible_factorization
13806 (hfactor : PRCStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget) :
13807 PRCStrengthenedNativeCostUniquenessTarget := by
13808 intro F hF q
13809 rcases hfactor F hF with ⟨χ, hadm, hFχ⟩
13810 exact RatioOrbit.crossEq_trans (hFχ q)
13811 (PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved χ hadm q)
13812
13813theorem PRCStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_refuted :
13814 ¬ PRCStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget := by
13815 intro hfactor
13816 exact PRCStrengthenedNativeCostUniquenessTarget_refuted
13817 (PRCStrengthenedNativeCostUniquenessTarget_of_signed_admissible_factorization
13818 hfactor)
13819
13820theorem costFromCharacter_negativeOne_forces_signed_unit
13821 {χ : RatioOrbit → RatioOrbit}
13822 (hχ : PRCRatioCharacter χ)
13823 (hcost : RatioOrbit.crossEq
13824 (costFromCharacter χ negativeOneRatio)
13825 (onRatioOrbit negativeOneRatio)) :
13826 PRCCharacterSignedUnitCalibrated χ := by
13827 have hnegNonzero : negativeOneRatio.toRat ≠ 0 := by
13828 rw [negativeOneRatio_toRat]
13829 norm_num
13830 have hx : (χ negativeOneRatio).toRat ≠ 0 :=
13831 hχ.nonzero_preserving hnegNonzero
13832 rw [PRCCharacterSignedUnitCalibrated, RatioOrbit.crossEq_iff_toRat_eq,
13833 negativeOneRatio_toRat]
13834 rw [RatioOrbit.crossEq_iff_toRat_eq, costFromCharacter_toRat,
13835 onRatioOrbit_negativeOneRatio_toRat] at hcost
13836 let x : ℚ := (χ negativeOneRatio).toRat
13837 have hx' : x ≠ 0 := hx
13838 have hsum : x + x⁻¹ = -2 := by
13839 linarith
13840 have hmul := congrArg (fun t : ℚ => t * x) hsum
13841 field_simp [hx'] at hmul
13842 nlinarith
13843
13844/-- Zero-calibrated final factorization target: the repaired hypotheses are
13845strong enough to turn the zero-calibrated trace-root factor into a
13846signed-admissible character. -/
13847def PRCZeroCalibratedPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget : Prop :=
13848 ∀ F : RatioOrbit → RatioOrbit,
13849 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostHypotheses F →
13850 ∃ χ : RatioOrbit → RatioOrbit,
13851 PRCSignedAdmissibleRatioCharacter χ ∧
13852 ∀ q : RatioOrbit,
13853 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
13854
13855theorem PRCZeroCalibratedPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_proved :
13856 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget := by
13857 intro F hF
13858 rcases PRCZeroCalibratedNativeCostCharacterFactorizationTarget_proved
13859 F hF.prime_signed.signed_strengthened.strengthened.native
13860 hF.zero_calibrated with
13861 ⟨χ, hχ, hFχ⟩
13862 have hprime : PRCCharacterPrimeDirectionCalibrated χ := by
13863 intro p hp
13864 exact RatioOrbit.crossEq_trans
13865 (RatioOrbit.crossEq_symm (hFχ (primeDirection p hp)))
13866 (hF.prime_signed.prime_direction_cost p hp)
13867 have hpair : PRCCharacterPrimePairProductCostConsistent χ := by
13868 intro p hp r hr
13869 exact RatioOrbit.crossEq_trans
13870 (RatioOrbit.crossEq_symm
13871 (hFχ (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr))))
13872 (hF.prime_signed.signed_strengthened.strengthened.prime_pair_product_cost
13873 p hp r hr)
13874 have hsignCost :
13875 RatioOrbit.crossEq (costFromCharacter χ negativeOneRatio)
13876 (onRatioOrbit negativeOneRatio) :=
13877 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ negativeOneRatio))
13878 hF.prime_signed.signed_strengthened.signed_unit
13879 have hsign : PRCCharacterSignedUnitCalibrated χ :=
13880 costFromCharacter_negativeOne_forces_signed_unit hχ hsignCost
13881 exact ⟨χ, ⟨⟨hχ, hprime, hpair⟩, hsign⟩, hFχ⟩
13882
13883theorem PRCZeroCalibratedPrimeSignedStrengthenedNativeCostUniquenessTarget_proved :
13884 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostUniquenessTarget := by
13885 intro F hF q
13886 rcases
13887 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_proved
13888 F hF with
13889 ⟨χ, hadm, hFχ⟩
13890 exact RatioOrbit.crossEq_trans (hFχ q)
13891 (PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved χ hadm q)
13892
13893/-- Signed repaired factorization target after pass 281: under the native
13894signed-unit cost field, a factor must be signed-admissible. -/
13895def PRCSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget : Prop :=
13896 ∀ F : RatioOrbit → RatioOrbit,
13897 PRCSignedStrengthenedNativeCostHypotheses F →
13898 ∃ χ : RatioOrbit → RatioOrbit,
13899 PRCSignedAdmissibleRatioCharacter χ ∧
13900 ∀ q : RatioOrbit,
13901 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
13902
13903theorem PRCSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_of_character_factorization_and_two_calibration
13904 (hfactor : PRCNativeCostCharacterFactorizationTarget)
13905 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget) :
13906 PRCSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget := by
13907 intro F hF
13908 rcases hfactor F hF.strengthened.native with ⟨χ, hχ, hFχ⟩
13909 have htwoCal :
13910 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) :=
13911 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ two))
13912 hF.strengthened.native.two_calibrated
13913 have hprime :
13914 PRCCharacterPrimeDirectionCalibrated χ :=
13915 htwo χ hχ htwoCal
13916 have hpair :
13917 PRCCharacterPrimePairProductCostConsistent χ := by
13918 intro p hp r hr
13919 exact RatioOrbit.crossEq_trans
13920 (RatioOrbit.crossEq_symm
13921 (hFχ (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr))))
13922 (hF.strengthened.prime_pair_product_cost p hp r hr)
13923 have hsignCost :
13924 RatioOrbit.crossEq (costFromCharacter χ negativeOneRatio)
13925 (onRatioOrbit negativeOneRatio) :=
13926 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ negativeOneRatio))
13927 hF.signed_unit
13928 have hsign : PRCCharacterSignedUnitCalibrated χ :=
13929 costFromCharacter_negativeOne_forces_signed_unit hχ hsignCost
13930 exact ⟨χ, ⟨⟨hχ, hprime, hpair⟩, hsign⟩, hFχ⟩
13931
13932theorem PRCSignedStrengthenedNativeCostUniquenessTarget_of_signed_admissible_factorization
13933 (hfactor : PRCSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget) :
13934 PRCSignedStrengthenedNativeCostUniquenessTarget := by
13935 intro F hF q
13936 rcases hfactor F hF with ⟨χ, hadm, hFχ⟩
13937 exact RatioOrbit.crossEq_trans (hFχ q)
13938 (PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved χ hadm q)
13939
13940theorem PRCSignedStrengthenedNativeCostUniquenessTarget_of_character_factorization_and_two_calibration
13941 (hfactor : PRCNativeCostCharacterFactorizationTarget)
13942 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget) :
13943 PRCSignedStrengthenedNativeCostUniquenessTarget :=
13944 PRCSignedStrengthenedNativeCostUniquenessTarget_of_signed_admissible_factorization
13945 (PRCSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_of_character_factorization_and_two_calibration
13946 hfactor htwo)
13947
13948/-- Final repaired factorization target at this layer: once the native cost
13949itself carries prime calibration and signed-unit calibration, ordinary character
13950factorization yields a signed-admissible factor. -/
13951def PRCPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget : Prop :=
13952 ∀ F : RatioOrbit → RatioOrbit,
13953 PRCPrimeSignedStrengthenedNativeCostHypotheses F →
13954 ∃ χ : RatioOrbit → RatioOrbit,
13955 PRCSignedAdmissibleRatioCharacter χ ∧
13956 ∀ q : RatioOrbit,
13957 RatioOrbit.crossEq (F q) (costFromCharacter χ q)
13958
13959theorem PRCPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_of_character_factorization
13960 (hfactor : PRCNativeCostCharacterFactorizationTarget) :
13961 PRCPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget := by
13962 intro F hF
13963 rcases hfactor F hF.signed_strengthened.strengthened.native with ⟨χ, hχ, hFχ⟩
13964 have hprime :
13965 PRCCharacterPrimeDirectionCalibrated χ := by
13966 intro p hp
13967 exact RatioOrbit.crossEq_trans
13968 (RatioOrbit.crossEq_symm (hFχ (primeDirection p hp)))
13969 (hF.prime_direction_cost p hp)
13970 have hpair :
13971 PRCCharacterPrimePairProductCostConsistent χ := by
13972 intro p hp r hr
13973 exact RatioOrbit.crossEq_trans
13974 (RatioOrbit.crossEq_symm
13975 (hFχ (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr))))
13976 (hF.signed_strengthened.strengthened.prime_pair_product_cost p hp r hr)
13977 have hsignCost :
13978 RatioOrbit.crossEq (costFromCharacter χ negativeOneRatio)
13979 (onRatioOrbit negativeOneRatio) :=
13980 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ negativeOneRatio))
13981 hF.signed_strengthened.signed_unit
13982 have hsign : PRCCharacterSignedUnitCalibrated χ :=
13983 costFromCharacter_negativeOne_forces_signed_unit hχ hsignCost
13984 exact ⟨χ, ⟨⟨hχ, hprime, hpair⟩, hsign⟩, hFχ⟩
13985
13986theorem PRCPrimeSignedStrengthenedNativeCostUniquenessTarget_of_signed_admissible_factorization
13987 (hfactor : PRCPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget) :
13988 PRCPrimeSignedStrengthenedNativeCostUniquenessTarget := by
13989 intro F hF q
13990 rcases hfactor F hF with ⟨χ, hadm, hFχ⟩
13991 exact RatioOrbit.crossEq_trans (hFχ q)
13992 (PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved χ hadm q)
13993
13994theorem PRCPrimeSignedStrengthenedNativeCostUniquenessTarget_of_character_factorization
13995 (hfactor : PRCNativeCostCharacterFactorizationTarget) :
13996 PRCPrimeSignedStrengthenedNativeCostUniquenessTarget :=
13997 PRCPrimeSignedStrengthenedNativeCostUniquenessTarget_of_signed_admissible_factorization
13998 (PRCPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_of_character_factorization
13999 hfactor)
14000
14001theorem PRCAdmissibleCharacterGlobalOrientationTarget_of_prime_coherence_and_global_propagation
14002 (hcoh : PRCAdmissibleCharacterPrimeOrientationCoherentTarget)
14003 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14004 PRCAdmissibleCharacterGlobalOrientationTarget := by
14005 intro χ hadm
14006 exact hprop χ hadm.ratio_character (hcoh χ hadm)
14007
14008theorem PRCAdmissibleCharacterGlobalOrientationTarget_of_global_propagation
14009 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14010 PRCAdmissibleCharacterGlobalOrientationTarget :=
14011 PRCAdmissibleCharacterGlobalOrientationTarget_of_prime_coherence_and_global_propagation
14012 PRCAdmissibleCharacterPrimeOrientationCoherentTarget_proved hprop
14013
14014theorem PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_prime_coherence_and_global_propagation
14015 (hcoh : PRCAdmissibleCharacterPrimeOrientationCoherentTarget)
14016 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14017 PRCNativeCostAdmissibleCharacterRigidityTarget :=
14018 PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_global_orientation
14019 (PRCAdmissibleCharacterGlobalOrientationTarget_of_prime_coherence_and_global_propagation
14020 hcoh hprop)
14021
14022theorem PRCNativeCostAdmissibleCharacterRigidityTarget_of_global_propagation
14023 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14024 PRCNativeCostAdmissibleCharacterRigidityTarget :=
14025 PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_global_orientation
14026 (PRCAdmissibleCharacterGlobalOrientationTarget_of_global_propagation hprop)
14027
14028theorem PRCPrimeCalibrationForcesGlobalOrientationTarget_of_prime_orientation_targets
14029 (hcoherent : PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget)
14030 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14031 PRCPrimeCalibrationForcesGlobalOrientationTarget := by
14032 intro χ hχ hprime
14033 exact hprop χ hχ (hcoherent χ hχ hprime)
14034
14035theorem PRCPrimeCalibrationPropagationTarget_of_global_orientation
14036 (horient : PRCPrimeCalibrationForcesGlobalOrientationTarget) :
14037 PRCPrimeCalibrationPropagationTarget := by
14038 intro χ hχ hprime q
14039 rcases horient χ hχ hprime q with hsame | hinv
14040 · exact onRatioOrbit_congr hsame
14041 · exact RatioOrbit.crossEq_trans
14042 (onRatioOrbit_congr hinv)
14043 (RatioOrbit.crossEq_symm (reciprocal_symmetric q))
14044
14045/-- Pass-27 refinement of prime propagation. -/
14046def PRCPrimeCalibrationPropagationSharpenedTarget : Prop :=
14047 PRCPrimeFloorSuccessorTransportSharpenedTarget ∧
14048 PRCCoherentPrimeOrientationPropagatesToGlobalTarget
14049
14050theorem PRCPrimeCalibrationPropagationTarget_of_sharpened_orientation
14051 (hsharp : PRCPrimeCalibrationPropagationSharpenedTarget) :
14052 PRCPrimeCalibrationPropagationTarget :=
14053 PRCPrimeCalibrationPropagationTarget_of_global_orientation
14054 (PRCPrimeCalibrationForcesGlobalOrientationTarget_of_prime_orientation_targets
14055 (PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_local_and_nomixed
14056 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved
14057 (PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_trace_coherence
14058 (PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_trace_transport
14059 (PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_common_trace_extension
14060 (PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_comparable_trace
14061 (PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_prime_floor_successor_transport
14062 (PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_nomix
14063 hsharp.1)))))))
14064 hsharp.2)
14065
14066theorem PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_admissible_prime_coherence_and_global_propagation
14067 (hfactor : PRCNativeCostCharacterFactorizationTarget)
14068 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
14069 (hcoh : PRCAdmissibleCharacterPrimeOrientationCoherentTarget)
14070 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14071 PRCStrengthenedNativeCostUniquenessTarget :=
14072 PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_rigidity
14073 hfactor htwo
14074 (PRCNativeCostAdmissibleCharacterRigidityTarget_of_admissible_prime_coherence_and_global_propagation
14075 hcoh hprop)
14076
14077theorem PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_coherent_global_propagation
14078 (hfactor : PRCNativeCostCharacterFactorizationTarget)
14079 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
14080 (hprop : PRCCoherentPrimeOrientationPropagatesToGlobalTarget) :
14081 PRCStrengthenedNativeCostUniquenessTarget :=
14082 PRCStrengthenedNativeCostUniquenessTarget_of_character_factorization_two_calibration_and_admissible_rigidity
14083 hfactor htwo
14084 (PRCNativeCostAdmissibleCharacterRigidityTarget_of_global_propagation
14085 hprop)
14086
14087theorem PRCNativeCostCharacterRigidityTarget_of_prime_targets
14088 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
14089 (hprop : PRCPrimeCalibrationPropagationTarget) :
14090 PRCNativeCostCharacterRigidityTarget := by
14091 intro χ hχ htwoCal q
14092 exact hprop χ hχ (htwo χ hχ htwoCal) q
14093
14094theorem PRCNativeCostUniquenessTarget_of_prime_character_targets
14095 (hfactor : PRCNativeCostCharacterFactorizationTarget)
14096 (htwo : PRCTwoCalibrationForcesPrimeCalibrationTarget)
14097 (hprop : PRCPrimeCalibrationPropagationTarget) :
14098 PRCNativeCostUniquenessTarget := by
14099 intro F hF q
14100 rcases hfactor F hF with ⟨χ, hχ, hFχ⟩
14101 have hcal :
14102 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) :=
14103 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ two)) hF.two_calibrated
14104 have hrigid :=
14105 PRCNativeCostCharacterRigidityTarget_of_prime_targets htwo hprop
14106 exact RatioOrbit.crossEq_trans (hFχ q) (hrigid χ hχ hcal q)
14107
14108/-- The identity map is a ratio character. This sanity-check anchors the
14109character interface to the canonical cost. -/
14110theorem identity_ratio_character :
14111 PRCRatioCharacter (fun q : RatioOrbit => q) where
14112 unit := RatioOrbit.crossEq_refl RatioOrbit.one
14113 multiplicative := by
14114 intro x y
14115 exact RatioOrbit.crossEq_refl (RatioOrbit.mul x y)
14116 reciprocal := by
14117 intro x
14118 exact RatioOrbit.crossEq_refl (RatioOrbit.recip x)
14119 normalized_invariant := by
14120 intro q
14121 exact DistinctionNat.normalizeRatio_crossEq q
14122 nonzero_preserving := by
14123 intro q hq
14124 exact hq
14125
14126theorem identity_character_rigid :
14127 ∀ q : RatioOrbit,
14128 RatioOrbit.crossEq
14129 (costFromCharacter (fun q : RatioOrbit => q) q)
14130 (onRatioOrbit q) := by
14131 intro q
14132 exact RatioOrbit.crossEq_refl (onRatioOrbit q)
14133
14134theorem identity_character_prime_calibrated :
14135 PRCCharacterPrimeDirectionCalibrated (fun q : RatioOrbit => q) := by
14136 intro p hp
14137 exact identity_character_rigid (primeDirection p hp)
14138
14139theorem identity_character_prime_pair_product_cost_consistent :
14140 PRCCharacterPrimePairProductCostConsistent
14141 (fun q : RatioOrbit => q) := by
14142 intro p hp r hr
14143 exact identity_character_rigid
14144 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr))
14145
14146theorem identity_admissible_ratio_character :
14147 PRCAdmissibleRatioCharacter (fun q : RatioOrbit => q) where
14148 ratio_character := identity_ratio_character
14149 prime_calibrated := identity_character_prime_calibrated
14150 prime_pair_product_cost :=
14151 identity_character_prime_pair_product_cost_consistent
14152
14153theorem identity_character_global_orientation :
14154 PRCCharacterGlobalCostOrientation (fun q : RatioOrbit => q) := by
14155 intro q
14156 exact Or.inl (RatioOrbit.crossEq_refl q)
14157
14158theorem identity_character_prime_orientation_coherent :
14159 PRCCharacterPrimeOrientationCoherent (fun q : RatioOrbit => q) := by
14160 exact Or.inl (by
14161 intro p hp
14162 exact RatioOrbit.crossEq_refl (primeDirection p hp))
14163
14164/-- The global reciprocal map is also a ratio character. This is the first
14165explicit witness that the multiplicative character laws alone do not choose the
14166identity orientation. -/
14167theorem reciprocal_ratio_character :
14168 PRCRatioCharacter (fun q : RatioOrbit => RatioOrbit.recip q) where
14169 unit := by
14170 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
14171 RatioOrbit.one_toRat]
14172 norm_num
14173 multiplicative := by
14174 intro x y
14175 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
14176 RatioOrbit.mul_toRat, RatioOrbit.mul_toRat, RatioOrbit.recip_toRat,
14177 RatioOrbit.recip_toRat]
14178 by_cases hx : x.toRat = 0
14179 · simp [hx]
14180 · by_cases hy : y.toRat = 0
14181 · simp [hy]
14182 · field_simp [hx, hy]
14183 reciprocal := by
14184 intro x
14185 exact RatioOrbit.crossEq_refl (RatioOrbit.recip (RatioOrbit.recip x))
14186 normalized_invariant := by
14187 intro q
14188 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
14189 RatioOrbit.recip_toRat]
14190 have hnorm :
14191 q.toRat = (DistinctionNat.normalizeRatio q).toRat :=
14192 (RatioOrbit.crossEq_iff_toRat_eq q (DistinctionNat.normalizeRatio q)).mp
14193 (DistinctionNat.normalizeRatio_crossEq q)
14194 exact congrArg Inv.inv hnorm
14195 nonzero_preserving := by
14196 intro q hq
14197 rw [RatioOrbit.recip_toRat]
14198 exact inv_ne_zero hq
14199
14200theorem reciprocal_character_prime_calibrated :
14201 PRCCharacterPrimeDirectionCalibrated
14202 (fun q : RatioOrbit => RatioOrbit.recip q) := by
14203 intro p hp
14204 simpa [costFromCharacter] using
14205 RatioOrbit.crossEq_symm (reciprocal_symmetric (primeDirection p hp))
14206
14207theorem reciprocal_character_prime_pair_product_cost_consistent :
14208 PRCCharacterPrimePairProductCostConsistent
14209 (fun q : RatioOrbit => RatioOrbit.recip q) := by
14210 intro p hp r hr
14211 simpa [costFromCharacter] using
14212 RatioOrbit.crossEq_symm
14213 (reciprocal_symmetric
14214 (RatioOrbit.mul (primeDirection p hp) (primeDirection r hr)))
14215
14216theorem reciprocal_admissible_ratio_character :
14217 PRCAdmissibleRatioCharacter
14218 (fun q : RatioOrbit => RatioOrbit.recip q) where
14219 ratio_character := reciprocal_ratio_character
14220 prime_calibrated := reciprocal_character_prime_calibrated
14221 prime_pair_product_cost :=
14222 reciprocal_character_prime_pair_product_cost_consistent
14223
14224theorem reciprocal_character_global_orientation :
14225 PRCCharacterGlobalCostOrientation
14226 (fun q : RatioOrbit => RatioOrbit.recip q) := by
14227 intro q
14228 exact Or.inr (RatioOrbit.crossEq_refl (RatioOrbit.recip q))
14229
14230theorem reciprocal_character_prime_orientation_coherent :
14231 PRCCharacterPrimeOrientationCoherent
14232 (fun q : RatioOrbit => RatioOrbit.recip q) := by
14233 exact Or.inr (by
14234 intro p hp
14235 exact RatioOrbit.crossEq_refl (RatioOrbit.recip (primeDirection p hp)))
14236
14237theorem reciprocal_character_not_successor_additive_compatible :
14238 ¬ PRCCharacterOrbitSuccessorAdditiveCompatible
14239 (fun q : RatioOrbit => RatioOrbit.recip q) := by
14240 intro hcompat
14241 have hstep := hcompat DistinctionNat.one DistinctionNat.one_ne_zero
14242 rw [RatioOrbit.crossEq_iff_toRat_eq, RatioOrbit.recip_toRat,
14243 RatioOrbit.add_toRat, RatioOrbit.recip_toRat, RatioOrbit.one_toRat,
14244 orbitDirection_toRat, orbitDirection_toRat, DistinctionNat.toNat_succ,
14245 DistinctionNat.one_toNat] at hstep
14246 norm_num at hstep
14247
14248theorem PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget_refuted :
14249 ¬ PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget := by
14250 intro htarget
14251 exact reciprocal_character_not_successor_additive_compatible
14252 (htarget (fun q : RatioOrbit => RatioOrbit.recip q)
14253 reciprocal_ratio_character reciprocal_character_prime_calibrated)
14254
14255/-- The sharpened replacement for the opaque native uniqueness blocker. -/
14256def PRCNativeCostUniquenessSharpenedTarget : Prop :=
14257 PRCNativeCostCharacterFactorizationTarget ∧
14258 PRCNativeCostCharacterRigidityTarget
14259
14260theorem PRCNativeCostUniquenessSharpenedTarget_refuted :
14261 ¬ PRCNativeCostUniquenessSharpenedTarget := by
14262 intro htarget
14263 exact PRCNativeCostCharacterFactorizationTarget_refuted htarget.1
14264
14265/-- Pass-26 refinement of the rigidity target. -/
14266def PRCNativeCostCharacterRigiditySharpenedTarget : Prop :=
14267 PRCTwoCalibrationForcesPrimeCalibrationTarget ∧
14268 PRCPrimeCalibrationPropagationTarget
14269
14270theorem PRCPrimeCalibrationPropagationTarget_refuted :
14271 ¬ PRCPrimeCalibrationPropagationTarget := by
14272 intro htarget
14273 exact PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_refuted
14274 (PRCPrimeCalibrationForcesPrimePairProductCostConsistencyTarget_of_prime_calibration_propagation
14275 htarget)
14276
14277theorem PRCPrimeCalibrationForcesGlobalOrientationTarget_refuted :
14278 ¬ PRCPrimeCalibrationForcesGlobalOrientationTarget := by
14279 intro htarget
14280 exact PRCPrimeCalibrationPropagationTarget_refuted
14281 (PRCPrimeCalibrationPropagationTarget_of_global_orientation htarget)
14282
14283theorem PRCPrimeCalibrationPropagationSharpenedTarget_refuted :
14284 ¬ PRCPrimeCalibrationPropagationSharpenedTarget := by
14285 intro htarget
14286 exact PRCPrimeCalibrationPropagationTarget_refuted
14287 (PRCPrimeCalibrationPropagationTarget_of_sharpened_orientation htarget)
14288
14289theorem PRCNativeCostCharacterRigiditySharpenedTarget_refuted :
14290 ¬ PRCNativeCostCharacterRigiditySharpenedTarget := by
14291 intro htarget
14292 exact PRCTwoCalibrationForcesPrimeCalibrationTarget_refuted htarget.1
14293
14294theorem PRCNativeCostUniquenessTarget_of_character_targets
14295 (hfactor : PRCNativeCostCharacterFactorizationTarget)
14296 (hrigid : PRCNativeCostCharacterRigidityTarget) :
14297 PRCNativeCostUniquenessTarget := by
14298 intro F hF q
14299 rcases hfactor F hF with ⟨χ, hχ, hFχ⟩
14300 have hcal :
14301 RatioOrbit.crossEq (costFromCharacter χ two) (onRatioOrbit two) :=
14302 RatioOrbit.crossEq_trans (RatioOrbit.crossEq_symm (hFχ two)) hF.two_calibrated
14303 exact RatioOrbit.crossEq_trans (hFχ q) (hrigid χ hχ hcal q)
14304
14305/-- Pass-25 certificate: native cost uniqueness is not closed, but the missing
14306mathematics is now split into exact Lean targets. -/
14307structure PRCNativeCostUniquenessBlockerCertificate : Prop where
14308 zero_calibrated_factorization_target :
14309 PRCZeroCalibratedNativeCostCharacterFactorizationTarget
14310 zero_calibrated_signed_admissible_factorization_refuted :
14311 ¬ PRCZeroCalibratedNativeCostSignedAdmissibleCharacterFactorizationTarget
14312 zero_calibration_signed_unit_target_refuted :
14313 ¬ PRCZeroCalibrationForcesNativeCostSignedUnitCalibrationTarget
14314 zero_calibrated_prime_signed_strengthened_factorization :
14315 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget
14316 zero_calibrated_prime_signed_strengthened_uniqueness :
14317 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostUniquenessTarget
14318 old_factorization_refuted :
14319 ¬ PRCNativeCostCharacterFactorizationTarget
14320 zero_calibrated_uniqueness_target :
14321 ¬ PRCZeroCalibratedNativeCostUniquenessTarget
14322 signed_admissible_rigidity_target :
14323 PRCNativeCostSignedAdmissibleCharacterRigidityTarget
14324 old_rigidity_refuted :
14325 ¬ PRCNativeCostCharacterRigidityTarget
14326 two_to_prime_target_refuted :
14327 ¬ PRCTwoCalibrationForcesPrimeCalibrationTarget
14328 prime_propagation_target_refuted :
14329 ¬ PRCPrimeCalibrationPropagationTarget
14330 global_orientation_target_refuted :
14331 ¬ PRCPrimeCalibrationForcesGlobalOrientationTarget
14332 coherent_prime_orientation :
14333 PRCCharacterPrimeOrientationCoherent =
14334 PRCCharacterPrimeOrientationCoherent
14335 two_orbit_prime :
14336 DistinctionNat.primeOrbit twoOrbit
14337 two_prime_direction :
14338 twoPrimeDirection = twoPrimeDirection
14339 two_prime_branch_controls_primes :
14340 PRCCharacterTwoPrimeBranchControlsPrimes =
14341 PRCCharacterTwoPrimeBranchControlsPrimes
14342 prime_identity_iff_two_prime_identity :
14343 PRCCharacterPrimeIdentityIffTwoPrimeIdentity =
14344 PRCCharacterPrimeIdentityIffTwoPrimeIdentity
14345 prime_identity_forces_two_prime_identity :
14346 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity =
14347 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity
14348 two_prime_reciprocal_excludes_prime_identity :
14349 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity =
14350 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity
14351 two_prime_reciprocal_forces_prime_reciprocal :
14352 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal =
14353 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal
14354 two_prime_reciprocal_trace_connected :
14355 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected =
14356 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected
14357 two_prime_identity_trace_connected :
14358 PRCCharacterTwoPrimeIdentityRespectsTraceConnected =
14359 PRCCharacterTwoPrimeIdentityRespectsTraceConnected
14360 reciprocal_twist_character :
14361 ∀ χ : RatioOrbit → RatioOrbit,
14362 PRCRatioCharacter χ →
14363 PRCRatioCharacter (PRCCharacterReciprocalTwist χ)
14364 reciprocal_twist_prime_calibrated :
14365 ∀ χ : RatioOrbit → RatioOrbit,
14366 PRCCharacterPrimeDirectionCalibrated χ →
14367 PRCCharacterPrimeDirectionCalibrated (PRCCharacterReciprocalTwist χ)
14368 reciprocal_twist_prime_identity_iff_reciprocal :
14369 ∀ χ : RatioOrbit → RatioOrbit,
14370 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
14371 RatioOrbit.crossEq
14372 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
14373 (primeDirection p hp) ↔
14374 RatioOrbit.crossEq (χ (primeDirection p hp))
14375 (RatioOrbit.recip (primeDirection p hp))
14376 reciprocal_twist_two_identity_iff_reciprocal :
14377 ∀ χ : RatioOrbit → RatioOrbit,
14378 RatioOrbit.crossEq
14379 (PRCCharacterReciprocalTwist χ twoPrimeDirection)
14380 twoPrimeDirection ↔
14381 RatioOrbit.crossEq (χ twoPrimeDirection)
14382 (RatioOrbit.recip twoPrimeDirection)
14383 reciprocal_twist_prime_reciprocal_iff_identity :
14384 ∀ χ : RatioOrbit → RatioOrbit,
14385 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
14386 RatioOrbit.crossEq
14387 (PRCCharacterReciprocalTwist χ (primeDirection p hp))
14388 (RatioOrbit.recip (primeDirection p hp)) ↔
14389 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)
14390 reciprocal_twist_two_reciprocal_iff_identity :
14391 ∀ χ : RatioOrbit → RatioOrbit,
14392 RatioOrbit.crossEq
14393 (PRCCharacterReciprocalTwist χ twoPrimeDirection)
14394 (RatioOrbit.recip twoPrimeDirection) ↔
14395 RatioOrbit.crossEq (χ twoPrimeDirection) twoPrimeDirection
14396 two_prime_branch_controls_from_coherent :
14397 ∀ χ : RatioOrbit → RatioOrbit,
14398 PRCCharacterPrimeOrientationCoherent χ →
14399 PRCCharacterTwoPrimeBranchControlsPrimes χ
14400 coherent_from_local_two_prime_branch_controls :
14401 ∀ χ : RatioOrbit → RatioOrbit,
14402 PRCCharacterPrimeLocalOrientation χ →
14403 PRCCharacterTwoPrimeBranchControlsPrimes χ →
14404 PRCCharacterPrimeOrientationCoherent χ
14405 prime_identity_iff_two_from_local_two_prime_branch_controls :
14406 ∀ χ : RatioOrbit → RatioOrbit,
14407 PRCCharacterPrimeLocalOrientation χ →
14408 PRCCharacterTwoPrimeBranchControlsPrimes χ →
14409 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ
14410 two_prime_branch_controls_from_local_prime_identity_iff_two :
14411 ∀ χ : RatioOrbit → RatioOrbit,
14412 PRCCharacterPrimeLocalOrientation χ →
14413 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ →
14414 PRCCharacterTwoPrimeBranchControlsPrimes χ
14415 prime_identity_forces_two_from_identity_iff_two :
14416 ∀ χ : RatioOrbit → RatioOrbit,
14417 PRCCharacterPrimeIdentityIffTwoPrimeIdentity χ →
14418 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ
14419 two_prime_reciprocal_excludes_from_identity_forces_two :
14420 ∀ χ : RatioOrbit → RatioOrbit,
14421 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ →
14422 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ
14423 prime_identity_forces_two_from_local_two_prime_reciprocal_excludes :
14424 ∀ χ : RatioOrbit → RatioOrbit,
14425 PRCCharacterPrimeLocalOrientation χ →
14426 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ →
14427 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ
14428 prime_identity_forces_two_iff_two_prime_reciprocal_excludes :
14429 ∀ χ : RatioOrbit → RatioOrbit,
14430 PRCCharacterPrimeLocalOrientation χ →
14431 (PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ ↔
14432 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ)
14433 two_prime_reciprocal_excludes_from_two_prime_reciprocal_forces :
14434 ∀ χ : RatioOrbit → RatioOrbit,
14435 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ →
14436 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ
14437 two_prime_reciprocal_forces_from_local_excludes_prime_identity :
14438 ∀ χ : RatioOrbit → RatioOrbit,
14439 PRCCharacterPrimeLocalOrientation χ →
14440 PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ →
14441 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ
14442 two_prime_reciprocal_excludes_iff_two_prime_reciprocal_forces :
14443 ∀ χ : RatioOrbit → RatioOrbit,
14444 PRCCharacterPrimeLocalOrientation χ →
14445 (PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity χ ↔
14446 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ)
14447 two_prime_reciprocal_forces_from_trace_connected :
14448 ∀ χ : RatioOrbit → RatioOrbit,
14449 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ →
14450 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ
14451 two_prime_reciprocal_trace_connected_from_forces :
14452 ∀ χ : RatioOrbit → RatioOrbit,
14453 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ →
14454 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ
14455 two_prime_reciprocal_trace_connected_iff_forces :
14456 ∀ χ : RatioOrbit → RatioOrbit,
14457 (PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ ↔
14458 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ)
14459 two_prime_reciprocal_trace_connected_from_twist_identity :
14460 ∀ χ : RatioOrbit → RatioOrbit,
14461 PRCCharacterTwoPrimeIdentityRespectsTraceConnected
14462 (PRCCharacterReciprocalTwist χ) →
14463 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected χ
14464 two_prime_identity_trace_connected_from_twist_reciprocal :
14465 ∀ χ : RatioOrbit → RatioOrbit,
14466 PRCCharacterTwoPrimeReciprocalRespectsTraceConnected
14467 (PRCCharacterReciprocalTwist χ) →
14468 PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ
14469 two_prime_identity_trace_connected_from_prime_identity_trace_connected :
14470 ∀ χ : RatioOrbit → RatioOrbit,
14471 PRCCharacterPrimeIdentityRespectsTraceConnected χ →
14472 PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ
14473 prime_identity_trace_connected_from_two_prime_identity_and_forces_two :
14474 ∀ χ : RatioOrbit → RatioOrbit,
14475 PRCCharacterTwoPrimeIdentityRespectsTraceConnected χ →
14476 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ →
14477 PRCCharacterPrimeIdentityRespectsTraceConnected χ
14478 local_prime_orientation :
14479 PRCCharacterPrimeLocalOrientation =
14480 PRCCharacterPrimeLocalOrientation
14481 no_mixed_prime_orientation :
14482 PRCCharacterNoMixedPrimeOrientation =
14483 PRCCharacterNoMixedPrimeOrientation
14484 no_mixed_prime_witnesses :
14485 PRCCharacterNoMixedPrimeWitnesses =
14486 PRCCharacterNoMixedPrimeWitnesses
14487 prime_identity_witness_excludes_reciprocal :
14488 PRCCharacterPrimeIdentityWitnessExcludesReciprocal =
14489 PRCCharacterPrimeIdentityWitnessExcludesReciprocal
14490 prime_reciprocal_witness_globalizes :
14491 PRCCharacterPrimeReciprocalWitnessGlobalizes =
14492 PRCCharacterPrimeReciprocalWitnessGlobalizes
14493 prime_reciprocal_forces_two_prime_reciprocal :
14494 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal =
14495 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal
14496 prime_reciprocal_witness_globalizes_split :
14497 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit =
14498 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit
14499 prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_orientation :
14500 ∀ χ : RatioOrbit → RatioOrbit,
14501 PRCCharacterNoMixedPrimeOrientation χ →
14502 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ
14503 no_mixed_prime_orientation_from_identity_witness_excludes_reciprocal :
14504 ∀ χ : RatioOrbit → RatioOrbit,
14505 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ →
14506 PRCCharacterNoMixedPrimeOrientation χ
14507 prime_identity_witness_excludes_reciprocal_iff_no_mixed_prime_orientation :
14508 ∀ χ : RatioOrbit → RatioOrbit,
14509 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ ↔
14510 PRCCharacterNoMixedPrimeOrientation χ
14511 no_mixed_prime_witnesses_from_identity_witness_excludes_reciprocal :
14512 ∀ χ : RatioOrbit → RatioOrbit,
14513 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ →
14514 PRCCharacterNoMixedPrimeWitnesses χ
14515 prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_witnesses :
14516 ∀ χ : RatioOrbit → RatioOrbit,
14517 PRCCharacterNoMixedPrimeWitnesses χ →
14518 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ
14519 no_mixed_prime_witnesses_iff_identity_witness_excludes_reciprocal :
14520 ∀ χ : RatioOrbit → RatioOrbit,
14521 PRCCharacterNoMixedPrimeWitnesses χ ↔
14522 PRCCharacterPrimeIdentityWitnessExcludesReciprocal χ
14523 prime_reciprocal_witness_globalizes_from_local_no_mixed_prime_orientation :
14524 ∀ χ : RatioOrbit → RatioOrbit,
14525 PRCCharacterPrimeLocalOrientation χ →
14526 PRCCharacterNoMixedPrimeOrientation χ →
14527 PRCCharacterPrimeReciprocalWitnessGlobalizes χ
14528 no_mixed_prime_orientation_from_prime_reciprocal_witness_globalizes :
14529 ∀ χ : RatioOrbit → RatioOrbit,
14530 PRCCharacterPrimeReciprocalWitnessGlobalizes χ →
14531 PRCCharacterNoMixedPrimeOrientation χ
14532 prime_reciprocal_forces_two_from_reciprocal_witness_globalizes :
14533 ∀ χ : RatioOrbit → RatioOrbit,
14534 PRCCharacterPrimeReciprocalWitnessGlobalizes χ →
14535 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal χ
14536 two_prime_reciprocal_forces_from_reciprocal_witness_globalizes :
14537 ∀ χ : RatioOrbit → RatioOrbit,
14538 PRCCharacterPrimeReciprocalWitnessGlobalizes χ →
14539 PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal χ
14540 prime_reciprocal_witness_globalizes_split_from_reciprocal_witness_globalizes :
14541 ∀ χ : RatioOrbit → RatioOrbit,
14542 PRCCharacterPrimeReciprocalWitnessGlobalizes χ →
14543 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit χ
14544 prime_reciprocal_witness_globalizes_from_split :
14545 ∀ χ : RatioOrbit → RatioOrbit,
14546 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit χ →
14547 PRCCharacterPrimeReciprocalWitnessGlobalizes χ
14548 prime_reciprocal_witness_globalizes_iff_split :
14549 ∀ χ : RatioOrbit → RatioOrbit,
14550 PRCCharacterPrimeReciprocalWitnessGlobalizes χ ↔
14551 PRCCharacterPrimeReciprocalWitnessGlobalizesSplit χ
14552 prime_reciprocal_forces_two_from_reciprocal_twist_identity_forces_two :
14553 ∀ χ : RatioOrbit → RatioOrbit,
14554 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity
14555 (PRCCharacterReciprocalTwist χ) →
14556 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal χ
14557 prime_identity_forces_two_from_reciprocal_twist_reciprocal_forces_two :
14558 ∀ χ : RatioOrbit → RatioOrbit,
14559 PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal
14560 (PRCCharacterReciprocalTwist χ) →
14561 PRCCharacterPrimeIdentityForcesTwoPrimeIdentity χ
14562 character_no_mixed_prime_witnesses_from_coherent_prime_orientation :
14563 ∀ χ : RatioOrbit → RatioOrbit,
14564 PRCCharacterPrimeOrientationCoherent χ →
14565 PRCCharacterNoMixedPrimeWitnesses χ
14566 mixed_nonunit_witnesses_reflect_prime_witnesses :
14567 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses =
14568 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnesses
14569 mixed_nonunit_identity_witness_reflects_prime_witness :
14570 PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness =
14571 PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness
14572 mixed_nonunit_reciprocal_witness_reflects_prime_witness :
14573 PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness =
14574 PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness
14575 mixed_nonunit_witnesses_reflect_prime_witnesses_split :
14576 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit =
14577 PRCCharacterMixedNonunitWitnessesReflectPrimeWitnessesSplit
14578 prime_identity_trace_coherence :
14579 PRCCharacterPrimeIdentityTraceCoherent =
14580 PRCCharacterPrimeIdentityTraceCoherent
14581 prime_identity_branch_uniform :
14582 PRCCharacterPrimeIdentityBranchUniform =
14583 PRCCharacterPrimeIdentityBranchUniform
14584 prime_axis_trace_connected :
14585 PRCPrimeAxisTraceConnected =
14586 PRCPrimeAxisTraceConnected
14587 prime_axis_trace_connected_proved :
14588 ∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
14589 ∀ r : DistinctionNat, ∀ hr : DistinctionNat.primeOrbit r,
14590 PRCPrimeAxisTraceConnected p hp r hr
14591 orbit_trace_extends_of_toNat_le :
14592 ∀ p r : DistinctionNat,
14593 p.toNat ≤ r.toNat →
14594 Trace.Extends (orbitPositionTrace p) (orbitPositionTrace r)
14595 orbit_trace_comparable :
14596 ∀ p r : DistinctionNat,
14597 Trace.Extends (orbitPositionTrace p) (orbitPositionTrace r) ∨
14598 Trace.Extends (orbitPositionTrace r) (orbitPositionTrace p)
14599 orbit_direction_toRat :
14600 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
14601 (orbitDirection p hp).toRat = (p.toNat : ℚ)
14602 orbit_direction_nonunit_not_crossEq_recip :
14603 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
14604 ¬ DistinctionNat.unit p →
14605 ¬ RatioOrbit.crossEq
14606 (orbitDirection p hp)
14607 (RatioOrbit.recip (orbitDirection p hp))
14608 orbit_direction_succ_add_one :
14609 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
14610 RatioOrbit.crossEq
14611 (orbitDirection (DistinctionNat.succ p) (orbit_succ_ne_zero p))
14612 (RatioOrbit.add (orbitDirection p hp) RatioOrbit.one)
14613 ratio_add_right_one_cancel :
14614 ∀ a b : RatioOrbit,
14615 RatioOrbit.crossEq
14616 (RatioOrbit.add a RatioOrbit.one)
14617 (RatioOrbit.add b RatioOrbit.one) →
14618 RatioOrbit.crossEq a b
14619 prime_identity_respects_trace_connected :
14620 PRCCharacterPrimeIdentityRespectsTraceConnected =
14621 PRCCharacterPrimeIdentityRespectsTraceConnected
14622 prime_identity_respects_common_trace_extension :
14623 PRCCharacterPrimeIdentityRespectsCommonTraceExtension =
14624 PRCCharacterPrimeIdentityRespectsCommonTraceExtension
14625 prime_identity_respects_canonical_add_trace :
14626 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace =
14627 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace
14628 prime_identity_respects_comparable_trace :
14629 PRCCharacterPrimeIdentityRespectsComparableTrace =
14630 PRCCharacterPrimeIdentityRespectsComparableTrace
14631 orbit_direction_identity :
14632 PRCCharacterOrbitDirectionIdentity =
14633 PRCCharacterOrbitDirectionIdentity
14634 orbit_direction_reciprocal :
14635 PRCCharacterOrbitDirectionReciprocal =
14636 PRCCharacterOrbitDirectionReciprocal
14637 prime_identity_witness_globalizes_nonunit :
14638 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit =
14639 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit
14640 prime_no_mixed_from_branch_uniform :
14641 ∀ χ : RatioOrbit → RatioOrbit,
14642 PRCCharacterPrimeIdentityBranchUniform χ →
14643 PRCCharacterNoMixedPrimeOrientation χ
14644 prime_identity_branch_uniform_from_local_no_mixed :
14645 ∀ χ : RatioOrbit → RatioOrbit,
14646 PRCCharacterPrimeLocalOrientation χ →
14647 PRCCharacterNoMixedPrimeOrientation χ →
14648 PRCCharacterPrimeIdentityBranchUniform χ
14649 orbit_succ_not_unit :
14650 ∀ p : DistinctionNat, p ≠ DistinctionNat.zero →
14651 ¬ DistinctionNat.unit p →
14652 ¬ DistinctionNat.unit (DistinctionNat.succ p)
14653 orbit_identity_respects_successor_step :
14654 PRCCharacterOrbitIdentityRespectsSuccessorStep =
14655 PRCCharacterOrbitIdentityRespectsSuccessorStep
14656 orbit_identity_extends_successor_step :
14657 PRCCharacterOrbitIdentityExtendsSuccessorStep =
14658 PRCCharacterOrbitIdentityExtendsSuccessorStep
14659 orbit_identity_contracts_successor_step :
14660 PRCCharacterOrbitIdentityContractsSuccessorStep =
14661 PRCCharacterOrbitIdentityContractsSuccessorStep
14662 orbit_identity_successor_transport :
14663 PRCCharacterOrbitIdentitySuccessorTransport =
14664 PRCCharacterOrbitIdentitySuccessorTransport
14665 orbit_successor_additive_compat :
14666 PRCCharacterOrbitSuccessorAdditiveCompatible =
14667 PRCCharacterOrbitSuccessorAdditiveCompatible
14668 nonunit_orbit_local_orientation :
14669 PRCCharacterNonunitOrbitLocalOrientation =
14670 PRCCharacterNonunitOrbitLocalOrientation
14671 orbit_product_local_orientation :
14672 PRCCharacterOrbitProductLocalOrientationPropagates =
14673 PRCCharacterOrbitProductLocalOrientationPropagates
14674 ratio_mul_congr :
14675 ∀ a₁ a₂ b₁ b₂ : RatioOrbit,
14676 RatioOrbit.crossEq a₁ a₂ →
14677 RatioOrbit.crossEq b₁ b₂ →
14678 RatioOrbit.crossEq (RatioOrbit.mul a₁ b₁) (RatioOrbit.mul a₂ b₂)
14679 ratio_recip_congr :
14680 ∀ a b : RatioOrbit,
14681 RatioOrbit.crossEq a b →
14682 RatioOrbit.crossEq (RatioOrbit.recip a) (RatioOrbit.recip b)
14683 ratio_mul_recip_recip :
14684 ∀ a b : RatioOrbit,
14685 RatioOrbit.crossEq
14686 (RatioOrbit.mul (RatioOrbit.recip a) (RatioOrbit.recip b))
14687 (RatioOrbit.recip (RatioOrbit.mul a b))
14688 orbit_direction_mul :
14689 ∀ a b p : DistinctionNat,
14690 ∀ ha : a ≠ DistinctionNat.zero, ∀ hb : b ≠ DistinctionNat.zero,
14691 ∀ hp : p ≠ DistinctionNat.zero,
14692 a * b = p →
14693 RatioOrbit.crossEq (orbitDirection p hp)
14694 (RatioOrbit.mul (orbitDirection a ha) (orbitDirection b hb))
14695 orbit_product_display_compatible :
14696 PRCCharacterOrbitProductDisplayCompatible =
14697 PRCCharacterOrbitProductDisplayCompatible
14698 orbit_character_respects_crossEq :
14699 PRCCharacterRespectsCrossEq =
14700 PRCCharacterRespectsCrossEq
14701 normalizeRatio_canonical_target :
14702 PRCNormalizeRatioCanonicalTarget
14703 signed_orbit_sign_canonical :
14704 PRCSignedOrbitSignCanonical =
14705 PRCSignedOrbitSignCanonical
14706 ratio_reduced_sign_canonical :
14707 PRCRatioReducedSignCanonical =
14708 PRCRatioReducedSignCanonical
14709 signed_ofOrbit_abs_self :
14710 ∀ n : DistinctionNat, (SignedOrbit.ofOrbit n).abs = n
14711 signed_neg_ofOrbit_abs_self :
14712 ∀ n : DistinctionNat,
14713 (SignedOrbit.negate (SignedOrbit.ofOrbit n)).abs = n
14714 signedQuotient_signCanonical :
14715 ∀ z : SignedOrbit, ∀ d : DistinctionNat,
14716 ∀ hd : d ≠ DistinctionNat.zero,
14717 DistinctionNat.divides d z.abs →
14718 PRCSignedOrbitSignCanonical (DistinctionNat.signedQuotient z d hd)
14719 normalizeRatio_reduced_signCanonical :
14720 ∀ q : RatioOrbit,
14721 PRCRatioReducedSignCanonical (DistinctionNat.normalizeRatio q)
14722 signCanonical_toInt_injective :
14723 ∀ z w : SignedOrbit,
14724 PRCSignedOrbitSignCanonical z →
14725 PRCSignedOrbitSignCanonical w →
14726 z.toInt = w.toInt →
14727 z = w
14728 reduced_den_dvd :
14729 ∀ q r : RatioOrbit,
14730 PRCRatioReducedSignCanonical q →
14731 PRCRatioReducedSignCanonical r →
14732 RatioOrbit.crossEq q r →
14733 q.den.toNat ∣ r.den.toNat
14734 reduced_den_eq :
14735 ∀ q r : RatioOrbit,
14736 PRCRatioReducedSignCanonical q →
14737 PRCRatioReducedSignCanonical r →
14738 RatioOrbit.crossEq q r →
14739 q.den = r.den
14740 reduced_num_eq :
14741 ∀ q r : RatioOrbit,
14742 PRCRatioReducedSignCanonical q →
14743 PRCRatioReducedSignCanonical r →
14744 RatioOrbit.crossEq q r →
14745 q.num = r.num
14746 reduced_signCanonical_ratio_unique_target :
14747 PRCReducedSignCanonicalRatioUniqueTarget
14748 reduced_signCanonical_ratio_unique_proved :
14749 PRCReducedSignCanonicalRatioUniqueTarget
14750 normalizeRatio_canonical_from_reduced_signCanonical_unique :
14751 PRCReducedSignCanonicalRatioUniqueTarget →
14752 PRCNormalizeRatioCanonicalTarget
14753 normalizeRatio_canonical_proved :
14754 PRCNormalizeRatioCanonicalTarget
14755 orbit_character_crossEq_from_normalizeRatio_canonical :
14756 ∀ χ : RatioOrbit → RatioOrbit,
14757 PRCRatioCharacter χ →
14758 PRCNormalizeRatioCanonicalTarget →
14759 PRCCharacterRespectsCrossEq χ
14760 orbit_product_display_from_crossEq :
14761 ∀ χ : RatioOrbit → RatioOrbit,
14762 PRCCharacterRespectsCrossEq χ →
14763 PRCCharacterOrbitProductDisplayCompatible χ
14764 orbit_product_no_mixed_orientation :
14765 PRCCharacterOrbitProductNoMixedOrientation =
14766 PRCCharacterOrbitProductNoMixedOrientation
14767 nonunit_orbit_orientation_coherent :
14768 PRCCharacterNonunitOrbitOrientationCoherent =
14769 PRCCharacterNonunitOrbitOrientationCoherent
14770 no_mixed_nonunit_orbit_orientation :
14771 PRCCharacterNoMixedNonunitOrbitOrientation =
14772 PRCCharacterNoMixedNonunitOrbitOrientation
14773 nonunit_identity_branch_transport :
14774 PRCCharacterNonunitIdentityBranchTransport =
14775 PRCCharacterNonunitIdentityBranchTransport
14776 nonunit_identity_witness_globalizes :
14777 PRCCharacterNonunitIdentityWitnessGlobalizes =
14778 PRCCharacterNonunitIdentityWitnessGlobalizes
14779 nonunit_reciprocal_branch_transport :
14780 PRCCharacterNonunitReciprocalBranchTransport =
14781 PRCCharacterNonunitReciprocalBranchTransport
14782 nonunit_branch_transport_pair :
14783 PRCCharacterNonunitBranchTransportPair =
14784 PRCCharacterNonunitBranchTransportPair
14785 nonunit_identity_respects_comparable_trace :
14786 PRCCharacterNonunitIdentityRespectsComparableTrace =
14787 PRCCharacterNonunitIdentityRespectsComparableTrace
14788 nonunit_branch_agreement :
14789 PRCCharacterNonunitBranchAgreement =
14790 PRCCharacterNonunitBranchAgreement
14791 nonunit_local_from_coherent :
14792 ∀ χ : RatioOrbit → RatioOrbit,
14793 PRCCharacterNonunitOrbitOrientationCoherent χ →
14794 PRCCharacterNonunitOrbitLocalOrientation χ
14795 no_mixed_nonunit_from_coherent :
14796 ∀ χ : RatioOrbit → RatioOrbit,
14797 PRCCharacterNonunitOrbitOrientationCoherent χ →
14798 PRCCharacterNoMixedNonunitOrbitOrientation χ
14799 orbit_mul_not_unit_left :
14800 ∀ p r : DistinctionNat,
14801 ¬ DistinctionNat.unit p →
14802 ¬ DistinctionNat.unit (p * r)
14803 no_mixed_nonunit_from_product_no_mixed :
14804 ∀ χ : RatioOrbit → RatioOrbit,
14805 PRCCharacterOrbitProductNoMixedOrientation χ →
14806 PRCCharacterNoMixedNonunitOrbitOrientation χ
14807 orbit_product_no_mixed_from_no_mixed_nonunit :
14808 ∀ χ : RatioOrbit → RatioOrbit,
14809 PRCCharacterNoMixedNonunitOrbitOrientation χ →
14810 PRCCharacterOrbitProductNoMixedOrientation χ
14811 orbit_product_no_mixed_iff_no_mixed_nonunit :
14812 ∀ χ : RatioOrbit → RatioOrbit,
14813 PRCCharacterOrbitProductNoMixedOrientation χ ↔
14814 PRCCharacterNoMixedNonunitOrbitOrientation χ
14815 no_mixed_nonunit_from_identity_branch_transport :
14816 ∀ χ : RatioOrbit → RatioOrbit,
14817 PRCCharacterNonunitIdentityBranchTransport χ →
14818 PRCCharacterNoMixedNonunitOrbitOrientation χ
14819 orbit_product_no_mixed_from_identity_branch_transport :
14820 ∀ χ : RatioOrbit → RatioOrbit,
14821 PRCCharacterNonunitIdentityBranchTransport χ →
14822 PRCCharacterOrbitProductNoMixedOrientation χ
14823 nonunit_identity_branch_transport_from_local_no_mixed :
14824 ∀ χ : RatioOrbit → RatioOrbit,
14825 PRCCharacterNonunitOrbitLocalOrientation χ →
14826 PRCCharacterNoMixedNonunitOrbitOrientation χ →
14827 PRCCharacterNonunitIdentityBranchTransport χ
14828 nonunit_identity_branch_transport_from_coherent :
14829 ∀ χ : RatioOrbit → RatioOrbit,
14830 PRCCharacterNonunitOrbitOrientationCoherent χ →
14831 PRCCharacterNonunitIdentityBranchTransport χ
14832 nonunit_identity_witness_globalizes_from_branch_transport :
14833 ∀ χ : RatioOrbit → RatioOrbit,
14834 PRCCharacterNonunitIdentityBranchTransport χ →
14835 PRCCharacterNonunitIdentityWitnessGlobalizes χ
14836 nonunit_identity_branch_transport_from_witness_globalizes :
14837 ∀ χ : RatioOrbit → RatioOrbit,
14838 PRCCharacterNonunitIdentityWitnessGlobalizes χ →
14839 PRCCharacterNonunitIdentityBranchTransport χ
14840 nonunit_identity_witness_globalizes_iff_branch_transport :
14841 ∀ χ : RatioOrbit → RatioOrbit,
14842 PRCCharacterNonunitIdentityWitnessGlobalizes χ ↔
14843 PRCCharacterNonunitIdentityBranchTransport χ
14844 nonunit_coherent_from_local_identity_witness_globalizes :
14845 ∀ χ : RatioOrbit → RatioOrbit,
14846 PRCCharacterNonunitOrbitLocalOrientation χ →
14847 PRCCharacterNonunitIdentityWitnessGlobalizes χ →
14848 PRCCharacterNonunitOrbitOrientationCoherent χ
14849 nonunit_identity_witness_globalizes_from_coherent :
14850 ∀ χ : RatioOrbit → RatioOrbit,
14851 PRCCharacterNonunitOrbitOrientationCoherent χ →
14852 PRCCharacterNonunitIdentityWitnessGlobalizes χ
14853 nonunit_reciprocal_branch_transport_from_coherent :
14854 ∀ χ : RatioOrbit → RatioOrbit,
14855 PRCCharacterNonunitOrbitOrientationCoherent χ →
14856 PRCCharacterNonunitReciprocalBranchTransport χ
14857 nonunit_branch_transport_pair_from_coherent :
14858 ∀ χ : RatioOrbit → RatioOrbit,
14859 PRCCharacterNonunitOrbitOrientationCoherent χ →
14860 PRCCharacterNonunitBranchTransportPair χ
14861 nonunit_identity_branch_transport_from_comparable_trace :
14862 ∀ χ : RatioOrbit → RatioOrbit,
14863 PRCCharacterNonunitIdentityRespectsComparableTrace χ →
14864 PRCCharacterNonunitIdentityBranchTransport χ
14865 nonunit_identity_comparable_trace_from_branch_transport :
14866 ∀ χ : RatioOrbit → RatioOrbit,
14867 PRCCharacterNonunitIdentityBranchTransport χ →
14868 PRCCharacterNonunitIdentityRespectsComparableTrace χ
14869 nonunit_identity_comparable_trace_iff_branch_transport :
14870 ∀ χ : RatioOrbit → RatioOrbit,
14871 PRCCharacterNonunitIdentityRespectsComparableTrace χ ↔
14872 PRCCharacterNonunitIdentityBranchTransport χ
14873 nonunit_branch_agreement_from_coherent :
14874 ∀ χ : RatioOrbit → RatioOrbit,
14875 PRCCharacterNonunitOrbitOrientationCoherent χ →
14876 PRCCharacterNonunitBranchAgreement χ
14877 nonunit_branch_agreement_from_transport_pair :
14878 ∀ χ : RatioOrbit → RatioOrbit,
14879 PRCCharacterNonunitBranchTransportPair χ →
14880 PRCCharacterNonunitBranchAgreement χ
14881 nonunit_identity_branch_transport_from_branch_agreement :
14882 ∀ χ : RatioOrbit → RatioOrbit,
14883 PRCCharacterNonunitBranchAgreement χ →
14884 PRCCharacterNonunitIdentityBranchTransport χ
14885 nonunit_reciprocal_branch_transport_from_branch_agreement :
14886 ∀ χ : RatioOrbit → RatioOrbit,
14887 PRCCharacterNonunitBranchAgreement χ →
14888 PRCCharacterNonunitReciprocalBranchTransport χ
14889 nonunit_branch_transport_pair_from_branch_agreement :
14890 ∀ χ : RatioOrbit → RatioOrbit,
14891 PRCCharacterNonunitBranchAgreement χ →
14892 PRCCharacterNonunitBranchTransportPair χ
14893 nonunit_branch_agreement_iff_transport_pair :
14894 ∀ χ : RatioOrbit → RatioOrbit,
14895 PRCCharacterNonunitBranchAgreement χ ↔
14896 PRCCharacterNonunitBranchTransportPair χ
14897 nonunit_branch_agreement_from_local_identity_branch_transport :
14898 ∀ χ : RatioOrbit → RatioOrbit,
14899 PRCCharacterNonunitOrbitLocalOrientation χ →
14900 PRCCharacterNonunitIdentityBranchTransport χ →
14901 PRCCharacterNonunitBranchAgreement χ
14902 prime_floor_successor_transport_from_nonunit_identity_comparable_trace :
14903 ∀ χ : RatioOrbit → RatioOrbit,
14904 PRCCharacterNonunitIdentityRespectsComparableTrace χ →
14905 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ
14906 nonunit_coherent_from_local_branch_agreement :
14907 ∀ χ : RatioOrbit → RatioOrbit,
14908 PRCCharacterNonunitOrbitLocalOrientation χ →
14909 PRCCharacterNonunitBranchAgreement χ →
14910 PRCCharacterNonunitOrbitOrientationCoherent χ
14911 nonunit_branch_agreement_iff_coherent_of_local :
14912 ∀ χ : RatioOrbit → RatioOrbit,
14913 PRCCharacterNonunitOrbitLocalOrientation χ →
14914 (PRCCharacterNonunitBranchAgreement χ ↔
14915 PRCCharacterNonunitOrbitOrientationCoherent χ)
14916 nonunit_coherent_from_local_no_mixed :
14917 ∀ χ : RatioOrbit → RatioOrbit,
14918 PRCCharacterNonunitOrbitLocalOrientation χ →
14919 PRCCharacterNoMixedNonunitOrbitOrientation χ →
14920 PRCCharacterNonunitOrbitOrientationCoherent χ
14921 nonunit_coherent_from_local_identity_branch_transport :
14922 ∀ χ : RatioOrbit → RatioOrbit,
14923 PRCCharacterNonunitOrbitLocalOrientation χ →
14924 PRCCharacterNonunitIdentityBranchTransport χ →
14925 PRCCharacterNonunitOrbitOrientationCoherent χ
14926 orbit_product_no_mixed_from_nonunit_coherent :
14927 ∀ χ : RatioOrbit → RatioOrbit,
14928 PRCCharacterNonunitOrbitOrientationCoherent χ →
14929 PRCCharacterOrbitProductNoMixedOrientation χ
14930 orbit_product_identity_identity :
14931 ∀ χ : RatioOrbit → RatioOrbit,
14932 PRCRatioCharacter χ →
14933 PRCCharacterOrbitProductDisplayCompatible χ →
14934 ∀ a b p : DistinctionNat,
14935 ∀ ha : a ≠ DistinctionNat.zero, ∀ hb : b ≠ DistinctionNat.zero,
14936 ∀ hp : p ≠ DistinctionNat.zero,
14937 a * b = p →
14938 PRCCharacterOrbitDirectionIdentity χ a ha →
14939 PRCCharacterOrbitDirectionIdentity χ b hb →
14940 PRCCharacterOrbitDirectionIdentity χ p hp
14941 orbit_product_reciprocal_reciprocal :
14942 ∀ χ : RatioOrbit → RatioOrbit,
14943 PRCRatioCharacter χ →
14944 PRCCharacterOrbitProductDisplayCompatible χ →
14945 ∀ a b p : DistinctionNat,
14946 ∀ ha : a ≠ DistinctionNat.zero, ∀ hb : b ≠ DistinctionNat.zero,
14947 ∀ hp : p ≠ DistinctionNat.zero,
14948 a * b = p →
14949 PRCCharacterOrbitDirectionReciprocal χ a ha →
14950 PRCCharacterOrbitDirectionReciprocal χ b hb →
14951 PRCCharacterOrbitDirectionReciprocal χ p hp
14952 nonunit_all_identity_from_all_prime_identity :
14953 ∀ χ : RatioOrbit → RatioOrbit,
14954 PRCRatioCharacter χ →
14955 PRCCharacterOrbitProductDisplayCompatible χ →
14956 (∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
14957 RatioOrbit.crossEq (χ (primeDirection p hp)) (primeDirection p hp)) →
14958 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
14959 ¬ DistinctionNat.unit p →
14960 PRCCharacterOrbitDirectionIdentity χ p hp
14961 nonunit_all_reciprocal_from_all_prime_reciprocal :
14962 ∀ χ : RatioOrbit → RatioOrbit,
14963 PRCRatioCharacter χ →
14964 PRCCharacterOrbitProductDisplayCompatible χ →
14965 (∀ p : DistinctionNat, ∀ hp : DistinctionNat.primeOrbit p,
14966 RatioOrbit.crossEq (χ (primeDirection p hp))
14967 (RatioOrbit.recip (primeDirection p hp))) →
14968 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
14969 ¬ DistinctionNat.unit p →
14970 PRCCharacterOrbitDirectionReciprocal χ p hp
14971 mixed_identity_reflects_prime_from_prime_local :
14972 ∀ χ : RatioOrbit → RatioOrbit,
14973 PRCRatioCharacter χ →
14974 PRCCharacterOrbitProductDisplayCompatible χ →
14975 PRCCharacterPrimeLocalOrientation χ →
14976 PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness χ
14977 mixed_reciprocal_reflects_prime_from_prime_local :
14978 ∀ χ : RatioOrbit → RatioOrbit,
14979 PRCRatioCharacter χ →
14980 PRCCharacterOrbitProductDisplayCompatible χ →
14981 PRCCharacterPrimeLocalOrientation χ →
14982 PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness χ
14983 orbit_product_local_from_display_nomix :
14984 ∀ χ : RatioOrbit → RatioOrbit,
14985 PRCRatioCharacter χ →
14986 PRCCharacterOrbitProductDisplayCompatible χ →
14987 PRCCharacterOrbitProductNoMixedOrientation χ →
14988 PRCCharacterOrbitProductLocalOrientationPropagates χ
14989 nonunit_local_from_prime_product :
14990 ∀ χ : RatioOrbit → RatioOrbit,
14991 PRCCharacterPrimeLocalOrientation χ →
14992 PRCCharacterOrbitProductLocalOrientationPropagates χ →
14993 PRCCharacterNonunitOrbitLocalOrientation χ
14994 prime_floor_no_adjacent_mixed_orientation :
14995 PRCCharacterPrimeFloorNoAdjacentMixedOrientation =
14996 PRCCharacterPrimeFloorNoAdjacentMixedOrientation
14997 prime_floor_no_adjacent_from_nonunit_coherent :
14998 ∀ χ : RatioOrbit → RatioOrbit,
14999 PRCCharacterNonunitOrbitOrientationCoherent χ →
15000 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ
15001 prime_floor_orbit_identity_extends_successor_step :
15002 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep =
15003 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep
15004 prime_floor_orbit_identity_contracts_successor_step :
15005 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep =
15006 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep
15007 prime_floor_orbit_identity_successor_transport :
15008 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport =
15009 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport
15010 prime_floor_extends_from_local_adjacent_nomix :
15011 ∀ χ : RatioOrbit → RatioOrbit,
15012 PRCCharacterNonunitOrbitLocalOrientation χ →
15013 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ →
15014 PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep χ
15015 prime_floor_contracts_from_local_adjacent_nomix :
15016 ∀ χ : RatioOrbit → RatioOrbit,
15017 PRCCharacterNonunitOrbitLocalOrientation χ →
15018 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ →
15019 PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep χ
15020 prime_floor_successor_transport_from_local_adjacent_nomix :
15021 ∀ χ : RatioOrbit → RatioOrbit,
15022 PRCCharacterNonunitOrbitLocalOrientation χ →
15023 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ →
15024 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ
15025 prime_floor_no_adjacent_from_successor_transport :
15026 ∀ χ : RatioOrbit → RatioOrbit,
15027 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ →
15028 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ
15029 prime_floor_successor_transport_iff_local_adjacent_nomix :
15030 ∀ χ : RatioOrbit → RatioOrbit,
15031 PRCCharacterNonunitOrbitLocalOrientation χ →
15032 (PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ ↔
15033 PRCCharacterPrimeFloorNoAdjacentMixedOrientation χ)
15034 prime_identity_comparable_from_prime_floor_successor_transport :
15035 ∀ χ : RatioOrbit → RatioOrbit,
15036 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ →
15037 PRCCharacterPrimeIdentityRespectsComparableTrace χ
15038 nonunit_identity_comparable_from_prime_floor_successor_transport :
15039 ∀ χ : RatioOrbit → RatioOrbit,
15040 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ →
15041 PRCCharacterNonunitIdentityRespectsComparableTrace χ
15042 nonunit_coherent_from_local_prime_floor_successor_transport :
15043 ∀ χ : RatioOrbit → RatioOrbit,
15044 PRCCharacterNonunitOrbitLocalOrientation χ →
15045 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ →
15046 PRCCharacterNonunitOrbitOrientationCoherent χ
15047 prime_identity_witness_globalizes_nonunit_from_successor_transport :
15048 ∀ χ : RatioOrbit → RatioOrbit,
15049 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ →
15050 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ
15051 prime_floor_successor_transport_from_prime_identity_witness_globalizes :
15052 ∀ χ : RatioOrbit → RatioOrbit,
15053 PRCRatioCharacter χ →
15054 PRCCharacterOrbitProductDisplayCompatible χ →
15055 PRCCharacterPrimeLocalOrientation χ →
15056 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ →
15057 PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport χ
15058 prime_identity_witness_globalizes_nonunit_from_no_mixed_prime_witnesses :
15059 ∀ χ : RatioOrbit → RatioOrbit,
15060 PRCRatioCharacter χ →
15061 PRCCharacterOrbitProductDisplayCompatible χ →
15062 PRCCharacterPrimeLocalOrientation χ →
15063 PRCCharacterNoMixedPrimeWitnesses χ →
15064 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ
15065 no_mixed_prime_witnesses_from_prime_identity_witness_globalizes :
15066 ∀ χ : RatioOrbit → RatioOrbit,
15067 PRCCharacterPrimeIdentityWitnessGlobalizesNonunit χ →
15068 PRCCharacterNoMixedPrimeWitnesses χ
15069 orbit_identity_extends_from_additive_compat :
15070 ∀ χ : RatioOrbit → RatioOrbit,
15071 PRCCharacterOrbitSuccessorAdditiveCompatible χ →
15072 PRCCharacterOrbitIdentityExtendsSuccessorStep χ
15073 orbit_identity_contracts_from_additive_compat :
15074 ∀ χ : RatioOrbit → RatioOrbit,
15075 PRCCharacterOrbitSuccessorAdditiveCompatible χ →
15076 PRCCharacterOrbitIdentityContractsSuccessorStep χ
15077 orbit_identity_successor_transport_from_additive_compat :
15078 ∀ χ : RatioOrbit → RatioOrbit,
15079 PRCCharacterOrbitSuccessorAdditiveCompatible χ →
15080 PRCCharacterOrbitIdentitySuccessorTransport χ
15081 orbit_identity_respects_successor_step_from_transport :
15082 ∀ χ : RatioOrbit → RatioOrbit,
15083 PRCCharacterOrbitIdentitySuccessorTransport χ →
15084 PRCCharacterOrbitIdentityRespectsSuccessorStep χ
15085 orbit_identity_one_of_identity :
15086 ∀ χ : RatioOrbit → RatioOrbit,
15087 PRCCharacterOrbitIdentityRespectsSuccessorStep χ →
15088 ∀ p : DistinctionNat, ∀ hp : p ≠ DistinctionNat.zero,
15089 PRCCharacterOrbitDirectionIdentity χ p hp →
15090 PRCCharacterOrbitDirectionIdentity χ
15091 DistinctionNat.one DistinctionNat.one_ne_zero
15092 orbit_identity_of_one :
15093 ∀ χ : RatioOrbit → RatioOrbit,
15094 PRCCharacterOrbitIdentityRespectsSuccessorStep χ →
15095 ∀ r : DistinctionNat, ∀ hr : r ≠ DistinctionNat.zero,
15096 PRCCharacterOrbitDirectionIdentity χ
15097 DistinctionNat.one DistinctionNat.one_ne_zero →
15098 PRCCharacterOrbitDirectionIdentity χ r hr
15099 prime_identity_comparable_from_successor_step :
15100 ∀ χ : RatioOrbit → RatioOrbit,
15101 PRCCharacterOrbitIdentityRespectsSuccessorStep χ →
15102 PRCCharacterPrimeIdentityRespectsComparableTrace χ
15103 prime_identity_common_trace_from_comparable_trace :
15104 ∀ χ : RatioOrbit → RatioOrbit,
15105 PRCCharacterPrimeIdentityRespectsComparableTrace χ →
15106 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ
15107 prime_identity_canonical_add_trace_from_common_trace :
15108 ∀ χ : RatioOrbit → RatioOrbit,
15109 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ →
15110 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ
15111 prime_identity_common_trace_from_canonical_add_trace :
15112 ∀ χ : RatioOrbit → RatioOrbit,
15113 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ →
15114 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ
15115 prime_identity_canonical_add_trace_iff_common_trace :
15116 ∀ χ : RatioOrbit → RatioOrbit,
15117 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ ↔
15118 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ
15119 prime_identity_canonical_add_trace_from_trace_connected :
15120 ∀ χ : RatioOrbit → RatioOrbit,
15121 PRCCharacterPrimeIdentityRespectsTraceConnected χ →
15122 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ
15123 prime_identity_trace_connected_from_canonical_add_trace :
15124 ∀ χ : RatioOrbit → RatioOrbit,
15125 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ →
15126 PRCCharacterPrimeIdentityRespectsTraceConnected χ
15127 prime_identity_canonical_add_trace_iff_trace_connected :
15128 ∀ χ : RatioOrbit → RatioOrbit,
15129 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ ↔
15130 PRCCharacterPrimeIdentityRespectsTraceConnected χ
15131 prime_identity_branch_uniform_from_trace_coherence :
15132 ∀ χ : RatioOrbit → RatioOrbit,
15133 PRCCharacterPrimeIdentityTraceCoherent χ →
15134 PRCCharacterPrimeIdentityBranchUniform χ
15135 prime_identity_trace_coherence_from_branch_uniform :
15136 ∀ χ : RatioOrbit → RatioOrbit,
15137 PRCCharacterPrimeIdentityBranchUniform χ →
15138 PRCCharacterPrimeIdentityTraceCoherent χ
15139 prime_identity_branch_uniform_iff_trace_coherence :
15140 ∀ χ : RatioOrbit → RatioOrbit,
15141 PRCCharacterPrimeIdentityBranchUniform χ ↔
15142 PRCCharacterPrimeIdentityTraceCoherent χ
15143 prime_identity_canonical_add_trace_from_branch_uniform :
15144 ∀ χ : RatioOrbit → RatioOrbit,
15145 PRCCharacterPrimeIdentityBranchUniform χ →
15146 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ
15147 prime_identity_branch_uniform_from_canonical_add_trace :
15148 ∀ χ : RatioOrbit → RatioOrbit,
15149 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ →
15150 PRCCharacterPrimeIdentityBranchUniform χ
15151 prime_identity_branch_uniform_iff_canonical_add_trace :
15152 ∀ χ : RatioOrbit → RatioOrbit,
15153 PRCCharacterPrimeIdentityBranchUniform χ ↔
15154 PRCCharacterPrimeIdentityRespectsCanonicalAddTrace χ
15155 prime_identity_trace_connected_from_common_trace :
15156 ∀ χ : RatioOrbit → RatioOrbit,
15157 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ →
15158 PRCCharacterPrimeIdentityRespectsTraceConnected χ
15159 prime_identity_comparable_trace_from_trace_coherence :
15160 ∀ χ : RatioOrbit → RatioOrbit,
15161 PRCCharacterPrimeIdentityTraceCoherent χ →
15162 PRCCharacterPrimeIdentityRespectsComparableTrace χ
15163 prime_identity_trace_coherence_from_comparable_trace :
15164 ∀ χ : RatioOrbit → RatioOrbit,
15165 PRCCharacterPrimeIdentityRespectsComparableTrace χ →
15166 PRCCharacterPrimeIdentityTraceCoherent χ
15167 prime_identity_comparable_trace_iff_trace_coherence :
15168 ∀ χ : RatioOrbit → RatioOrbit,
15169 PRCCharacterPrimeIdentityRespectsComparableTrace χ ↔
15170 PRCCharacterPrimeIdentityTraceCoherent χ
15171 prime_identity_common_trace_from_trace_coherence :
15172 ∀ χ : RatioOrbit → RatioOrbit,
15173 PRCCharacterPrimeIdentityTraceCoherent χ →
15174 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ
15175 prime_identity_trace_coherence_from_common_trace :
15176 ∀ χ : RatioOrbit → RatioOrbit,
15177 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ →
15178 PRCCharacterPrimeIdentityTraceCoherent χ
15179 prime_identity_common_trace_iff_trace_coherence :
15180 ∀ χ : RatioOrbit → RatioOrbit,
15181 PRCCharacterPrimeIdentityRespectsCommonTraceExtension χ ↔
15182 PRCCharacterPrimeIdentityTraceCoherent χ
15183 prime_identity_trace_connected_from_trace_coherence :
15184 ∀ χ : RatioOrbit → RatioOrbit,
15185 PRCCharacterPrimeIdentityTraceCoherent χ →
15186 PRCCharacterPrimeIdentityRespectsTraceConnected χ
15187 prime_identity_trace_coherence_from_trace_connected :
15188 ∀ χ : RatioOrbit → RatioOrbit,
15189 PRCCharacterPrimeIdentityRespectsTraceConnected χ →
15190 PRCCharacterPrimeIdentityTraceCoherent χ
15191 prime_identity_trace_connected_iff_trace_coherence :
15192 ∀ χ : RatioOrbit → RatioOrbit,
15193 PRCCharacterPrimeIdentityRespectsTraceConnected χ ↔
15194 PRCCharacterPrimeIdentityTraceCoherent χ
15195 prime_to_local_orientation_target :
15196 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget
15197 prime_to_local_orientation_proved :
15198 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget
15199 prime_no_mixed_orientation_target_refuted :
15200 ¬ PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15201 prime_identity_trace_coherence_target_refuted :
15202 ¬ PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15203 prime_identity_branch_uniformity_target_refuted :
15204 ¬ PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget
15205 prime_identity_trace_transport_target_refuted :
15206 ¬ PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15207 prime_identity_common_trace_extension_target_refuted :
15208 ¬ PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget
15209 prime_identity_canonical_add_trace_target_refuted :
15210 ¬ PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget
15211 prime_identity_comparable_trace_target_refuted :
15212 ¬ PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget
15213 orbit_successor_identity_target_refuted :
15214 ¬ PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget
15215 orbit_successor_transport_target_refuted :
15216 ¬ PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget
15217 orbit_successor_additive_compat_target_refuted :
15218 ¬ PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget
15219 prime_floor_successor_transport_target_refuted :
15220 ¬ PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15221 prime_identity_witness_globalizes_nonunit_target_refuted :
15222 ¬ PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget
15223 prime_floor_identity_extends_successor_step_target_refuted :
15224 ¬ PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget
15225 prime_floor_identity_contracts_successor_step_target_refuted :
15226 ¬ PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget
15227 prime_floor_identity_successor_step_pair_target_refuted :
15228 ¬ PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15229 prime_floor_nonunit_local_orientation_target_refuted :
15230 ¬ PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget
15231 prime_floor_nonunit_product_local_orientation_target_refuted :
15232 ¬ PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget
15233 prime_floor_product_display_compatibility_target :
15234 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget
15235 prime_floor_character_crossEq_respect_target :
15236 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget
15237 prime_floor_character_crossEq_from_normalizeRatio_canonical :
15238 PRCNormalizeRatioCanonicalTarget →
15239 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget
15240 prime_floor_character_crossEq_from_reduced_signCanonical_unique :
15241 PRCReducedSignCanonicalRatioUniqueTarget →
15242 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget
15243 prime_floor_character_crossEq_respect_proved :
15244 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget
15245 prime_floor_product_display_from_crossEq_respect :
15246 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget →
15247 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget
15248 prime_floor_product_display_compatibility_proved :
15249 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget
15250 prime_floor_product_no_mixed_orientation_target_refuted :
15251 ¬ PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
15252 prime_floor_nonunit_orbit_orientation_coherent_target_refuted :
15253 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15254 prime_floor_no_mixed_nonunit_orbit_orientation_target_refuted :
15255 ¬ PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
15256 prime_floor_nonunit_identity_branch_transport_target_refuted :
15257 ¬ PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15258 prime_floor_nonunit_identity_witness_globalizes_target_refuted :
15259 ¬ PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15260 prime_floor_nonunit_identity_witness_excludes_reciprocal_target_refuted :
15261 ¬ PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget
15262 prime_floor_nonunit_no_mixed_witnesses_target_refuted :
15263 ¬ PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget
15264 prime_floor_no_mixed_prime_witnesses_target_refuted :
15265 ¬ PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15266 prime_floor_prime_identity_witness_excludes_reciprocal_target_refuted :
15267 ¬ PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget
15268 prime_floor_prime_reciprocal_witness_globalizes_target_refuted :
15269 ¬ PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget
15270 prime_floor_prime_reciprocal_forces_two_prime_reciprocal_target_refuted :
15271 ¬ PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget
15272 prime_floor_prime_reciprocal_witness_globalizes_split_target_refuted :
15273 ¬ PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget
15274 prime_floor_prime_witnesses_control_nonunit_target :
15275 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget
15276 prime_floor_mixed_nonunit_witnesses_reflect_prime_target :
15277 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget
15278 prime_floor_mixed_nonunit_identity_witness_reflects_prime_target :
15279 PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget
15280 prime_floor_mixed_nonunit_reciprocal_witness_reflects_prime_target :
15281 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget
15282 prime_floor_mixed_nonunit_witnesses_reflect_prime_split_target :
15283 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget
15284 prime_floor_nonunit_no_mixed_witnesses_split_target_refuted :
15285 ¬ PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget
15286 prime_floor_nonunit_identity_witness_local_exclusion_target_refuted :
15287 ¬ PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget
15288 prime_floor_nonunit_identity_comparable_trace_target_refuted :
15289 ¬ PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15290 prime_floor_nonunit_orbit_orientation_local_no_mixed_target_refuted :
15291 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget
15292 prime_floor_nonunit_orbit_orientation_local_product_no_mixed_target_refuted :
15293 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget
15294 prime_floor_no_mixed_nonunit_from_coherent :
15295 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15296 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
15297 prime_floor_no_mixed_nonunit_from_product_no_mixed :
15298 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget →
15299 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
15300 prime_floor_product_no_mixed_from_no_mixed_nonunit :
15301 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget →
15302 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
15303 prime_floor_product_no_mixed_iff_no_mixed_nonunit :
15304 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
15305 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
15306 prime_floor_product_no_mixed_from_identity_branch_transport :
15307 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget →
15308 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
15309 prime_floor_nonunit_identity_branch_transport_from_comparable_trace :
15310 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15311 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15312 prime_floor_nonunit_identity_branch_transport_from_coherent :
15313 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15314 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15315 prime_floor_nonunit_local_no_mixed_from_local_product_no_mixed :
15316 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget →
15317 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget
15318 prime_floor_nonunit_coherent_from_local_product_no_mixed :
15319 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget →
15320 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15321 prime_floor_nonunit_coherent_from_product_no_mixed :
15322 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget →
15323 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15324 prime_floor_product_no_mixed_iff_nonunit_coherent :
15325 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
15326 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15327 prime_floor_nonunit_identity_branch_transport_from_product_no_mixed :
15328 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget →
15329 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15330 prime_floor_product_no_mixed_iff_identity_branch_transport :
15331 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
15332 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15333 prime_floor_identity_witness_globalizes_from_identity_branch_transport :
15334 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget →
15335 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15336 prime_floor_identity_branch_transport_from_identity_witness_globalizes :
15337 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget →
15338 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15339 prime_floor_identity_witness_globalizes_iff_identity_branch_transport :
15340 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget ↔
15341 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget
15342 prime_floor_identity_witness_globalizes_from_product_no_mixed :
15343 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget →
15344 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15345 prime_floor_product_no_mixed_from_identity_witness_globalizes :
15346 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget →
15347 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
15348 prime_floor_product_no_mixed_iff_identity_witness_globalizes :
15349 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
15350 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15351 prime_floor_nonunit_coherent_from_identity_witness_globalizes :
15352 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget →
15353 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15354 prime_floor_identity_witness_globalizes_from_nonunit_coherent :
15355 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15356 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15357 prime_floor_nonunit_coherent_iff_identity_witness_globalizes :
15358 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
15359 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15360 prime_floor_identity_witness_excludes_reciprocal_from_no_mixed :
15361 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget →
15362 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget
15363 prime_floor_no_mixed_from_identity_witness_excludes_reciprocal :
15364 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget →
15365 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
15366 prime_floor_identity_witness_excludes_reciprocal_iff_no_mixed :
15367 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget ↔
15368 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget
15369 prime_floor_no_mixed_witnesses_from_identity_witness_excludes_reciprocal :
15370 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget →
15371 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget
15372 prime_floor_identity_witness_excludes_reciprocal_from_no_mixed_witnesses :
15373 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget →
15374 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget
15375 prime_floor_no_mixed_witnesses_iff_identity_witness_excludes_reciprocal :
15376 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget ↔
15377 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget
15378 prime_floor_no_mixed_prime_witnesses_from_no_mixed_prime_orientation :
15379 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget →
15380 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15381 prime_floor_no_mixed_prime_orientation_from_no_mixed_prime_witnesses :
15382 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget →
15383 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15384 prime_floor_no_mixed_prime_witnesses_iff_no_mixed_prime_orientation :
15385 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
15386 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15387 prime_floor_prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_orientation :
15388 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget →
15389 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget
15390 prime_floor_no_mixed_prime_orientation_from_identity_witness_excludes_reciprocal :
15391 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget →
15392 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15393 prime_floor_prime_identity_witness_excludes_reciprocal_iff_no_mixed_prime_orientation :
15394 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget ↔
15395 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15396 prime_floor_no_mixed_prime_witnesses_from_identity_witness_excludes_reciprocal :
15397 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget →
15398 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15399 prime_floor_prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_witnesses :
15400 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget →
15401 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget
15402 prime_floor_no_mixed_prime_witnesses_iff_identity_witness_excludes_reciprocal :
15403 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
15404 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget
15405 prime_floor_prime_reciprocal_witness_globalizes_from_no_mixed_prime_orientation :
15406 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget →
15407 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget
15408 prime_floor_no_mixed_prime_orientation_from_reciprocal_witness_globalizes :
15409 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget →
15410 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15411 prime_floor_prime_reciprocal_witness_globalizes_iff_no_mixed_prime_orientation :
15412 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget ↔
15413 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15414 prime_floor_prime_reciprocal_witness_globalizes_iff_identity_witness_excludes_reciprocal :
15415 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget ↔
15416 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget
15417 prime_floor_prime_reciprocal_forces_two_from_reciprocal_witness_globalizes :
15418 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget →
15419 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget
15420 prime_floor_two_prime_reciprocal_forces_from_reciprocal_witness_globalizes :
15421 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget →
15422 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15423 prime_floor_prime_reciprocal_witness_globalizes_split_from_reciprocal_witness_globalizes :
15424 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget →
15425 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget
15426 prime_floor_prime_reciprocal_witness_globalizes_from_split :
15427 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget →
15428 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget
15429 prime_floor_prime_reciprocal_witness_globalizes_iff_split :
15430 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget ↔
15431 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget
15432 prime_floor_prime_reciprocal_forces_two_from_identity_forces_two :
15433 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget →
15434 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget
15435 prime_floor_prime_identity_forces_two_from_reciprocal_forces_two :
15436 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget →
15437 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15438 prime_floor_prime_reciprocal_forces_two_iff_identity_forces_two :
15439 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget ↔
15440 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15441 prime_floor_two_prime_reciprocal_excludes_identity_witness_from_excludes :
15442 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget →
15443 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget
15444 prime_floor_two_prime_reciprocal_excludes_from_identity_witness_excludes :
15445 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget →
15446 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget
15447 prime_floor_two_prime_reciprocal_excludes_iff_identity_witness_excludes :
15448 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget ↔
15449 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget
15450 prime_floor_prime_identity_forces_two_from_two_prime_reciprocal_excludes_identity_witness :
15451 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget →
15452 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15453 prime_floor_two_prime_reciprocal_excludes_identity_witness_from_identity_forces_two :
15454 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget →
15455 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget
15456 prime_floor_prime_identity_forces_two_iff_two_prime_reciprocal_excludes_identity_witness :
15457 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
15458 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget
15459 prime_floor_two_prime_reciprocal_excludes_identity_witness_from_no_mixed_character :
15460 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter →
15461 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget
15462 prime_floor_no_mixed_character_from_two_prime_reciprocal_excludes_identity_witness :
15463 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget →
15464 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter
15465 prime_floor_two_prime_reciprocal_excludes_identity_witness_iff_no_mixed_character :
15466 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget ↔
15467 ¬ PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter
15468 prime_floor_prime_reciprocal_witness_globalizes_split_from_two_prime_reciprocal_forces :
15469 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget →
15470 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget
15471 prime_floor_two_prime_reciprocal_forces_from_split :
15472 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget →
15473 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15474 prime_floor_prime_reciprocal_witness_globalizes_split_iff_two_prime_reciprocal_forces :
15475 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget ↔
15476 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15477 prime_identity_trace_coherence_from_no_mixed_prime_orientation :
15478 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget →
15479 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15480 prime_no_mixed_prime_orientation_iff_trace_coherence :
15481 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget ↔
15482 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15483 prime_no_mixed_prime_orientation_from_branch_uniformity :
15484 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget →
15485 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15486 prime_identity_branch_uniformity_from_no_mixed_prime_orientation :
15487 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget →
15488 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget
15489 prime_identity_branch_uniformity_iff_no_mixed_prime_orientation :
15490 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
15491 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15492 prime_no_mixed_prime_witnesses_iff_trace_coherence :
15493 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
15494 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15495 coherent_prime_orientation_from_no_mixed_prime_witnesses :
15496 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget →
15497 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget
15498 no_mixed_prime_witnesses_from_coherent_prime_orientation :
15499 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget →
15500 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15501 no_mixed_prime_witnesses_iff_coherent_prime_orientation :
15502 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget ↔
15503 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget
15504 two_prime_branch_controls_target_refuted :
15505 ¬ PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget
15506 two_prime_branch_controls_from_coherent_prime_orientation :
15507 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget →
15508 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget
15509 coherent_prime_orientation_from_two_prime_branch_controls :
15510 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget →
15511 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget
15512 coherent_prime_orientation_iff_two_prime_branch_controls :
15513 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget ↔
15514 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget
15515 prime_identity_iff_two_prime_identity_target_refuted :
15516 ¬ PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget
15517 prime_identity_forces_two_prime_identity_target_refuted :
15518 ¬ PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15519 two_prime_reciprocal_excludes_prime_identity_target_refuted :
15520 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget
15521 two_prime_reciprocal_excludes_prime_identity_witness_target_refuted :
15522 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget
15523 two_prime_reciprocal_identity_prime_mixed_character :
15524 PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter =
15525 PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter
15526 two_prime_reciprocal_forces_prime_reciprocal_target_refuted :
15527 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15528 two_prime_reciprocal_trace_connected_target_refuted :
15529 ¬ PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget
15530 two_prime_identity_trace_connected_target_refuted :
15531 ¬ PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget
15532 prime_identity_iff_two_from_two_prime_branch_controls :
15533 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget →
15534 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget
15535 two_prime_branch_controls_from_prime_identity_iff_two :
15536 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget →
15537 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget
15538 two_prime_branch_controls_iff_prime_identity_iff_two :
15539 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget ↔
15540 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget
15541 prime_identity_forces_two_from_identity_iff_two_target :
15542 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget →
15543 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15544 prime_identity_iff_two_from_identity_forces_two_target :
15545 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget →
15546 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget
15547 prime_identity_iff_two_iff_identity_forces_two :
15548 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget ↔
15549 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15550 two_prime_reciprocal_excludes_from_identity_forces_two_target :
15551 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget →
15552 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget
15553 prime_identity_forces_two_from_two_prime_reciprocal_excludes_target :
15554 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget →
15555 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15556 prime_identity_forces_two_target_iff_two_prime_reciprocal_excludes :
15557 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget ↔
15558 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget
15559 two_prime_reciprocal_excludes_from_two_prime_reciprocal_forces_target :
15560 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget →
15561 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget
15562 two_prime_reciprocal_forces_from_two_prime_reciprocal_excludes_target :
15563 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget →
15564 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15565 two_prime_reciprocal_excludes_target_iff_two_prime_reciprocal_forces :
15566 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget ↔
15567 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15568 two_prime_reciprocal_forces_from_identity_forces_two_target :
15569 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget →
15570 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15571 prime_identity_forces_two_from_two_prime_reciprocal_forces_target :
15572 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget →
15573 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15574 two_prime_reciprocal_forces_target_iff_identity_forces_two :
15575 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget ↔
15576 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget
15577 two_prime_reciprocal_forces_from_trace_connected_target :
15578 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget →
15579 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15580 two_prime_reciprocal_trace_connected_from_forces_target :
15581 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget →
15582 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget
15583 two_prime_reciprocal_trace_connected_target_iff_forces :
15584 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget ↔
15585 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget
15586 two_prime_reciprocal_trace_connected_from_identity_trace_connected_target :
15587 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget →
15588 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget
15589 two_prime_identity_trace_connected_from_reciprocal_trace_connected_target :
15590 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget →
15591 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget
15592 two_prime_reciprocal_trace_connected_target_iff_identity_trace_connected :
15593 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget ↔
15594 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget
15595 two_prime_identity_trace_connected_from_prime_identity_trace_transport_target :
15596 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget →
15597 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget
15598 prime_identity_trace_transport_from_two_prime_identity_trace_connected_target :
15599 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget →
15600 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15601 two_prime_identity_trace_connected_target_iff_prime_identity_trace_transport :
15602 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget ↔
15603 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15604 prime_floor_no_mixed_prime_witnesses_from_nonunit_no_mixed_witnesses :
15605 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget →
15606 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15607 prime_floor_nonunit_no_mixed_witnesses_split_from_nonunit_no_mixed_witnesses :
15608 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget →
15609 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget
15610 prime_floor_nonunit_no_mixed_witnesses_from_split :
15611 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget →
15612 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget
15613 prime_floor_nonunit_no_mixed_witnesses_iff_split :
15614 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget ↔
15615 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget
15616 prime_floor_prime_witnesses_control_from_mixed_reflects :
15617 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget →
15618 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget
15619 prime_floor_mixed_reflects_from_prime_witnesses_control :
15620 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget →
15621 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget
15622 prime_floor_prime_witnesses_control_iff_mixed_reflects :
15623 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget ↔
15624 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget
15625 prime_floor_mixed_reflection_split_from_reflects :
15626 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget →
15627 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget
15628 prime_floor_mixed_reflection_from_split :
15629 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget →
15630 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget
15631 prime_floor_mixed_reflection_iff_split :
15632 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget ↔
15633 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget
15634 prime_floor_mixed_identity_reflects_prime_proved :
15635 PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget
15636 prime_floor_mixed_reciprocal_reflects_prime_proved :
15637 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget
15638 prime_floor_mixed_reflection_split_proved :
15639 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget
15640 prime_floor_mixed_reflection_proved :
15641 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget
15642 prime_floor_prime_witnesses_control_nonunit_proved :
15643 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget
15644 prime_floor_nonunit_no_mixed_split_from_no_mixed_prime_witnesses :
15645 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget →
15646 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget
15647 prime_floor_nonunit_no_mixed_from_no_mixed_prime_witnesses :
15648 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget →
15649 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget
15650 prime_floor_nonunit_no_mixed_iff_no_mixed_prime_witnesses :
15651 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget ↔
15652 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15653 prime_floor_identity_witness_globalizes_from_local_exclusion :
15654 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget →
15655 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget
15656 prime_floor_identity_witness_local_exclusion_from_globalizes :
15657 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget →
15658 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget
15659 prime_floor_identity_witness_globalizes_iff_local_exclusion :
15660 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget ↔
15661 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget
15662 prime_floor_nonunit_identity_comparable_trace_from_branch_transport :
15663 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget →
15664 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15665 prime_floor_nonunit_identity_comparable_trace_from_product_no_mixed :
15666 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget →
15667 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15668 prime_floor_nonunit_identity_branch_transport_iff_comparable_trace :
15669 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget ↔
15670 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15671 prime_floor_product_no_mixed_iff_identity_comparable_trace :
15672 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
15673 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15674 prime_floor_product_local_orientation_from_identity_comparable_trace :
15675 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15676 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget
15677 prime_floor_nonunit_local_orientation_from_identity_comparable_trace :
15678 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15679 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget
15680 prime_floor_nonunit_local_comparable_trace_from_identity_comparable_trace :
15681 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15682 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget
15683 prime_floor_nonunit_identity_comparable_trace_from_local_comparable_trace :
15684 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget →
15685 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15686 prime_floor_nonunit_local_comparable_trace_iff_identity_comparable_trace :
15687 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget ↔
15688 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15689 prime_floor_nonunit_local_no_mixed_from_coherent :
15690 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15691 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget
15692 prime_floor_nonunit_coherent_from_local_no_mixed :
15693 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget →
15694 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15695 prime_floor_nonunit_orbit_orientation_coherent_iff_local_no_mixed :
15696 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
15697 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget
15698 prime_floor_nonunit_orbit_orientation_coherent_sharpened_target_refuted :
15699 ¬ PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget
15700 prime_floor_nonunit_orbit_orientation_coherent_from_local_successor_transport :
15701 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget →
15702 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15703 prime_floor_product_no_mixed_from_nonunit_coherent :
15704 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15705 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
15706 prime_floor_nonunit_local_from_nonunit_coherent :
15707 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15708 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget
15709 prime_floor_no_adjacent_mixed_from_nonunit_coherent :
15710 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15711 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget
15712 prime_floor_no_adjacent_mixed_from_successor_transport :
15713 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15714 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget
15715 prime_floor_successor_transport_from_nonunit_coherent :
15716 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15717 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15718 prime_floor_nonunit_identity_comparable_trace_from_successor_transport :
15719 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15720 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15721 prime_floor_nonunit_orbit_orientation_sharpened_from_nonunit_coherent :
15722 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15723 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget
15724 prime_floor_nonunit_orbit_orientation_coherent_iff_sharpened :
15725 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
15726 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget
15727 prime_floor_successor_transport_from_identity_comparable_trace :
15728 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15729 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15730 prime_floor_identity_extends_successor_step_from_successor_transport :
15731 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15732 PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget
15733 prime_floor_identity_contracts_successor_step_from_successor_transport :
15734 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15735 PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget
15736 prime_floor_identity_successor_step_pair_from_successor_transport :
15737 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15738 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15739 prime_floor_successor_transport_from_successor_step_pair :
15740 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget →
15741 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15742 prime_floor_successor_transport_iff_successor_step_pair :
15743 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget ↔
15744 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15745 target_prime_identity_witness_globalizes_nonunit_from_successor_transport :
15746 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15747 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget
15748 target_prime_floor_successor_transport_from_prime_identity_witness_globalizes :
15749 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget →
15750 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15751 target_prime_floor_successor_transport_iff_prime_identity_witness_globalizes :
15752 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget ↔
15753 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget
15754 target_prime_identity_witness_globalizes_nonunit_from_no_mixed_prime_witnesses :
15755 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget →
15756 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget
15757 target_no_mixed_prime_witnesses_from_prime_identity_witness_globalizes :
15758 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget →
15759 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15760 target_prime_identity_witness_globalizes_nonunit_iff_no_mixed_prime_witnesses :
15761 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget ↔
15762 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget
15763 prime_floor_identity_successor_step_pair_from_identity_comparable_trace :
15764 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15765 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15766 prime_floor_nonunit_identity_comparable_trace_from_successor_step_pair :
15767 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget →
15768 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15769 prime_floor_nonunit_identity_comparable_trace_iff_successor_step_pair :
15770 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget ↔
15771 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15772 prime_floor_product_no_mixed_from_successor_step_pair :
15773 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget →
15774 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget
15775 prime_floor_identity_successor_step_pair_from_product_no_mixed :
15776 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget →
15777 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15778 prime_floor_product_no_mixed_iff_successor_step_pair :
15779 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget ↔
15780 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15781 prime_floor_nonunit_coherent_from_successor_step_pair :
15782 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget →
15783 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15784 prime_floor_identity_successor_step_pair_from_nonunit_coherent :
15785 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15786 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15787 prime_floor_nonunit_coherent_iff_successor_step_pair :
15788 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget ↔
15789 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget
15790 prime_floor_nonunit_identity_comparable_trace_iff_successor_transport :
15791 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget ↔
15792 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15793 prime_floor_successor_transport_local_adjacent_target_refuted :
15794 ¬ PRCPrimeFloorSuccessorTransportLocalAdjacentTarget
15795 prime_floor_successor_transport_from_local_adjacent_target :
15796 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget →
15797 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15798 prime_floor_local_adjacent_from_local_successor_transport :
15799 (PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
15800 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget) →
15801 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget
15802 prime_floor_local_adjacent_iff_local_successor_transport :
15803 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget ↔
15804 (PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget ∧
15805 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget)
15806 prime_floor_local_adjacent_from_nonunit_coherent :
15807 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget →
15808 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget
15809 prime_floor_nonunit_coherent_from_local_adjacent :
15810 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget →
15811 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15812 prime_floor_local_adjacent_iff_nonunit_coherent :
15813 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget ↔
15814 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget
15815 prime_floor_product_local_orientation_sharpened_target_refuted :
15816 ¬ PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget
15817 prime_floor_product_local_orientation_from_display_nomix :
15818 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget →
15819 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget
15820 prime_floor_nonunit_local_orientation_from_product_local :
15821 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget →
15822 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget
15823 prime_floor_no_adjacent_mixed_orientation_target_refuted :
15824 ¬ PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget
15825 prime_floor_successor_transport_sharpened_target_refuted :
15826 ¬ PRCPrimeFloorSuccessorTransportSharpenedTarget
15827 prime_floor_successor_transport_target_from_local_adjacent_nomix :
15828 PRCPrimeFloorSuccessorTransportSharpenedTarget →
15829 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15830 orbit_successor_transport_target_from_additive_compat :
15831 PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget →
15832 PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget
15833 prime_identity_comparable_trace_from_prime_floor_successor_transport :
15834 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget →
15835 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget
15836 orbit_successor_identity_target_from_transport :
15837 PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget →
15838 PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget
15839 prime_identity_comparable_trace_from_successor_step :
15840 PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget →
15841 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget
15842 target_prime_identity_comparable_trace_from_nonunit_identity_comparable :
15843 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget →
15844 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget
15845 target_nonunit_identity_comparable_trace_from_prime_identity_comparable :
15846 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget →
15847 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15848 target_prime_identity_comparable_trace_iff_nonunit_identity_comparable :
15849 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget ↔
15850 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget
15851 target_prime_identity_comparable_trace_iff_prime_floor_successor_transport :
15852 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget ↔
15853 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget
15854 prime_identity_common_trace_extension_from_comparable_trace :
15855 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget →
15856 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget
15857 prime_identity_canonical_add_trace_from_common_trace_target :
15858 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget →
15859 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget
15860 prime_identity_common_trace_from_canonical_add_trace_target :
15861 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget →
15862 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget
15863 prime_identity_canonical_add_trace_target_iff_common_trace :
15864 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget ↔
15865 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget
15866 prime_identity_canonical_add_trace_from_trace_transport_target :
15867 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget →
15868 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget
15869 prime_identity_trace_transport_from_canonical_add_trace_target :
15870 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget →
15871 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15872 prime_identity_canonical_add_trace_target_iff_trace_transport :
15873 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget ↔
15874 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15875 prime_identity_branch_uniformity_from_trace_coherence_target :
15876 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget →
15877 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget
15878 prime_identity_trace_coherence_from_branch_uniformity_target :
15879 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget →
15880 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15881 prime_identity_branch_uniformity_target_iff_trace_coherence :
15882 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
15883 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15884 prime_identity_canonical_add_trace_from_branch_uniformity_target :
15885 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget →
15886 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget
15887 prime_identity_branch_uniformity_from_canonical_add_trace_target :
15888 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget →
15889 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget
15890 prime_identity_branch_uniformity_target_iff_canonical_add_trace :
15891 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget ↔
15892 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget
15893 prime_identity_trace_transport_from_common_trace :
15894 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget →
15895 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15896 prime_identity_trace_coherence_from_transport :
15897 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget →
15898 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15899 target_prime_identity_comparable_trace_from_trace_coherence :
15900 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget →
15901 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget
15902 target_prime_identity_trace_coherence_from_comparable_trace :
15903 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget →
15904 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15905 target_prime_identity_trace_coherence_iff_comparable_trace :
15906 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget ↔
15907 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget
15908 target_prime_identity_common_trace_from_trace_coherence :
15909 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget →
15910 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget
15911 target_prime_identity_trace_coherence_from_common_trace :
15912 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget →
15913 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget
15914 target_prime_identity_trace_coherence_iff_common_trace :
15915 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget ↔
15916 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget
15917 target_prime_identity_trace_transport_from_trace_coherence :
15918 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget →
15919 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15920 target_prime_identity_trace_coherence_iff_trace_transport :
15921 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget ↔
15922 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget
15923 prime_no_mixed_from_trace_coherence :
15924 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget →
15925 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget
15926 coherent_prime_orientation_reduction :
15927 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget →
15928 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget →
15929 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget
15930 prime_to_coherent_orientation_target_refuted :
15931 ¬ PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget
15932 coherent_prime_orientation_propagation_target_refuted :
15933 ¬ PRCCoherentPrimeOrientationPropagatesToGlobalTarget
15934 admissible_prime_orientation_coherent_target :
15935 PRCAdmissibleCharacterPrimeOrientationCoherentTarget
15936 admissible_signed_unit_calibration_target_refuted :
15937 ¬ PRCAdmissibleCharacterSignedUnitCalibratedTarget
15938 signed_coherent_prime_orientation_propagation_target :
15939 PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget
15940 global_orientation_reduction :
15941 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget →
15942 PRCCoherentPrimeOrientationPropagatesToGlobalTarget →
15943 PRCPrimeCalibrationForcesGlobalOrientationTarget
15944 prime_propagation_sharpened_target_refuted :
15945 ¬ PRCPrimeCalibrationPropagationSharpenedTarget
15946 prime_propagation_reduction :
15947 PRCPrimeCalibrationForcesGlobalOrientationTarget →
15948 PRCPrimeCalibrationPropagationTarget
15949 prime_propagation_sharpened_reduction :
15950 PRCPrimeCalibrationPropagationSharpenedTarget →
15951 PRCPrimeCalibrationPropagationTarget
15952 rigidity_sharpened_target_refuted :
15953 ¬ PRCNativeCostCharacterRigiditySharpenedTarget
15954 rigidity_reduction :
15955 PRCTwoCalibrationForcesPrimeCalibrationTarget →
15956 PRCPrimeCalibrationPropagationTarget →
15957 PRCNativeCostCharacterRigidityTarget
15958 identity_character : PRCRatioCharacter (fun q : RatioOrbit => q)
15959 identity_rigid :
15960 ∀ q : RatioOrbit,
15961 RatioOrbit.crossEq
15962 (costFromCharacter (fun q : RatioOrbit => q) q)
15963 (onRatioOrbit q)
15964 identity_orientation :
15965 PRCCharacterGlobalCostOrientation (fun q : RatioOrbit => q)
15966 identity_prime_orientation_coherent :
15967 PRCCharacterPrimeOrientationCoherent (fun q : RatioOrbit => q)
15968 reciprocal_character :
15969 PRCRatioCharacter (fun q : RatioOrbit => RatioOrbit.recip q)
15970 reciprocal_prime_calibrated :
15971 PRCCharacterPrimeDirectionCalibrated
15972 (fun q : RatioOrbit => RatioOrbit.recip q)
15973 reciprocal_orientation :
15974 PRCCharacterGlobalCostOrientation
15975 (fun q : RatioOrbit => RatioOrbit.recip q)
15976 reciprocal_prime_orientation_coherent :
15977 PRCCharacterPrimeOrientationCoherent
15978 (fun q : RatioOrbit => RatioOrbit.recip q)
15979 sharpened_target :
15980 ¬ PRCNativeCostUniquenessSharpenedTarget
15981 reduction :
15982 PRCNativeCostCharacterFactorizationTarget →
15983 PRCNativeCostCharacterRigidityTarget →
15984 PRCNativeCostUniquenessTarget
15985 prime_reduction :
15986 PRCNativeCostCharacterFactorizationTarget →
15987 PRCTwoCalibrationForcesPrimeCalibrationTarget →
15988 PRCPrimeCalibrationPropagationTarget →
15989 PRCNativeCostUniquenessTarget
15990 original_target :
15991 ¬ PRCNativeCostUniquenessTarget
15992 original_target_refuted :
15993 ¬ PRCNativeCostUniquenessTarget
15994 strength_tag : StrengthTag.deltaOnly = StrengthTag.deltaOnly
15995
15996theorem prc_native_cost_uniqueness_blocker_certificate :
15997 PRCNativeCostUniquenessBlockerCertificate where
15998 zero_calibrated_factorization_target :=
15999 PRCZeroCalibratedNativeCostCharacterFactorizationTarget_proved
16000 zero_calibrated_signed_admissible_factorization_refuted :=
16001 PRCZeroCalibratedNativeCostSignedAdmissibleCharacterFactorizationTarget_refuted
16002 zero_calibration_signed_unit_target_refuted :=
16003 PRCZeroCalibrationForcesNativeCostSignedUnitCalibrationTarget_refuted
16004 zero_calibrated_prime_signed_strengthened_factorization :=
16005 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostSignedAdmissibleCharacterFactorizationTarget_proved
16006 zero_calibrated_prime_signed_strengthened_uniqueness :=
16007 PRCZeroCalibratedPrimeSignedStrengthenedNativeCostUniquenessTarget_proved
16008 old_factorization_refuted := PRCNativeCostCharacterFactorizationTarget_refuted
16009 zero_calibrated_uniqueness_target :=
16010 PRCZeroCalibratedNativeCostUniquenessTarget_refuted
16011 signed_admissible_rigidity_target :=
16012 PRCNativeCostSignedAdmissibleCharacterRigidityTarget_proved
16013 old_rigidity_refuted := PRCNativeCostCharacterRigidityTarget_refuted
16014 two_to_prime_target_refuted := PRCTwoCalibrationForcesPrimeCalibrationTarget_refuted
16015 prime_propagation_target_refuted :=
16016 PRCPrimeCalibrationPropagationTarget_refuted
16017 global_orientation_target_refuted :=
16018 PRCPrimeCalibrationForcesGlobalOrientationTarget_refuted
16019 coherent_prime_orientation := rfl
16020 two_orbit_prime := twoOrbit_primeOrbit
16021 two_prime_direction := rfl
16022 two_prime_branch_controls_primes := rfl
16023 prime_identity_iff_two_prime_identity := rfl
16024 prime_identity_forces_two_prime_identity := rfl
16025 two_prime_reciprocal_excludes_prime_identity := rfl
16026 two_prime_reciprocal_forces_prime_reciprocal := rfl
16027 two_prime_reciprocal_trace_connected := rfl
16028 two_prime_identity_trace_connected := rfl
16029 reciprocal_twist_character := by
16030 intro χ
16031 exact PRCRatioCharacter.reciprocalTwist
16032 reciprocal_twist_prime_calibrated := by
16033 intro χ
16034 exact PRCCharacterPrimeDirectionCalibrated.reciprocalTwist
16035 reciprocal_twist_prime_identity_iff_reciprocal := by
16036 intro χ p hp
16037 exact PRCCharacterReciprocalTwist_prime_identity_iff_reciprocal χ p hp
16038 reciprocal_twist_two_identity_iff_reciprocal := by
16039 intro χ
16040 exact PRCCharacterReciprocalTwist_two_identity_iff_reciprocal χ
16041 reciprocal_twist_prime_reciprocal_iff_identity := by
16042 intro χ p hp
16043 exact PRCCharacterReciprocalTwist_prime_reciprocal_iff_identity χ p hp
16044 reciprocal_twist_two_reciprocal_iff_identity := by
16045 intro χ
16046 exact PRCCharacterReciprocalTwist_two_reciprocal_iff_identity χ
16047 two_prime_branch_controls_from_coherent := by
16048 intro χ
16049 exact PRCCharacterTwoPrimeBranchControlsPrimes_of_coherent
16050 coherent_from_local_two_prime_branch_controls := by
16051 intro χ
16052 exact PRCCharacterPrimeOrientationCoherent_of_local_two_prime_branch_controls
16053 prime_identity_iff_two_from_local_two_prime_branch_controls := by
16054 intro χ
16055 exact PRCCharacterPrimeIdentityIffTwoPrimeIdentity_of_local_two_prime_branch_controls
16056 two_prime_branch_controls_from_local_prime_identity_iff_two := by
16057 intro χ
16058 exact PRCCharacterTwoPrimeBranchControlsPrimes_of_local_prime_identity_iff_two
16059 prime_identity_forces_two_from_identity_iff_two := by
16060 intro χ
16061 exact PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_identity_iff_two
16062 two_prime_reciprocal_excludes_from_identity_forces_two := by
16063 intro χ
16064 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_identity_forces_two
16065 prime_identity_forces_two_from_local_two_prime_reciprocal_excludes := by
16066 intro χ
16067 exact PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_local_two_prime_reciprocal_excludes
16068 prime_identity_forces_two_iff_two_prime_reciprocal_excludes := by
16069 intro χ
16070 exact PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_iff_two_prime_reciprocal_excludes
16071 two_prime_reciprocal_excludes_from_two_prime_reciprocal_forces := by
16072 intro χ
16073 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_of_two_prime_reciprocal_forces
16074 two_prime_reciprocal_forces_from_local_excludes_prime_identity := by
16075 intro χ
16076 exact PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_local_excludes_prime_identity
16077 two_prime_reciprocal_excludes_iff_two_prime_reciprocal_forces := by
16078 intro χ
16079 exact PRCCharacterTwoPrimeReciprocalExcludesPrimeIdentity_iff_two_prime_reciprocal_forces
16080 two_prime_reciprocal_forces_from_trace_connected := by
16081 intro χ
16082 exact PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_trace_connected
16083 two_prime_reciprocal_trace_connected_from_forces := by
16084 intro χ
16085 exact PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_forces
16086 two_prime_reciprocal_trace_connected_iff_forces := by
16087 intro χ
16088 exact PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_iff_forces
16089 two_prime_reciprocal_trace_connected_from_twist_identity := by
16090 intro χ
16091 exact PRCCharacterTwoPrimeReciprocalRespectsTraceConnected_of_reciprocal_twist_identity
16092 two_prime_identity_trace_connected_from_twist_reciprocal := by
16093 intro χ
16094 exact PRCCharacterTwoPrimeIdentityRespectsTraceConnected_of_reciprocal_twist_reciprocal
16095 two_prime_identity_trace_connected_from_prime_identity_trace_connected := by
16096 intro χ
16097 exact PRCCharacterTwoPrimeIdentityRespectsTraceConnected_of_prime_identity_trace_connected
16098 prime_identity_trace_connected_from_two_prime_identity_and_forces_two := by
16099 intro χ
16100 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_two_prime_identity_and_forces_two
16101 local_prime_orientation := rfl
16102 no_mixed_prime_orientation := rfl
16103 no_mixed_prime_witnesses := rfl
16104 prime_identity_witness_excludes_reciprocal := rfl
16105 prime_reciprocal_witness_globalizes := rfl
16106 prime_reciprocal_forces_two_prime_reciprocal := rfl
16107 prime_reciprocal_witness_globalizes_split := rfl
16108 prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_orientation := by
16109 intro χ
16110 exact PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_orientation
16111 no_mixed_prime_orientation_from_identity_witness_excludes_reciprocal := by
16112 intro χ
16113 exact PRCCharacterNoMixedPrimeOrientation_of_identity_witness_excludes_reciprocal
16114 prime_identity_witness_excludes_reciprocal_iff_no_mixed_prime_orientation := by
16115 intro χ
16116 exact PRCCharacterPrimeIdentityWitnessExcludesReciprocal_iff_no_mixed_prime_orientation
16117 no_mixed_prime_witnesses_from_identity_witness_excludes_reciprocal := by
16118 intro χ
16119 exact PRCCharacterNoMixedPrimeWitnesses_of_identity_witness_excludes_reciprocal
16120 prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_witnesses := by
16121 intro χ
16122 exact PRCCharacterPrimeIdentityWitnessExcludesReciprocal_of_no_mixed_prime_witnesses
16123 no_mixed_prime_witnesses_iff_identity_witness_excludes_reciprocal := by
16124 intro χ
16125 exact PRCCharacterNoMixedPrimeWitnesses_iff_identity_witness_excludes_reciprocal
16126 prime_reciprocal_witness_globalizes_from_local_no_mixed_prime_orientation := by
16127 intro χ
16128 exact PRCCharacterPrimeReciprocalWitnessGlobalizes_of_local_no_mixed_prime_orientation
16129 no_mixed_prime_orientation_from_prime_reciprocal_witness_globalizes := by
16130 intro χ
16131 exact PRCCharacterNoMixedPrimeOrientation_of_reciprocal_witness_globalizes
16132 prime_reciprocal_forces_two_from_reciprocal_witness_globalizes := by
16133 intro χ
16134 exact PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_witness_globalizes
16135 two_prime_reciprocal_forces_from_reciprocal_witness_globalizes := by
16136 intro χ
16137 exact PRCCharacterTwoPrimeReciprocalForcesPrimeReciprocal_of_reciprocal_witness_globalizes
16138 prime_reciprocal_witness_globalizes_split_from_reciprocal_witness_globalizes := by
16139 intro χ
16140 exact PRCCharacterPrimeReciprocalWitnessGlobalizesSplit_of_reciprocal_witness_globalizes
16141 prime_reciprocal_witness_globalizes_from_split := by
16142 intro χ
16143 exact PRCCharacterPrimeReciprocalWitnessGlobalizes_of_split
16144 prime_reciprocal_witness_globalizes_iff_split := by
16145 intro χ
16146 exact PRCCharacterPrimeReciprocalWitnessGlobalizes_iff_split
16147 prime_reciprocal_forces_two_from_reciprocal_twist_identity_forces_two := by
16148 intro χ
16149 exact PRCCharacterPrimeReciprocalForcesTwoPrimeReciprocal_of_reciprocal_twist_identity_forces_two
16150 prime_identity_forces_two_from_reciprocal_twist_reciprocal_forces_two := by
16151 intro χ
16152 exact PRCCharacterPrimeIdentityForcesTwoPrimeIdentity_of_reciprocal_twist_reciprocal_forces_two
16153 character_no_mixed_prime_witnesses_from_coherent_prime_orientation := by
16154 intro χ
16155 exact PRCCharacterNoMixedPrimeWitnesses_of_coherent_prime_orientation
16156 mixed_nonunit_witnesses_reflect_prime_witnesses := rfl
16157 mixed_nonunit_identity_witness_reflects_prime_witness := rfl
16158 mixed_nonunit_reciprocal_witness_reflects_prime_witness := rfl
16159 mixed_nonunit_witnesses_reflect_prime_witnesses_split := rfl
16160 prime_identity_trace_coherence := rfl
16161 prime_identity_branch_uniform := rfl
16162 prime_axis_trace_connected := rfl
16163 prime_axis_trace_connected_proved :=
16164 PRCPrimeAxisTraceConnected_proved
16165 orbit_trace_extends_of_toNat_le := by
16166 intro p r
16167 exact orbitPositionTrace_extends_of_toNat_le
16168 orbit_trace_comparable :=
16169 orbitPositionTrace_comparable
16170 orbit_direction_toRat := by
16171 intro p
16172 exact orbitDirection_toRat p
16173 orbit_direction_nonunit_not_crossEq_recip := by
16174 intro p
16175 exact orbitDirection_nonunit_not_crossEq_recip p
16176 orbit_direction_succ_add_one := by
16177 intro p
16178 exact orbitDirection_succ_crossEq_add_one p
16179 ratio_add_right_one_cancel := by
16180 intro a b
16181 exact RatioOrbit.add_right_one_cancel
16182 prime_identity_respects_trace_connected := rfl
16183 prime_identity_respects_common_trace_extension := rfl
16184 prime_identity_respects_canonical_add_trace := rfl
16185 prime_identity_respects_comparable_trace := rfl
16186 orbit_direction_identity := rfl
16187 orbit_direction_reciprocal := rfl
16188 prime_identity_witness_globalizes_nonunit := rfl
16189 orbit_succ_not_unit := by
16190 intro p
16191 exact orbit_succ_not_unit_of_nonzero_not_unit p
16192 orbit_identity_respects_successor_step := rfl
16193 orbit_identity_extends_successor_step := rfl
16194 orbit_identity_contracts_successor_step := rfl
16195 orbit_identity_successor_transport := rfl
16196 orbit_successor_additive_compat := rfl
16197 nonunit_orbit_local_orientation := rfl
16198 orbit_product_local_orientation := rfl
16199 ratio_mul_congr := by
16200 intro a₁ a₂ b₁ b₂
16201 exact ratioOrbit_mul_congr
16202 ratio_recip_congr := by
16203 intro a b
16204 exact ratioOrbit_recip_congr
16205 ratio_mul_recip_recip :=
16206 ratioOrbit_mul_recip_recip_crossEq_recip_mul
16207 orbit_direction_mul := by
16208 intro a b p
16209 exact orbitDirection_mul_crossEq a b p
16210 orbit_product_display_compatible := rfl
16211 orbit_character_respects_crossEq := rfl
16212 normalizeRatio_canonical_target := PRCNormalizeRatioCanonicalTarget_proved
16213 signed_orbit_sign_canonical := rfl
16214 ratio_reduced_sign_canonical := rfl
16215 signed_ofOrbit_abs_self := signedOrbit_ofOrbit_abs_self
16216 signed_neg_ofOrbit_abs_self := signedOrbit_neg_ofOrbit_abs_self
16217 signedQuotient_signCanonical := by
16218 intro z d
16219 exact signedQuotient_signCanonical_of_divides z d
16220 normalizeRatio_reduced_signCanonical :=
16221 normalizeRatio_reduced_signCanonical
16222 signCanonical_toInt_injective := by
16223 intro z w
16224 exact PRCSignedOrbitSignCanonical.eq_of_toInt_eq
16225 reduced_den_dvd := by
16226 intro q r
16227 exact PRCReducedSignCanonical_den_dvd_of_crossEq
16228 reduced_den_eq := by
16229 intro q r
16230 exact PRCReducedSignCanonical_den_eq_of_crossEq
16231 reduced_num_eq := by
16232 intro q r
16233 exact PRCReducedSignCanonical_num_eq_of_crossEq
16234 reduced_signCanonical_ratio_unique_target :=
16235 PRCReducedSignCanonicalRatioUniqueTarget_proved
16236 reduced_signCanonical_ratio_unique_proved :=
16237 PRCReducedSignCanonicalRatioUniqueTarget_proved
16238 normalizeRatio_canonical_from_reduced_signCanonical_unique :=
16239 PRCNormalizeRatioCanonicalTarget_of_reduced_signCanonical_unique
16240 normalizeRatio_canonical_proved :=
16241 PRCNormalizeRatioCanonicalTarget_proved
16242 orbit_character_crossEq_from_normalizeRatio_canonical := by
16243 intro χ
16244 exact PRCCharacterRespectsCrossEq_of_normalizeRatio_canonical
16245 orbit_product_display_from_crossEq := by
16246 intro χ
16247 exact PRCCharacterOrbitProductDisplayCompatible_of_crossEq_respect
16248 orbit_product_no_mixed_orientation := rfl
16249 nonunit_orbit_orientation_coherent := rfl
16250 no_mixed_nonunit_orbit_orientation := rfl
16251 nonunit_identity_branch_transport := rfl
16252 nonunit_identity_witness_globalizes := rfl
16253 nonunit_reciprocal_branch_transport := rfl
16254 nonunit_branch_transport_pair := rfl
16255 nonunit_identity_respects_comparable_trace := rfl
16256 nonunit_branch_agreement := rfl
16257 nonunit_local_from_coherent := by
16258 intro χ
16259 exact PRCCharacterNonunitOrbitLocalOrientation_of_coherent
16260 no_mixed_nonunit_from_coherent := by
16261 intro χ
16262 exact PRCCharacterNoMixedNonunitOrbitOrientation_of_coherent
16263 orbit_mul_not_unit_left := by
16264 intro p r
16265 exact orbit_mul_not_unit_of_left_not_unit
16266 no_mixed_nonunit_from_product_no_mixed := by
16267 intro χ
16268 exact PRCCharacterNoMixedNonunitOrbitOrientation_of_product_no_mixed
16269 orbit_product_no_mixed_from_no_mixed_nonunit := by
16270 intro χ
16271 exact PRCCharacterOrbitProductNoMixedOrientation_of_no_mixed_nonunit
16272 orbit_product_no_mixed_iff_no_mixed_nonunit := by
16273 intro χ
16274 exact PRCCharacterOrbitProductNoMixedOrientation_iff_no_mixed_nonunit
16275 no_mixed_nonunit_from_identity_branch_transport := by
16276 intro χ
16277 exact PRCCharacterNoMixedNonunitOrbitOrientation_of_identity_branch_transport
16278 orbit_product_no_mixed_from_identity_branch_transport := by
16279 intro χ
16280 exact PRCCharacterOrbitProductNoMixedOrientation_of_identity_branch_transport
16281 nonunit_identity_branch_transport_from_local_no_mixed := by
16282 intro χ
16283 exact PRCCharacterNonunitIdentityBranchTransport_of_local_no_mixed
16284 nonunit_identity_branch_transport_from_coherent := by
16285 intro χ
16286 exact PRCCharacterNonunitIdentityBranchTransport_of_coherent
16287 nonunit_identity_witness_globalizes_from_branch_transport := by
16288 intro χ
16289 exact PRCCharacterNonunitIdentityWitnessGlobalizes_of_branch_transport
16290 nonunit_identity_branch_transport_from_witness_globalizes := by
16291 intro χ
16292 exact PRCCharacterNonunitIdentityBranchTransport_of_witness_globalizes
16293 nonunit_identity_witness_globalizes_iff_branch_transport := by
16294 intro χ
16295 exact PRCCharacterNonunitIdentityWitnessGlobalizes_iff_branch_transport
16296 nonunit_coherent_from_local_identity_witness_globalizes := by
16297 intro χ
16298 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_identity_witness_globalizes
16299 nonunit_identity_witness_globalizes_from_coherent := by
16300 intro χ
16301 exact PRCCharacterNonunitIdentityWitnessGlobalizes_of_coherent
16302 nonunit_reciprocal_branch_transport_from_coherent := by
16303 intro χ
16304 exact PRCCharacterNonunitReciprocalBranchTransport_of_coherent
16305 nonunit_branch_transport_pair_from_coherent := by
16306 intro χ
16307 exact PRCCharacterNonunitBranchTransportPair_of_coherent
16308 nonunit_identity_branch_transport_from_comparable_trace := by
16309 intro χ
16310 exact PRCCharacterNonunitIdentityBranchTransport_of_comparable_trace
16311 nonunit_identity_comparable_trace_from_branch_transport := by
16312 intro χ
16313 exact PRCCharacterNonunitIdentityRespectsComparableTrace_of_branch_transport
16314 nonunit_identity_comparable_trace_iff_branch_transport := by
16315 intro χ
16316 exact PRCCharacterNonunitIdentityRespectsComparableTrace_iff_branch_transport
16317 nonunit_branch_agreement_from_coherent := by
16318 intro χ
16319 exact PRCCharacterNonunitBranchAgreement_of_coherent
16320 nonunit_branch_agreement_from_transport_pair := by
16321 intro χ
16322 exact PRCCharacterNonunitBranchAgreement_of_transport_pair
16323 nonunit_identity_branch_transport_from_branch_agreement := by
16324 intro χ
16325 exact PRCCharacterNonunitIdentityBranchTransport_of_branch_agreement
16326 nonunit_reciprocal_branch_transport_from_branch_agreement := by
16327 intro χ
16328 exact PRCCharacterNonunitReciprocalBranchTransport_of_branch_agreement
16329 nonunit_branch_transport_pair_from_branch_agreement := by
16330 intro χ
16331 exact PRCCharacterNonunitBranchTransportPair_of_branch_agreement
16332 nonunit_branch_agreement_iff_transport_pair := by
16333 intro χ
16334 exact PRCCharacterNonunitBranchAgreement_iff_transport_pair
16335 nonunit_branch_agreement_from_local_identity_branch_transport := by
16336 intro χ
16337 exact PRCCharacterNonunitBranchAgreement_of_local_identity_branch_transport
16338 nonunit_coherent_from_local_branch_agreement := by
16339 intro χ
16340 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_branch_agreement
16341 nonunit_branch_agreement_iff_coherent_of_local := by
16342 intro χ
16343 exact PRCCharacterNonunitBranchAgreement_iff_coherent_of_local
16344 nonunit_coherent_from_local_no_mixed := by
16345 intro χ
16346 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_no_mixed
16347 nonunit_coherent_from_local_identity_branch_transport := by
16348 intro χ
16349 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_identity_branch_transport
16350 orbit_product_no_mixed_from_nonunit_coherent := by
16351 intro χ
16352 exact PRCCharacterOrbitProductNoMixedOrientation_of_nonunit_coherent
16353 orbit_product_identity_identity := by
16354 intro χ
16355 exact PRCCharacterOrbitProductIdentityIdentity
16356 orbit_product_reciprocal_reciprocal := by
16357 intro χ
16358 exact PRCCharacterOrbitProductReciprocalReciprocal
16359 nonunit_all_identity_from_all_prime_identity := by
16360 intro χ
16361 exact PRCCharacterNonunitOrbitAllIdentity_of_all_prime_identity
16362 nonunit_all_reciprocal_from_all_prime_reciprocal := by
16363 intro χ
16364 exact PRCCharacterNonunitOrbitAllReciprocal_of_all_prime_reciprocal
16365 mixed_identity_reflects_prime_from_prime_local := by
16366 intro χ
16367 exact PRCCharacterMixedNonunitIdentityWitnessReflectsPrimeWitness_of_prime_local
16368 mixed_reciprocal_reflects_prime_from_prime_local := by
16369 intro χ
16370 exact PRCCharacterMixedNonunitReciprocalWitnessReflectsPrimeWitness_of_prime_local
16371 orbit_product_local_from_display_nomix := by
16372 intro χ
16373 exact PRCCharacterOrbitProductLocalOrientationPropagates_of_display_compatible_nomix
16374 nonunit_local_from_prime_product := by
16375 intro χ
16376 exact PRCCharacterNonunitOrbitLocalOrientation_of_prime_and_product_local
16377 prime_floor_no_adjacent_mixed_orientation := rfl
16378 prime_floor_no_adjacent_from_nonunit_coherent := by
16379 intro χ
16380 exact PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_nonunit_coherent
16381 prime_floor_orbit_identity_extends_successor_step := rfl
16382 prime_floor_orbit_identity_contracts_successor_step := rfl
16383 prime_floor_orbit_identity_successor_transport := rfl
16384 prime_floor_extends_from_local_adjacent_nomix := by
16385 intro χ
16386 exact PRCCharacterPrimeFloorOrbitIdentityExtendsSuccessorStep_of_local_adjacent_nomix
16387 prime_floor_contracts_from_local_adjacent_nomix := by
16388 intro χ
16389 exact PRCCharacterPrimeFloorOrbitIdentityContractsSuccessorStep_of_local_adjacent_nomix
16390 prime_floor_successor_transport_from_local_adjacent_nomix := by
16391 intro χ
16392 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_local_adjacent_nomix
16393 prime_floor_no_adjacent_from_successor_transport := by
16394 intro χ
16395 exact PRCCharacterPrimeFloorNoAdjacentMixedOrientation_of_successor_transport
16396 prime_floor_successor_transport_iff_local_adjacent_nomix := by
16397 intro χ
16398 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_iff_local_adjacent_nomix
16399 prime_floor_successor_transport_from_nonunit_identity_comparable_trace := by
16400 intro χ
16401 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_nonunit_identity_comparable_trace
16402 prime_identity_comparable_from_prime_floor_successor_transport := by
16403 intro χ
16404 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_prime_floor_successor_transport
16405 nonunit_identity_comparable_from_prime_floor_successor_transport := by
16406 intro χ
16407 exact PRCCharacterNonunitIdentityRespectsComparableTrace_of_prime_floor_successor_transport
16408 nonunit_coherent_from_local_prime_floor_successor_transport := by
16409 intro χ
16410 exact PRCCharacterNonunitOrbitOrientationCoherent_of_local_and_prime_floor_successor_transport
16411 prime_identity_witness_globalizes_nonunit_from_successor_transport := by
16412 intro χ
16413 exact PRCCharacterPrimeIdentityWitnessGlobalizesNonunit_of_prime_floor_successor_transport
16414 prime_floor_successor_transport_from_prime_identity_witness_globalizes := by
16415 intro χ
16416 exact PRCCharacterPrimeFloorOrbitIdentitySuccessorTransport_of_prime_identity_witness_globalizes
16417 prime_identity_witness_globalizes_nonunit_from_no_mixed_prime_witnesses := by
16418 intro χ
16419 exact PRCCharacterPrimeIdentityWitnessGlobalizesNonunit_of_no_mixed_prime_witnesses
16420 no_mixed_prime_witnesses_from_prime_identity_witness_globalizes := by
16421 intro χ
16422 exact PRCCharacterNoMixedPrimeWitnesses_of_prime_identity_witness_globalizes
16423 orbit_identity_extends_from_additive_compat := by
16424 intro χ
16425 exact PRCCharacterOrbitIdentityExtendsSuccessorStep_of_additive_compat
16426 orbit_identity_contracts_from_additive_compat := by
16427 intro χ
16428 exact PRCCharacterOrbitIdentityContractsSuccessorStep_of_additive_compat
16429 orbit_identity_successor_transport_from_additive_compat := by
16430 intro χ
16431 exact PRCCharacterOrbitIdentitySuccessorTransport_of_additive_compat
16432 orbit_identity_respects_successor_step_from_transport := by
16433 intro χ
16434 exact PRCCharacterOrbitIdentityRespectsSuccessorStep_of_transport
16435 orbit_identity_one_of_identity := by
16436 intro χ
16437 exact PRCCharacterOrbitIdentity_one_of_identity
16438 orbit_identity_of_one := by
16439 intro χ
16440 exact PRCCharacterOrbitIdentity_of_one
16441 prime_identity_comparable_from_successor_step := by
16442 intro χ
16443 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_successor_step
16444 target_prime_identity_comparable_trace_from_nonunit_identity_comparable :=
16445 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_nonunit_identity_comparable_trace
16446 target_nonunit_identity_comparable_trace_from_prime_identity_comparable :=
16447 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_identity_comparable_trace
16448 target_prime_identity_comparable_trace_iff_nonunit_identity_comparable :=
16449 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_iff_nonunit_identity_comparable_trace
16450 target_prime_identity_comparable_trace_iff_prime_floor_successor_transport :=
16451 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_iff_prime_floor_successor_transport
16452 prime_identity_common_trace_from_comparable_trace := by
16453 intro χ
16454 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_comparable_trace
16455 prime_identity_canonical_add_trace_from_common_trace := by
16456 intro χ
16457 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_common_trace_extension
16458 prime_identity_common_trace_from_canonical_add_trace := by
16459 intro χ
16460 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_canonical_add_trace
16461 prime_identity_canonical_add_trace_iff_common_trace := by
16462 intro χ
16463 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_iff_common_trace_extension
16464 prime_identity_canonical_add_trace_from_trace_connected := by
16465 intro χ
16466 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_trace_connected
16467 prime_identity_trace_connected_from_canonical_add_trace := by
16468 intro χ
16469 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_canonical_add_trace
16470 prime_identity_canonical_add_trace_iff_trace_connected := by
16471 intro χ
16472 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_iff_trace_connected
16473 prime_identity_branch_uniform_from_trace_coherence := by
16474 intro χ
16475 exact PRCCharacterPrimeIdentityBranchUniform_of_trace_coherence
16476 prime_identity_trace_coherence_from_branch_uniform := by
16477 intro χ
16478 exact PRCCharacterPrimeIdentityTraceCoherent_of_branch_uniform
16479 prime_identity_branch_uniform_iff_trace_coherence := by
16480 intro χ
16481 exact PRCCharacterPrimeIdentityBranchUniform_iff_trace_coherence
16482 prime_identity_canonical_add_trace_from_branch_uniform := by
16483 intro χ
16484 exact PRCCharacterPrimeIdentityRespectsCanonicalAddTrace_of_branch_uniform
16485 prime_identity_branch_uniform_from_canonical_add_trace := by
16486 intro χ
16487 exact PRCCharacterPrimeIdentityBranchUniform_of_canonical_add_trace
16488 prime_identity_branch_uniform_iff_canonical_add_trace := by
16489 intro χ
16490 exact PRCCharacterPrimeIdentityBranchUniform_iff_canonical_add_trace
16491 prime_no_mixed_from_branch_uniform := by
16492 intro χ
16493 exact PRCCharacterNoMixedPrimeOrientation_of_branch_uniform
16494 prime_identity_branch_uniform_from_local_no_mixed := by
16495 intro χ
16496 exact PRCCharacterPrimeIdentityBranchUniform_of_local_no_mixed_prime_orientation
16497 prime_identity_trace_connected_from_common_trace := by
16498 intro χ
16499 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_common_trace_extension
16500 prime_identity_comparable_trace_from_trace_coherence := by
16501 intro χ
16502 exact PRCCharacterPrimeIdentityRespectsComparableTrace_of_trace_coherence
16503 prime_identity_trace_coherence_from_comparable_trace := by
16504 intro χ
16505 exact PRCCharacterPrimeIdentityTraceCoherent_of_comparable_trace
16506 prime_identity_comparable_trace_iff_trace_coherence := by
16507 intro χ
16508 exact PRCCharacterPrimeIdentityRespectsComparableTrace_iff_trace_coherence
16509 prime_identity_common_trace_from_trace_coherence := by
16510 intro χ
16511 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_of_trace_coherence
16512 prime_identity_trace_coherence_from_common_trace := by
16513 intro χ
16514 exact PRCCharacterPrimeIdentityTraceCoherent_of_common_trace_extension
16515 prime_identity_common_trace_iff_trace_coherence := by
16516 intro χ
16517 exact PRCCharacterPrimeIdentityRespectsCommonTraceExtension_iff_trace_coherence
16518 prime_identity_trace_connected_from_trace_coherence := by
16519 intro χ
16520 exact PRCCharacterPrimeIdentityRespectsTraceConnected_of_trace_coherence
16521 prime_identity_trace_coherence_from_trace_connected := by
16522 intro χ
16523 exact PRCCharacterPrimeIdentityTraceCoherent_of_trace_connected
16524 prime_identity_trace_connected_iff_trace_coherence := by
16525 intro χ
16526 exact PRCCharacterPrimeIdentityRespectsTraceConnected_iff_trace_coherence
16527 prime_to_local_orientation_target :=
16528 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved
16529 prime_to_local_orientation_proved :=
16530 PRCPrimeCalibrationForcesLocalPrimeOrientationTarget_proved
16531 prime_no_mixed_orientation_target_refuted :=
16532 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_refuted
16533 prime_identity_trace_coherence_target_refuted :=
16534 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_refuted
16535 prime_identity_branch_uniformity_target_refuted :=
16536 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_refuted
16537 prime_identity_trace_transport_target_refuted :=
16538 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_refuted
16539 prime_identity_common_trace_extension_target_refuted :=
16540 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_refuted
16541 prime_identity_canonical_add_trace_target_refuted :=
16542 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_refuted
16543 prime_identity_comparable_trace_target_refuted :=
16544 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_refuted
16545 orbit_successor_identity_target_refuted :=
16546 PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget_refuted
16547 orbit_successor_transport_target_refuted :=
16548 PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget_refuted
16549 orbit_successor_additive_compat_target_refuted :=
16550 PRCPrimeCalibrationForcesOrbitSuccessorAdditiveCompatibilityTarget_refuted
16551 prime_floor_successor_transport_target_refuted :=
16552 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_refuted
16553 prime_identity_witness_globalizes_nonunit_target_refuted :=
16554 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_refuted
16555 prime_floor_identity_extends_successor_step_target_refuted :=
16556 PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget_refuted
16557 prime_floor_identity_contracts_successor_step_target_refuted :=
16558 PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget_refuted
16559 prime_floor_identity_successor_step_pair_target_refuted :=
16560 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_refuted
16561 prime_floor_nonunit_local_orientation_target_refuted :=
16562 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_refuted
16563 prime_floor_nonunit_product_local_orientation_target_refuted :=
16564 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_refuted
16565 prime_floor_product_display_compatibility_target :=
16566 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
16567 prime_floor_character_crossEq_respect_target :=
16568 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_proved
16569 prime_floor_character_crossEq_from_normalizeRatio_canonical :=
16570 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_of_normalizeRatio_canonical
16571 prime_floor_character_crossEq_from_reduced_signCanonical_unique :=
16572 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_of_reduced_signCanonical_unique
16573 prime_floor_character_crossEq_respect_proved :=
16574 PRCPrimeCalibrationForcesCharacterCrossEqRespectTarget_proved
16575 prime_floor_product_display_from_crossEq_respect :=
16576 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_of_crossEq_respect
16577 prime_floor_product_display_compatibility_proved :=
16578 PRCPrimeCalibrationForcesOrbitProductDisplayCompatibilityTarget_proved
16579 prime_floor_product_no_mixed_orientation_target_refuted :=
16580 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_refuted
16581 prime_floor_nonunit_orbit_orientation_coherent_target_refuted :=
16582 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_refuted
16583 prime_floor_no_mixed_nonunit_orbit_orientation_target_refuted :=
16584 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_refuted
16585 prime_floor_nonunit_identity_branch_transport_target_refuted :=
16586 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_refuted
16587 prime_floor_nonunit_identity_witness_globalizes_target_refuted :=
16588 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_refuted
16589 prime_floor_nonunit_identity_witness_excludes_reciprocal_target_refuted :=
16590 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_refuted
16591 prime_floor_nonunit_no_mixed_witnesses_target_refuted :=
16592 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_refuted
16593 prime_floor_no_mixed_prime_witnesses_target_refuted :=
16594 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_refuted
16595 prime_floor_prime_identity_witness_excludes_reciprocal_target_refuted :=
16596 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_refuted
16597 prime_floor_prime_reciprocal_witness_globalizes_target_refuted :=
16598 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_refuted
16599 prime_floor_prime_reciprocal_forces_two_prime_reciprocal_target_refuted :=
16600 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_refuted
16601 prime_floor_prime_reciprocal_witness_globalizes_split_target_refuted :=
16602 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_refuted
16603 two_prime_reciprocal_excludes_prime_identity_witness_target_refuted :=
16604 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_refuted
16605 two_prime_reciprocal_identity_prime_mixed_character := rfl
16606 prime_floor_prime_witnesses_control_nonunit_target :=
16607 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_proved
16608 prime_floor_mixed_nonunit_witnesses_reflect_prime_target :=
16609 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_proved
16610 prime_floor_mixed_nonunit_identity_witness_reflects_prime_target :=
16611 PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget_proved
16612 prime_floor_mixed_nonunit_reciprocal_witness_reflects_prime_target :=
16613 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget_proved
16614 prime_floor_mixed_nonunit_witnesses_reflect_prime_split_target :=
16615 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_proved
16616 prime_floor_nonunit_no_mixed_witnesses_split_target_refuted :=
16617 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_refuted
16618 prime_floor_nonunit_identity_witness_local_exclusion_target_refuted :=
16619 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget_refuted
16620 prime_floor_nonunit_identity_comparable_trace_target_refuted :=
16621 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_refuted
16622 prime_floor_nonunit_orbit_orientation_local_no_mixed_target_refuted :=
16623 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_refuted
16624 prime_floor_nonunit_orbit_orientation_local_product_no_mixed_target_refuted :=
16625 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalProductNoMixedTarget_refuted
16626 prime_floor_no_mixed_nonunit_from_coherent :=
16627 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_coherent
16628 prime_floor_no_mixed_nonunit_from_product_no_mixed :=
16629 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_product_no_mixed
16630 prime_floor_product_no_mixed_from_no_mixed_nonunit :=
16631 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_no_mixed_nonunit
16632 prime_floor_product_no_mixed_iff_no_mixed_nonunit :=
16633 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_no_mixed_nonunit
16634 prime_floor_product_no_mixed_from_identity_branch_transport :=
16635 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_branch_transport
16636 prime_floor_nonunit_identity_branch_transport_from_comparable_trace :=
16637 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_comparable_trace
16638 prime_floor_nonunit_identity_branch_transport_from_coherent :=
16639 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_coherent
16640 prime_floor_nonunit_local_no_mixed_from_local_product_no_mixed :=
16641 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_of_local_product_no_mixed
16642 prime_floor_nonunit_coherent_from_local_product_no_mixed :=
16643 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_product_no_mixed
16644 prime_floor_nonunit_coherent_from_product_no_mixed :=
16645 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_product_no_mixed
16646 prime_floor_product_no_mixed_iff_nonunit_coherent :=
16647 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_nonunit_coherent
16648 prime_floor_nonunit_identity_branch_transport_from_product_no_mixed :=
16649 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_product_no_mixed
16650 prime_floor_product_no_mixed_iff_identity_branch_transport :=
16651 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_branch_transport
16652 prime_floor_identity_witness_globalizes_from_identity_branch_transport :=
16653 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_identity_branch_transport
16654 prime_floor_identity_branch_transport_from_identity_witness_globalizes :=
16655 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_of_identity_witness_globalizes
16656 prime_floor_identity_witness_globalizes_iff_identity_branch_transport :=
16657 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_iff_identity_branch_transport
16658 prime_floor_identity_witness_globalizes_from_product_no_mixed :=
16659 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_product_no_mixed
16660 prime_floor_product_no_mixed_from_identity_witness_globalizes :=
16661 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_identity_witness_globalizes
16662 prime_floor_product_no_mixed_iff_identity_witness_globalizes :=
16663 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_witness_globalizes
16664 prime_floor_nonunit_coherent_from_identity_witness_globalizes :=
16665 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_identity_witness_globalizes
16666 prime_floor_identity_witness_globalizes_from_nonunit_coherent :=
16667 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_nonunit_coherent
16668 prime_floor_nonunit_coherent_iff_identity_witness_globalizes :=
16669 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_identity_witness_globalizes
16670 prime_floor_identity_witness_excludes_reciprocal_from_no_mixed :=
16671 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_of_no_mixed
16672 prime_floor_no_mixed_from_identity_witness_excludes_reciprocal :=
16673 PRCPrimeCalibrationForcesNoMixedNonunitOrbitOrientationTarget_of_identity_witness_excludes
16674 prime_floor_identity_witness_excludes_reciprocal_iff_no_mixed :=
16675 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_iff_no_mixed
16676 prime_floor_no_mixed_witnesses_from_identity_witness_excludes_reciprocal :=
16677 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_identity_witness_excludes
16678 prime_floor_identity_witness_excludes_reciprocal_from_no_mixed_witnesses :=
16679 PRCPrimeCalibrationForcesNonunitIdentityWitnessExcludesReciprocalTarget_of_no_mixed_witnesses
16680 prime_floor_no_mixed_witnesses_iff_identity_witness_excludes_reciprocal :=
16681 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_identity_witness_excludes
16682 prime_floor_no_mixed_prime_witnesses_from_no_mixed_prime_orientation :=
16683 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_no_mixed_prime_orientation
16684 prime_floor_no_mixed_prime_orientation_from_no_mixed_prime_witnesses :=
16685 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_no_mixed_prime_witnesses
16686 prime_floor_no_mixed_prime_witnesses_iff_no_mixed_prime_orientation :=
16687 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_no_mixed_prime_orientation
16688 prime_floor_prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_orientation :=
16689 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_of_no_mixed_prime_orientation
16690 prime_floor_no_mixed_prime_orientation_from_identity_witness_excludes_reciprocal :=
16691 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_identity_witness_excludes_reciprocal
16692 prime_floor_prime_identity_witness_excludes_reciprocal_iff_no_mixed_prime_orientation :=
16693 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_iff_no_mixed_prime_orientation
16694 prime_floor_no_mixed_prime_witnesses_from_identity_witness_excludes_reciprocal :=
16695 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_identity_witness_excludes_reciprocal
16696 prime_floor_prime_identity_witness_excludes_reciprocal_from_no_mixed_prime_witnesses :=
16697 PRCPrimeCalibrationForcesPrimeIdentityWitnessExcludesReciprocalTarget_of_no_mixed_prime_witnesses
16698 prime_floor_no_mixed_prime_witnesses_iff_identity_witness_excludes_reciprocal :=
16699 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_identity_witness_excludes_reciprocal
16700 prime_floor_prime_reciprocal_witness_globalizes_from_no_mixed_prime_orientation :=
16701 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_of_no_mixed_prime_orientation
16702 prime_floor_no_mixed_prime_orientation_from_reciprocal_witness_globalizes :=
16703 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_reciprocal_witness_globalizes
16704 prime_floor_prime_reciprocal_witness_globalizes_iff_no_mixed_prime_orientation :=
16705 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_no_mixed_prime_orientation
16706 prime_floor_prime_reciprocal_witness_globalizes_iff_identity_witness_excludes_reciprocal :=
16707 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_identity_witness_excludes_reciprocal
16708 prime_floor_prime_reciprocal_forces_two_from_reciprocal_witness_globalizes :=
16709 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_reciprocal_witness_globalizes
16710 prime_floor_two_prime_reciprocal_forces_from_reciprocal_witness_globalizes :=
16711 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_reciprocal_witness_globalizes
16712 prime_floor_prime_reciprocal_witness_globalizes_split_from_reciprocal_witness_globalizes :=
16713 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_of_reciprocal_witness_globalizes
16714 prime_floor_prime_reciprocal_witness_globalizes_from_split :=
16715 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_of_split
16716 prime_floor_prime_reciprocal_witness_globalizes_iff_split :=
16717 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesTarget_iff_split
16718 prime_floor_prime_reciprocal_forces_two_from_identity_forces_two :=
16719 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_of_identity_forces_two
16720 prime_floor_prime_identity_forces_two_from_reciprocal_forces_two :=
16721 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_prime_reciprocal_forces_two
16722 prime_floor_prime_reciprocal_forces_two_iff_identity_forces_two :=
16723 PRCPrimeCalibrationForcesPrimeReciprocalForcesTwoPrimeReciprocalTarget_iff_identity_forces_two
16724 prime_floor_two_prime_reciprocal_excludes_identity_witness_from_excludes :=
16725 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_two_prime_reciprocal_excludes
16726 prime_floor_two_prime_reciprocal_excludes_from_identity_witness_excludes :=
16727 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_witness
16728 prime_floor_two_prime_reciprocal_excludes_iff_identity_witness_excludes :=
16729 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_iff_witness
16730 prime_floor_prime_identity_forces_two_from_two_prime_reciprocal_excludes_identity_witness :=
16731 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes_witness
16732 prime_floor_two_prime_reciprocal_excludes_identity_witness_from_identity_forces_two :=
16733 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_identity_forces_two
16734 prime_floor_prime_identity_forces_two_iff_two_prime_reciprocal_excludes_identity_witness :=
16735 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes_witness
16736 prime_floor_two_prime_reciprocal_excludes_identity_witness_from_no_mixed_character :=
16737 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_of_no_mixed_character
16738 prime_floor_no_mixed_character_from_two_prime_reciprocal_excludes_identity_witness :=
16739 PRCPrimeCalibratedTwoPrimeReciprocalIdentityPrimeMixedCharacter_absurd_of_witness_excludes
16740 prime_floor_two_prime_reciprocal_excludes_identity_witness_iff_no_mixed_character :=
16741 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityWitnessTarget_iff_no_mixed_character
16742 prime_floor_prime_reciprocal_witness_globalizes_split_from_two_prime_reciprocal_forces :=
16743 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_of_two_prime_reciprocal_forces
16744 prime_floor_two_prime_reciprocal_forces_from_split :=
16745 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_split
16746 prime_floor_prime_reciprocal_witness_globalizes_split_iff_two_prime_reciprocal_forces :=
16747 PRCPrimeCalibrationForcesPrimeReciprocalWitnessGlobalizesSplitTarget_iff_two_prime_reciprocal_forces
16748 prime_identity_trace_coherence_from_no_mixed_prime_orientation :=
16749 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_no_mixed_prime_orientation
16750 prime_no_mixed_prime_orientation_iff_trace_coherence :=
16751 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_iff_trace_coherence
16752 prime_no_mixed_prime_witnesses_iff_trace_coherence :=
16753 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_trace_coherence
16754 coherent_prime_orientation_from_no_mixed_prime_witnesses :=
16755 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_no_mixed_prime_witnesses
16756 no_mixed_prime_witnesses_from_coherent_prime_orientation :=
16757 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_coherent_prime_orientation
16758 no_mixed_prime_witnesses_iff_coherent_prime_orientation :=
16759 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_iff_coherent_prime_orientation
16760 two_prime_branch_controls_target_refuted :=
16761 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_refuted
16762 two_prime_branch_controls_from_coherent_prime_orientation :=
16763 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_coherent_prime_orientation
16764 coherent_prime_orientation_from_two_prime_branch_controls :=
16765 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_two_prime_branch_controls
16766 coherent_prime_orientation_iff_two_prime_branch_controls :=
16767 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_iff_two_prime_branch_controls
16768 prime_identity_iff_two_prime_identity_target_refuted :=
16769 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_refuted
16770 prime_identity_forces_two_prime_identity_target_refuted :=
16771 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_refuted
16772 two_prime_reciprocal_excludes_prime_identity_target_refuted :=
16773 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_refuted
16774 two_prime_reciprocal_forces_prime_reciprocal_target_refuted :=
16775 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_refuted
16776 two_prime_reciprocal_trace_connected_target_refuted :=
16777 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_refuted
16778 two_prime_identity_trace_connected_target_refuted :=
16779 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_refuted
16780 prime_identity_iff_two_from_two_prime_branch_controls :=
16781 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_two_prime_branch_controls
16782 two_prime_branch_controls_from_prime_identity_iff_two :=
16783 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_of_prime_identity_iff_two
16784 two_prime_branch_controls_iff_prime_identity_iff_two :=
16785 PRCPrimeCalibrationForcesTwoPrimeBranchControlsPrimesTarget_iff_prime_identity_iff_two
16786 prime_identity_forces_two_from_identity_iff_two_target :=
16787 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_identity_iff_two
16788 prime_identity_iff_two_from_identity_forces_two_target :=
16789 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_of_identity_forces_two
16790 prime_identity_iff_two_iff_identity_forces_two :=
16791 PRCPrimeCalibrationForcesPrimeIdentityIffTwoPrimeIdentityTarget_iff_identity_forces_two
16792 two_prime_reciprocal_excludes_from_identity_forces_two_target :=
16793 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_identity_forces_two
16794 prime_identity_forces_two_from_two_prime_reciprocal_excludes_target :=
16795 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_excludes
16796 prime_identity_forces_two_target_iff_two_prime_reciprocal_excludes :=
16797 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_iff_two_prime_reciprocal_excludes
16798 two_prime_reciprocal_excludes_from_two_prime_reciprocal_forces_target :=
16799 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_of_two_prime_reciprocal_forces
16800 two_prime_reciprocal_forces_from_two_prime_reciprocal_excludes_target :=
16801 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_two_prime_reciprocal_excludes
16802 two_prime_reciprocal_excludes_target_iff_two_prime_reciprocal_forces :=
16803 PRCPrimeCalibrationForcesTwoPrimeReciprocalExcludesPrimeIdentityTarget_iff_two_prime_reciprocal_forces
16804 two_prime_reciprocal_forces_from_identity_forces_two_target :=
16805 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_identity_forces_two
16806 prime_identity_forces_two_from_two_prime_reciprocal_forces_target :=
16807 PRCPrimeCalibrationForcesPrimeIdentityForcesTwoPrimeIdentityTarget_of_two_prime_reciprocal_forces
16808 two_prime_reciprocal_forces_target_iff_identity_forces_two :=
16809 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_iff_identity_forces_two
16810 two_prime_reciprocal_forces_from_trace_connected_target :=
16811 PRCPrimeCalibrationForcesTwoPrimeReciprocalForcesPrimeReciprocalTarget_of_trace_connected
16812 two_prime_reciprocal_trace_connected_from_forces_target :=
16813 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_forces
16814 two_prime_reciprocal_trace_connected_target_iff_forces :=
16815 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_iff_forces
16816 two_prime_reciprocal_trace_connected_from_identity_trace_connected_target :=
16817 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_of_identity_trace_connected
16818 two_prime_identity_trace_connected_from_reciprocal_trace_connected_target :=
16819 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_of_reciprocal_trace_connected
16820 two_prime_reciprocal_trace_connected_target_iff_identity_trace_connected :=
16821 PRCPrimeCalibrationForcesTwoPrimeReciprocalTraceConnectedTarget_iff_identity_trace_connected
16822 two_prime_identity_trace_connected_from_prime_identity_trace_transport_target :=
16823 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_of_prime_identity_trace_transport
16824 prime_identity_trace_transport_from_two_prime_identity_trace_connected_target :=
16825 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_two_prime_identity_trace_connected
16826 two_prime_identity_trace_connected_target_iff_prime_identity_trace_transport :=
16827 PRCPrimeCalibrationForcesTwoPrimeIdentityTraceConnectedTarget_iff_prime_identity_trace_transport
16828 prime_floor_no_mixed_prime_witnesses_from_nonunit_no_mixed_witnesses :=
16829 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_nonunit_no_mixed_witnesses
16830 prime_floor_nonunit_no_mixed_witnesses_split_from_nonunit_no_mixed_witnesses :=
16831 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_of_nonunit_no_mixed_witnesses
16832 prime_floor_nonunit_no_mixed_witnesses_from_split :=
16833 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_split
16834 prime_floor_nonunit_no_mixed_witnesses_iff_split :=
16835 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_split
16836 prime_floor_prime_witnesses_control_from_mixed_reflects :=
16837 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_of_mixed_reflects
16838 prime_floor_mixed_reflects_from_prime_witnesses_control :=
16839 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_prime_control
16840 prime_floor_prime_witnesses_control_iff_mixed_reflects :=
16841 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_iff_mixed_reflects
16842 prime_floor_mixed_reflection_split_from_reflects :=
16843 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_of_reflects
16844 prime_floor_mixed_reflection_from_split :=
16845 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_of_split
16846 prime_floor_mixed_reflection_iff_split :=
16847 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_iff_split
16848 prime_floor_mixed_identity_reflects_prime_proved :=
16849 PRCPrimeCalibrationForcesMixedNonunitIdentityWitnessReflectsPrimeWitnessTarget_proved
16850 prime_floor_mixed_reciprocal_reflects_prime_proved :=
16851 PRCPrimeCalibrationForcesMixedNonunitReciprocalWitnessReflectsPrimeWitnessTarget_proved
16852 prime_floor_mixed_reflection_split_proved :=
16853 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesSplitTarget_proved
16854 prime_floor_mixed_reflection_proved :=
16855 PRCPrimeCalibrationForcesMixedNonunitWitnessesReflectPrimeWitnessesTarget_proved
16856 prime_floor_prime_witnesses_control_nonunit_proved :=
16857 PRCPrimeCalibrationForcesPrimeWitnessesControlNonunitWitnessesTarget_proved
16858 prime_floor_nonunit_no_mixed_split_from_no_mixed_prime_witnesses :=
16859 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesSplitTarget_of_no_mixed_prime_witnesses
16860 prime_floor_nonunit_no_mixed_from_no_mixed_prime_witnesses :=
16861 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_of_no_mixed_prime_witnesses
16862 prime_floor_nonunit_no_mixed_iff_no_mixed_prime_witnesses :=
16863 PRCPrimeCalibrationForcesNonunitNoMixedWitnessesTarget_iff_no_mixed_prime_witnesses
16864 prime_floor_identity_witness_globalizes_from_local_exclusion :=
16865 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_of_local_exclusion
16866 prime_floor_identity_witness_local_exclusion_from_globalizes :=
16867 PRCPrimeCalibrationForcesNonunitIdentityWitnessLocalExclusionTarget_of_identity_witness_globalizes
16868 prime_floor_identity_witness_globalizes_iff_local_exclusion :=
16869 PRCPrimeCalibrationForcesNonunitIdentityWitnessGlobalizesTarget_iff_local_exclusion
16870 prime_floor_nonunit_identity_comparable_trace_from_branch_transport :=
16871 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_branch_transport
16872 prime_floor_nonunit_identity_comparable_trace_from_product_no_mixed :=
16873 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_product_no_mixed
16874 prime_floor_nonunit_identity_branch_transport_iff_comparable_trace :=
16875 PRCPrimeCalibrationForcesNonunitIdentityBranchTransportTarget_iff_comparable_trace
16876 prime_floor_product_no_mixed_iff_identity_comparable_trace :=
16877 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_identity_comparable_trace
16878 prime_floor_product_local_orientation_from_identity_comparable_trace :=
16879 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_of_identity_comparable_trace
16880 prime_floor_nonunit_local_orientation_from_identity_comparable_trace :=
16881 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_identity_comparable_trace
16882 prime_floor_nonunit_local_comparable_trace_from_identity_comparable_trace :=
16883 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_of_identity_comparable_trace
16884 prime_floor_nonunit_identity_comparable_trace_from_local_comparable_trace :=
16885 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_local_comparable_trace
16886 prime_floor_nonunit_local_comparable_trace_iff_identity_comparable_trace :=
16887 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalComparableTraceTarget_iff_identity_comparable_trace
16888 prime_floor_nonunit_local_no_mixed_from_coherent :=
16889 PRCPrimeCalibrationForcesNonunitOrbitOrientationLocalNoMixedTarget_of_coherent
16890 prime_floor_nonunit_coherent_from_local_no_mixed :=
16891 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_no_mixed
16892 prime_floor_nonunit_orbit_orientation_coherent_iff_local_no_mixed :=
16893 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_local_no_mixed
16894 prime_floor_nonunit_orbit_orientation_coherent_sharpened_target_refuted :=
16895 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget_refuted
16896 prime_floor_nonunit_orbit_orientation_coherent_from_local_successor_transport :=
16897 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_and_prime_floor_successor_transport
16898 prime_floor_product_no_mixed_from_nonunit_coherent :=
16899 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_nonunit_coherent
16900 prime_floor_nonunit_local_from_nonunit_coherent :=
16901 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_nonunit_coherent
16902 prime_floor_no_adjacent_mixed_from_nonunit_coherent :=
16903 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_of_nonunit_coherent
16904 prime_floor_no_adjacent_mixed_from_successor_transport :=
16905 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_of_successor_transport
16906 prime_floor_successor_transport_from_nonunit_coherent :=
16907 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_nonunit_coherent
16908 prime_floor_nonunit_identity_comparable_trace_from_successor_transport :=
16909 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_prime_floor_successor_transport
16910 prime_floor_nonunit_orbit_orientation_sharpened_from_nonunit_coherent :=
16911 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentSharpenedTarget_of_nonunit_coherent
16912 prime_floor_nonunit_orbit_orientation_coherent_iff_sharpened :=
16913 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_sharpened
16914 prime_floor_successor_transport_from_identity_comparable_trace :=
16915 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_identity_comparable_trace
16916 prime_floor_identity_extends_successor_step_from_successor_transport :=
16917 PRCPrimeCalibrationForcesPrimeFloorIdentityExtendsSuccessorStepTarget_of_successor_transport
16918 prime_floor_identity_contracts_successor_step_from_successor_transport :=
16919 PRCPrimeCalibrationForcesPrimeFloorIdentityContractsSuccessorStepTarget_of_successor_transport
16920 prime_floor_identity_successor_step_pair_from_successor_transport :=
16921 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_successor_transport
16922 prime_floor_successor_transport_from_successor_step_pair :=
16923 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_successor_step_pair
16924 prime_floor_successor_transport_iff_successor_step_pair :=
16925 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_iff_successor_step_pair
16926 target_prime_identity_witness_globalizes_nonunit_from_successor_transport :=
16927 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_of_prime_floor_successor_transport
16928 target_prime_floor_successor_transport_from_prime_identity_witness_globalizes :=
16929 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_prime_identity_witness_globalizes
16930 target_prime_floor_successor_transport_iff_prime_identity_witness_globalizes :=
16931 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_iff_prime_identity_witness_globalizes
16932 target_prime_identity_witness_globalizes_nonunit_from_no_mixed_prime_witnesses :=
16933 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_of_no_mixed_prime_witnesses
16934 target_no_mixed_prime_witnesses_from_prime_identity_witness_globalizes :=
16935 PRCPrimeCalibrationForcesNoMixedPrimeWitnessesTarget_of_prime_identity_witness_globalizes
16936 target_prime_identity_witness_globalizes_nonunit_iff_no_mixed_prime_witnesses :=
16937 PRCPrimeCalibrationForcesPrimeIdentityWitnessGlobalizesNonunitTarget_iff_no_mixed_prime_witnesses
16938 prime_floor_identity_successor_step_pair_from_identity_comparable_trace :=
16939 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_identity_comparable_trace
16940 prime_floor_nonunit_identity_comparable_trace_from_successor_step_pair :=
16941 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_of_successor_step_pair
16942 prime_floor_nonunit_identity_comparable_trace_iff_successor_step_pair :=
16943 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_iff_successor_step_pair
16944 prime_floor_product_no_mixed_from_successor_step_pair :=
16945 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_of_successor_step_pair
16946 prime_floor_identity_successor_step_pair_from_product_no_mixed :=
16947 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_product_no_mixed
16948 prime_floor_product_no_mixed_iff_successor_step_pair :=
16949 PRCPrimeCalibrationForcesOrbitProductNoMixedOrientationTarget_iff_successor_step_pair
16950 prime_floor_nonunit_coherent_from_successor_step_pair :=
16951 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_successor_step_pair
16952 prime_floor_identity_successor_step_pair_from_nonunit_coherent :=
16953 PRCPrimeCalibrationForcesPrimeFloorIdentitySuccessorStepPairTarget_of_nonunit_coherent
16954 prime_floor_nonunit_coherent_iff_successor_step_pair :=
16955 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_iff_successor_step_pair
16956 prime_floor_nonunit_identity_comparable_trace_iff_successor_transport :=
16957 PRCPrimeCalibrationForcesNonunitIdentityComparableTraceTarget_iff_prime_floor_successor_transport
16958 prime_floor_successor_transport_local_adjacent_target_refuted :=
16959 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_refuted
16960 prime_floor_successor_transport_from_local_adjacent_target :=
16961 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_target
16962 prime_floor_local_adjacent_from_local_successor_transport :=
16963 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_of_local_successor_transport
16964 prime_floor_local_adjacent_iff_local_successor_transport :=
16965 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_iff_local_successor_transport
16966 prime_floor_local_adjacent_from_nonunit_coherent :=
16967 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_of_nonunit_coherent
16968 prime_floor_nonunit_coherent_from_local_adjacent :=
16969 PRCPrimeCalibrationForcesNonunitOrbitOrientationCoherentTarget_of_local_adjacent
16970 prime_floor_local_adjacent_iff_nonunit_coherent :=
16971 PRCPrimeFloorSuccessorTransportLocalAdjacentTarget_iff_nonunit_coherent
16972 prime_floor_product_local_orientation_sharpened_target_refuted :=
16973 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationSharpenedTarget_refuted
16974 prime_floor_product_local_orientation_from_display_nomix :=
16975 PRCPrimeCalibrationForcesNonunitOrbitProductLocalOrientationTarget_of_display_compatible_nomix
16976 prime_floor_nonunit_local_orientation_from_product_local :=
16977 PRCPrimeCalibrationForcesNonunitOrbitLocalOrientationTarget_of_product_local_orientation
16978 prime_floor_no_adjacent_mixed_orientation_target_refuted :=
16979 PRCPrimeCalibrationForcesPrimeFloorNoAdjacentMixedOrientationTarget_refuted
16980 prime_floor_successor_transport_sharpened_target_refuted :=
16981 PRCPrimeFloorSuccessorTransportSharpenedTarget_refuted
16982 prime_floor_successor_transport_target_from_local_adjacent_nomix :=
16983 PRCPrimeCalibrationForcesPrimeFloorSuccessorTransportTarget_of_local_adjacent_nomix
16984 orbit_successor_transport_target_from_additive_compat :=
16985 PRCPrimeCalibrationForcesOrbitSuccessorTransportTarget_of_additive_compat
16986 prime_identity_comparable_trace_from_prime_floor_successor_transport :=
16987 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_prime_floor_successor_transport
16988 orbit_successor_identity_target_from_transport :=
16989 PRCPrimeCalibrationForcesOrbitSuccessorIdentityTarget_of_transport
16990 prime_identity_comparable_trace_from_successor_step :=
16991 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_successor_step
16992 prime_identity_common_trace_extension_from_comparable_trace :=
16993 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_comparable_trace
16994 prime_identity_canonical_add_trace_from_common_trace_target :=
16995 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_common_trace_extension
16996 prime_identity_common_trace_from_canonical_add_trace_target :=
16997 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_canonical_add_trace
16998 prime_identity_canonical_add_trace_target_iff_common_trace :=
16999 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_iff_common_trace_extension
17000 prime_identity_canonical_add_trace_from_trace_transport_target :=
17001 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_trace_transport
17002 prime_identity_trace_transport_from_canonical_add_trace_target :=
17003 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_canonical_add_trace
17004 prime_identity_canonical_add_trace_target_iff_trace_transport :=
17005 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_iff_trace_transport
17006 prime_identity_branch_uniformity_from_trace_coherence_target :=
17007 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_trace_coherence
17008 prime_identity_trace_coherence_from_branch_uniformity_target :=
17009 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_branch_uniformity
17010 prime_identity_branch_uniformity_target_iff_trace_coherence :=
17011 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_trace_coherence
17012 prime_identity_canonical_add_trace_from_branch_uniformity_target :=
17013 PRCPrimeCalibrationForcesPrimeIdentityCanonicalAddTraceTarget_of_branch_uniformity
17014 prime_identity_branch_uniformity_from_canonical_add_trace_target :=
17015 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_canonical_add_trace
17016 prime_identity_branch_uniformity_target_iff_canonical_add_trace :=
17017 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_canonical_add_trace
17018 prime_identity_trace_transport_from_common_trace :=
17019 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_common_trace_extension
17020 prime_identity_trace_coherence_from_transport :=
17021 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_trace_transport
17022 target_prime_identity_comparable_trace_from_trace_coherence :=
17023 PRCPrimeCalibrationForcesPrimeIdentityComparableTraceTarget_of_trace_coherence
17024 target_prime_identity_trace_coherence_from_comparable_trace :=
17025 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_comparable_trace
17026 target_prime_identity_trace_coherence_iff_comparable_trace :=
17027 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_comparable_trace
17028 target_prime_identity_common_trace_from_trace_coherence :=
17029 PRCPrimeCalibrationForcesPrimeIdentityCommonTraceExtensionTarget_of_trace_coherence
17030 target_prime_identity_trace_coherence_from_common_trace :=
17031 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_of_common_trace_extension
17032 target_prime_identity_trace_coherence_iff_common_trace :=
17033 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_common_trace_extension
17034 target_prime_identity_trace_transport_from_trace_coherence :=
17035 PRCPrimeCalibrationForcesPrimeIdentityTraceTransportTarget_of_trace_coherence
17036 target_prime_identity_trace_coherence_iff_trace_transport :=
17037 PRCPrimeCalibrationForcesPrimeIdentityTraceCoherenceTarget_iff_trace_transport
17038 prime_no_mixed_from_trace_coherence :=
17039 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_trace_coherence
17040 prime_no_mixed_prime_orientation_from_branch_uniformity :=
17041 PRCPrimeCalibrationForcesNoMixedPrimeOrientationTarget_of_branch_uniformity
17042 prime_identity_branch_uniformity_from_no_mixed_prime_orientation :=
17043 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_of_no_mixed_prime_orientation
17044 prime_identity_branch_uniformity_iff_no_mixed_prime_orientation :=
17045 PRCPrimeCalibrationForcesPrimeIdentityBranchUniformityTarget_iff_no_mixed_prime_orientation
17046 coherent_prime_orientation_reduction :=
17047 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_of_local_and_nomixed
17048 prime_to_coherent_orientation_target_refuted :=
17049 PRCPrimeCalibrationForcesCoherentPrimeOrientationTarget_refuted
17050 coherent_prime_orientation_propagation_target_refuted :=
17051 PRCCoherentPrimeOrientationPropagatesToGlobalTarget_refuted
17052 admissible_prime_orientation_coherent_target :=
17053 PRCAdmissibleCharacterPrimeOrientationCoherentTarget_proved
17054 admissible_signed_unit_calibration_target_refuted :=
17055 PRCAdmissibleCharacterSignedUnitCalibratedTarget_refuted
17056 signed_coherent_prime_orientation_propagation_target :=
17057 PRCSignedCoherentPrimeOrientationPropagatesToGlobalTarget_proved
17058 global_orientation_reduction :=
17059 PRCPrimeCalibrationForcesGlobalOrientationTarget_of_prime_orientation_targets
17060 prime_propagation_sharpened_target_refuted :=
17061 PRCPrimeCalibrationPropagationSharpenedTarget_refuted
17062 prime_propagation_reduction :=
17063 PRCPrimeCalibrationPropagationTarget_of_global_orientation
17064 prime_propagation_sharpened_reduction :=
17065 PRCPrimeCalibrationPropagationTarget_of_sharpened_orientation
17066 rigidity_sharpened_target_refuted :=
17067 PRCNativeCostCharacterRigiditySharpenedTarget_refuted
17068 rigidity_reduction := PRCNativeCostCharacterRigidityTarget_of_prime_targets
17069 identity_character := identity_ratio_character
17070 identity_rigid := identity_character_rigid
17071 identity_orientation := identity_character_global_orientation
17072 identity_prime_orientation_coherent :=
17073 identity_character_prime_orientation_coherent
17074 reciprocal_character := reciprocal_ratio_character
17075 reciprocal_prime_calibrated := reciprocal_character_prime_calibrated
17076 reciprocal_orientation := reciprocal_character_global_orientation
17077 reciprocal_prime_orientation_coherent :=
17078 reciprocal_character_prime_orientation_coherent
17079 sharpened_target := PRCNativeCostUniquenessSharpenedTarget_refuted
17080 reduction := PRCNativeCostUniquenessTarget_of_character_targets
17081 prime_reduction := PRCNativeCostUniquenessTarget_of_prime_character_targets
17082 original_target := PRCNativeCostUniquenessTarget_refuted
17083 original_target_refuted := PRCNativeCostUniquenessTarget_refuted
17084 strength_tag := rfl
17085
17086end PRCJCost
17087end PrimitiveRecognitionCalculus
17088end Foundation
17089end IndisputableMonolith
17090