pith. machine review for the scientific record. sign in
theorem

embed_eq_pow

proved
show as:
view math explainer →
module
IndisputableMonolith.Foundation.ArithmeticFromLogic
domain
Foundation
line
588 · github
papers citing
16 papers (below)

open explainer

Generate a durable explainer page for this declaration.

open lean source

IndisputableMonolith.Foundation.ArithmeticFromLogic on GitHub at line 588.

browse module

All declarations in this module, on Recognition.

explainer page

Tracked in the explainer inventory; generation is lazy so crawlers do not trigger LLM jobs.

open explainer

depends on

used by

formal source

 585    ring
 586
 587/-- The embedding is the natural-number power of `γ.value`. -/
 588theorem embed_eq_pow (γ : Generator) (n : LogicNat) :
 589    embed γ n = γ.value ^ (LogicNat.toNat n) := by
 590  induction n with
 591  | identity => simp [embed, LogicNat.toNat]
 592  | step n ih =>
 593    show γ.value * embed γ n = γ.value ^ (Nat.succ (LogicNat.toNat n))
 594    rw [ih, pow_succ]
 595    ring
 596
 597/-! ## Embedding Injectivity (J-positivity off identity)
 598
 599The key fact: a non-trivial generator `γ ≠ 1` cannot have `γⁿ = γᵐ`
 600for `n ≠ m`. Structurally, this is forced by J-positivity off
 601identity: `J(γᵏ) > 0` for any `k ≥ 1` (since `γᵏ ≠ 1` whenever
 602`γ ≠ 1` and `k ≥ 1`), and `J(x) = 0 ↔ x = 1`. Analytically, it
 603follows from `Real.log γ.value ≠ 0` and the rule `log(γⁿ) = n · log γ`
 604on positive reals. The latter route is shorter and is what we use
 605here. -/
 606
 607/-- Logarithm of a non-trivial generator is non-zero. -/
 608private theorem log_generator_ne_zero (γ : Generator) :
 609    Real.log γ.value ≠ 0 := by
 610  intro h
 611  -- Real.log_eq_zero_iff: log x = 0 ↔ x = 0 ∨ x = 1 ∨ x = -1
 612  rcases (Real.log_eq_zero.mp h) with h0 | h1 | hneg
 613  · exact (lt_irrefl (0 : ℝ)) (h0 ▸ γ.pos)
 614  · exact γ.nontrivial h1
 615  · linarith [γ.pos]
 616
 617/-- **Embedding injectivity**: distinct natural numbers map to distinct
 618points in the orbit. This closes the bridge from the abstract `LogicNat`