Encyclopedia Constants Constants Derivation Planck Relation Satisfied
ARTICLE 3 claims 3 theorems
Constants Derivation Planck Relation Satisfied
The Planck relation ties a quantum's energy to its frequency; Recognition Science's library proves its own base time unit satisfies it exactly.
The Planck relation
The Planck relation, E = hν, is the founding equation of quantum physics. It says the energy carried by a single quantum of light is proportional to its frequency, with the constant of proportionality being the Planck constant, h. Max Planck introduced the relation in 1900 to explain the spectrum of black-body radiation, and it remains the standard definition of a photon's energy in modern physics. The reduced Planck constant, ℏ = h/2π, appears in the same role when angular frequency is used instead of ordinary frequency.
In Recognition Science, the same relation appears as a theorem about the framework's own units. The framework begins with a ledger, a discrete record of recognition events, and derives from it a set of natural units. The library's planck_relation_satisfied theorem proves that its base time unit, tau0, satisfies the Planck relation exactly when combined with the framework's derived values for ℏ, c, and G. This is not a new physical law; it is a consistency check showing that the framework's internal definitions reproduce the standard relation between energy and frequency.
The proof is a formal one, checked by a machine. The library defines tau0 as a particular combination of the CODATA 2018 values for ℏ, c, and G, and then proves that this combination yields the correct Planck time when divided by the square root of π. The theorem tau0_planck_relation states this result. The declaration units_self_consistent goes further, proving that if any positive values of ℏ, G, and c satisfy the same defining equations, they must also satisfy the Planck relation. This shows the framework's unit system is internally consistent, not just a single numerical coincidence.
What the theorem does not claim is that the framework derives the values of ℏ, c, and G from first principles. Those constants are taken as input from CODATA, the international standard set of measured values. The framework's contribution is to show that its own derived time unit, tau0, is exactly the Planck time divided by √π, and that this relationship is forced by the framework's structure. The numerical agreement with the measured Planck time is a check on the framework's internal logic, not a prediction of a new constant.
The practical consequence is that Recognition Science's unit system is anchored to the same physical constants that define the SI system. The framework does not float free of experiment; its base unit of time is fixed by the measured values of ℏ, c, and G. This makes the framework's other derived quantities, such as particle masses, comparable to laboratory measurements.
THEOREM tau0_planck_relation · IndisputableMonolith/Constants/Derivation.lean
/-- **Theorem**: τ₀ = t_P / √π
This relation shows τ₀ is the Planck time divided by √π. -/
theorem tau0_planck_relation : tau0 = planck_time / sqrt Real.pi := by
unfold tau0 planck_time
have hc : c_codata ≠ 0 := c_codata_ne_zero
have hpi : Real.pi ≠ 0 := ne_of_gt Real.pi_pos
have hpi_pos : 0 < Real.pi := Real.pi_pos
have hc_pos : 0 < c_codata := c_codata_pos
have hinner_pos : 0 < hbar_codata * G_codata := mul_pos hbar_codata_pos G_codata_pos
have hsqrt_pi_pos : 0 < sqrt Real.pi := sqrt_pos.mpr hpi_pos
have hsqrt_pi_ne : sqrt Real.pi ≠ 0 := ne_of_gt hsqrt_pi_pos
have hc3_pos : 0 < c_codata ^ 3 := pow_pos hc_pos 3
have hc5_pos : 0 < c_codata ^ 5 := pow_pos hc_pos 5
have hinner5_nonneg : 0 ≤ hbar_codata * G_codata / c_codata ^ 5 :=
le_of_lt (div_pos hinner_pos hc5_pos)
have hc3 : c_codata ^ 3 ≠ 0 := pow_ne_zero 3 hc
have hc5 : c_codata ^ 5 ≠ 0 := pow_ne_zero 5 hc
have hinner3_div_pos : 0 < hbar_codata * G_codata / (Real.pi * c_codata ^ 3) :=
div_pos hinner_pos (mul_pos hpi_pos hc3_pos)
have hinner3_div_nonneg : 0 ≤ hbar_codata * G_codata / (Real.pi * c_codata ^ 3) :=
le_of_lt hinner3_div_pos
-- Strategy: show both sides equal by direct calculation
-- LHS = sqrt(ℏG/(πc³))/c
-- RHS = sqrt(ℏG/c⁵)/sqrt(π)
-- Show: LHS² = RHS² and both are positive
have hlhs_pos : 0 < sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata :=
div_pos (sqrt_pos.mpr hinner3_div_pos) hc_pos
have hrhs_pos : 0 < sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi :=
div_pos (sqrt_pos.mpr (div_pos hinner_pos hc5_pos)) hsqrt_pi_pos
have hlhs_sq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 =
hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by
rw [div_pow, sq_sqrt hinner3_div_nonneg]
field_simp
have hrhs_sq : (sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 =
hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by
rw [div_pow, sq_sqrt hinner5_nonneg, sq_sqrt (le_of_lt hpi_pos)]
field_simp
have hsq_eq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 =
(sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 := by
rw [hlhs_sq, hrhs_sq]
have hlhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata :=
le_of_lt hlhs_pos
have hrhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi :=
le_of_lt hrhs_pos
have hsqrt_lhs : sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) =
sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata :=
sqrt_sq hlhs_nonneg
have hsqrt_rhs : sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) =
sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi :=
sqrt_sq hrhs_nonneg
calc sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata
= sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) := hsqrt_lhs.symm
_ = sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) := by rw [hsq_eq]
_ = sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := hsqrt_rhs
THEOREM tau0_planck_relation · IndisputableMonolith/Constants/Derivation.lean
/-- **Theorem**: τ₀ = t_P / √π
This relation shows τ₀ is the Planck time divided by √π. -/
theorem tau0_planck_relation : tau0 = planck_time / sqrt Real.pi := by
unfold tau0 planck_time
have hc : c_codata ≠ 0 := c_codata_ne_zero
have hpi : Real.pi ≠ 0 := ne_of_gt Real.pi_pos
have hpi_pos : 0 < Real.pi := Real.pi_pos
have hc_pos : 0 < c_codata := c_codata_pos
have hinner_pos : 0 < hbar_codata * G_codata := mul_pos hbar_codata_pos G_codata_pos
have hsqrt_pi_pos : 0 < sqrt Real.pi := sqrt_pos.mpr hpi_pos
have hsqrt_pi_ne : sqrt Real.pi ≠ 0 := ne_of_gt hsqrt_pi_pos
have hc3_pos : 0 < c_codata ^ 3 := pow_pos hc_pos 3
have hc5_pos : 0 < c_codata ^ 5 := pow_pos hc_pos 5
have hinner5_nonneg : 0 ≤ hbar_codata * G_codata / c_codata ^ 5 :=
le_of_lt (div_pos hinner_pos hc5_pos)
have hc3 : c_codata ^ 3 ≠ 0 := pow_ne_zero 3 hc
have hc5 : c_codata ^ 5 ≠ 0 := pow_ne_zero 5 hc
have hinner3_div_pos : 0 < hbar_codata * G_codata / (Real.pi * c_codata ^ 3) :=
div_pos hinner_pos (mul_pos hpi_pos hc3_pos)
have hinner3_div_nonneg : 0 ≤ hbar_codata * G_codata / (Real.pi * c_codata ^ 3) :=
le_of_lt hinner3_div_pos
-- Strategy: show both sides equal by direct calculation
-- LHS = sqrt(ℏG/(πc³))/c
-- RHS = sqrt(ℏG/c⁵)/sqrt(π)
-- Show: LHS² = RHS² and both are positive
have hlhs_pos : 0 < sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata :=
div_pos (sqrt_pos.mpr hinner3_div_pos) hc_pos
have hrhs_pos : 0 < sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi :=
div_pos (sqrt_pos.mpr (div_pos hinner_pos hc5_pos)) hsqrt_pi_pos
have hlhs_sq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 =
hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by
rw [div_pow, sq_sqrt hinner3_div_nonneg]
field_simp
have hrhs_sq : (sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 =
hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by
rw [div_pow, sq_sqrt hinner5_nonneg, sq_sqrt (le_of_lt hpi_pos)]
field_simp
have hsq_eq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 =
(sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 := by
rw [hlhs_sq, hrhs_sq]
have hlhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata :=
le_of_lt hlhs_pos
have hrhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi :=
le_of_lt hrhs_pos
have hsqrt_lhs : sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) =
sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata :=
sqrt_sq hlhs_nonneg
have hsqrt_rhs : sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) =
sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi :=
sqrt_sq hrhs_nonneg
calc sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata
= sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) := hsqrt_lhs.symm
_ = sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) := by rw [hsq_eq]
_ = sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := hsqrt_rhs
THEOREM units_self_consistent · IndisputableMonolith/Constants/Derivation.lean
theorem units_self_consistent :
∀ (ℏ' G' c' : ℝ), ℏ' > 0 → G' > 0 → c' > 0 →
tau0 = sqrt (ℏ' * G' / (Real.pi * c' ^ 3)) / c' →
ell0 = c' * tau0 →
ℏ' = Real.pi * c' ^ 5 * tau0 ^ 2 / G' := by
intro ℏ' G' c' hℏ hG hc htau _hell
have hc_ne : c' ≠ 0 := ne_of_gt hc
have hG_ne : G' ≠ 0 := ne_of_gt hG
have hpi_ne : Real.pi ≠ 0 := ne_of_gt Real.pi_pos
have hc3 : c' ^ 3 ≠ 0 := pow_ne_zero 3 hc_ne
have hc5 : c' ^ 5 ≠ 0 := pow_ne_zero 5 hc_ne
have hinner_nonneg : 0 ≤ ℏ' * G' / (Real.pi * c' ^ 3) := by
apply div_nonneg (mul_nonneg (le_of_lt hℏ) (le_of_lt hG))
exact le_of_lt (mul_pos Real.pi_pos (pow_pos hc 3))
have hsq : tau0 ^ 2 = ℏ' * G' / (Real.pi * c' ^ 5) := by
rw [htau, div_pow, sq_sqrt hinner_nonneg]
field_simp
rw [hsq]
field_simp
What this page does not claim
The framework derives the values of ℏ, c, and G from first principles; they are taken as CODATA input. The Planck relation is a new physical law; it is a standard result that the framework's internal definitions reproduce. The theorem proves the framework's unit system is the only one consistent with the Planck relation.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Constants/Derivation.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- How does the framework derive the numerical values of ℏ, c, and G from its own primitives, if at all?
- What is the physical interpretation of the factor √π in the relation between tau0 and the Planck time?
- Does the framework's unit system produce any other constants, such as particle masses, that match measured values?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM tau0_planck_relation · IndisputableMonolith/Constants/Derivation.lean
/-- **Theorem**: τ₀ = t_P / √π This relation shows τ₀ is the Planck time divided by √π. -/ theorem tau0_planck_relation : tau0 = planck_time / sqrt Real.pi := by unfold tau0 planck_time have hc : c_codata ≠ 0 := c_codata_ne_zero have hpi : Real.pi ≠ 0 := ne_of_gt Real.pi_pos have hpi_pos : 0 < Real.pi := Real.pi_pos have hc_pos : 0 < c_codata := c_codata_pos have hinner_pos : 0 < hbar_codata * G_codata := mul_pos hbar_codata_pos G_codata_pos have hsqrt_pi_pos : 0 < sqrt Real.pi := sqrt_pos.mpr hpi_pos have hsqrt_pi_ne : sqrt Real.pi ≠ 0 := ne_of_gt hsqrt_pi_pos have hc3_pos : 0 < c_codata ^ 3 := pow_pos hc_pos 3 have hc5_pos : 0 < c_codata ^ 5 := pow_pos hc_pos 5 have hinner5_nonneg : 0 ≤ hbar_codata * G_codata / c_codata ^ 5 := le_of_lt (div_pos hinner_pos hc5_pos) have hc3 : c_codata ^ 3 ≠ 0 := pow_ne_zero 3 hc have hc5 : c_codata ^ 5 ≠ 0 := pow_ne_zero 5 hc have hinner3_div_pos : 0 < hbar_codata * G_codata / (Real.pi * c_codata ^ 3) := div_pos hinner_pos (mul_pos hpi_pos hc3_pos) have hinner3_div_nonneg : 0 ≤ hbar_codata * G_codata / (Real.pi * c_codata ^ 3) := le_of_lt hinner3_div_pos -- Strategy: show both sides equal by direct calculation -- LHS = sqrt(ℏG/(πc³))/c -- RHS = sqrt(ℏG/c⁵)/sqrt(π) -- Show: LHS² = RHS² and both are positive have hlhs_pos : 0 < sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata := div_pos (sqrt_pos.mpr hinner3_div_pos) hc_pos have hrhs_pos : 0 < sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := div_pos (sqrt_pos.mpr (div_pos hinner_pos hc5_pos)) hsqrt_pi_pos have hlhs_sq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 = hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by rw [div_pow, sq_sqrt hinner3_div_nonneg] field_simp have hrhs_sq : (sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 = hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by rw [div_pow, sq_sqrt hinner5_nonneg, sq_sqrt (le_of_lt hpi_pos)] field_simp have hsq_eq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 = (sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 := by rw [hlhs_sq, hrhs_sq] have hlhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata := le_of_lt hlhs_pos have hrhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := le_of_lt hrhs_pos have hsqrt_lhs : sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) = sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata := sqrt_sq hlhs_nonneg have hsqrt_rhs : sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) = sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := sqrt_sq hrhs_nonneg calc sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata = sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) := hsqrt_lhs.symm _ = sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) := by rw [hsq_eq] _ = sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := hsqrt_rhsThe framework's base time unit tau0 satisfies the Planck relation exactly when combined with the framework's derived values for ℏ, c, and G. tau0_planck_relation · IndisputableMonolith/Constants/Derivation.leanTHEOREM tau0_planck_relation · IndisputableMonolith/Constants/Derivation.lean
/-- **Theorem**: τ₀ = t_P / √π This relation shows τ₀ is the Planck time divided by √π. -/ theorem tau0_planck_relation : tau0 = planck_time / sqrt Real.pi := by unfold tau0 planck_time have hc : c_codata ≠ 0 := c_codata_ne_zero have hpi : Real.pi ≠ 0 := ne_of_gt Real.pi_pos have hpi_pos : 0 < Real.pi := Real.pi_pos have hc_pos : 0 < c_codata := c_codata_pos have hinner_pos : 0 < hbar_codata * G_codata := mul_pos hbar_codata_pos G_codata_pos have hsqrt_pi_pos : 0 < sqrt Real.pi := sqrt_pos.mpr hpi_pos have hsqrt_pi_ne : sqrt Real.pi ≠ 0 := ne_of_gt hsqrt_pi_pos have hc3_pos : 0 < c_codata ^ 3 := pow_pos hc_pos 3 have hc5_pos : 0 < c_codata ^ 5 := pow_pos hc_pos 5 have hinner5_nonneg : 0 ≤ hbar_codata * G_codata / c_codata ^ 5 := le_of_lt (div_pos hinner_pos hc5_pos) have hc3 : c_codata ^ 3 ≠ 0 := pow_ne_zero 3 hc have hc5 : c_codata ^ 5 ≠ 0 := pow_ne_zero 5 hc have hinner3_div_pos : 0 < hbar_codata * G_codata / (Real.pi * c_codata ^ 3) := div_pos hinner_pos (mul_pos hpi_pos hc3_pos) have hinner3_div_nonneg : 0 ≤ hbar_codata * G_codata / (Real.pi * c_codata ^ 3) := le_of_lt hinner3_div_pos -- Strategy: show both sides equal by direct calculation -- LHS = sqrt(ℏG/(πc³))/c -- RHS = sqrt(ℏG/c⁵)/sqrt(π) -- Show: LHS² = RHS² and both are positive have hlhs_pos : 0 < sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata := div_pos (sqrt_pos.mpr hinner3_div_pos) hc_pos have hrhs_pos : 0 < sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := div_pos (sqrt_pos.mpr (div_pos hinner_pos hc5_pos)) hsqrt_pi_pos have hlhs_sq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 = hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by rw [div_pow, sq_sqrt hinner3_div_nonneg] field_simp have hrhs_sq : (sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 = hbar_codata * G_codata / (Real.pi * c_codata ^ 5) := by rw [div_pow, sq_sqrt hinner5_nonneg, sq_sqrt (le_of_lt hpi_pos)] field_simp have hsq_eq : (sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2 = (sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2 := by rw [hlhs_sq, hrhs_sq] have hlhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata := le_of_lt hlhs_pos have hrhs_nonneg : 0 ≤ sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := le_of_lt hrhs_pos have hsqrt_lhs : sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) = sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata := sqrt_sq hlhs_nonneg have hsqrt_rhs : sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) = sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := sqrt_sq hrhs_nonneg calc sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata = sqrt ((sqrt (hbar_codata * G_codata / (Real.pi * c_codata ^ 3)) / c_codata) ^ 2) := hsqrt_lhs.symm _ = sqrt ((sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi) ^ 2) := by rw [hsq_eq] _ = sqrt (hbar_codata * G_codata / c_codata ^ 5) / sqrt Real.pi := hsqrt_rhsThe theorem tau0_planck_relation states that tau0 equals the Planck time divided by the square root of π. tau0_planck_relation · IndisputableMonolith/Constants/Derivation.leanTHEOREM units_self_consistent · IndisputableMonolith/Constants/Derivation.lean
theorem units_self_consistent : ∀ (ℏ' G' c' : ℝ), ℏ' > 0 → G' > 0 → c' > 0 → tau0 = sqrt (ℏ' * G' / (Real.pi * c' ^ 3)) / c' → ell0 = c' * tau0 → ℏ' = Real.pi * c' ^ 5 * tau0 ^ 2 / G' := by intro ℏ' G' c' hℏ hG hc htau _hell have hc_ne : c' ≠ 0 := ne_of_gt hc have hG_ne : G' ≠ 0 := ne_of_gt hG have hpi_ne : Real.pi ≠ 0 := ne_of_gt Real.pi_pos have hc3 : c' ^ 3 ≠ 0 := pow_ne_zero 3 hc_ne have hc5 : c' ^ 5 ≠ 0 := pow_ne_zero 5 hc_ne have hinner_nonneg : 0 ≤ ℏ' * G' / (Real.pi * c' ^ 3) := by apply div_nonneg (mul_nonneg (le_of_lt hℏ) (le_of_lt hG)) exact le_of_lt (mul_pos Real.pi_pos (pow_pos hc 3)) have hsq : tau0 ^ 2 = ℏ' * G' / (Real.pi * c' ^ 5) := by rw [htau, div_pow, sq_sqrt hinner_nonneg] field_simp rw [hsq] field_simpThe declaration units_self_consistent proves that any positive values of ℏ, G, and c satisfying the same defining equations must also satisfy the Planck relation. units_self_consistent · IndisputableMonolith/Constants/Derivation.lean