Skip to content

[Merged by Bors] - feat: add Nat.digits_append_digits#6999

Closed
dwrensha wants to merge 3 commits intomasterfrom
digits-append-digits
Closed

[Merged by Bors] - feat: add Nat.digits_append_digits#6999
dwrensha wants to merge 3 commits intomasterfrom
digits-append-digits

Conversation

@dwrensha
Copy link
Copy Markdown
Member

@dwrensha dwrensha commented Sep 7, 2023

Similar to Nat.ofDigits_digits_append_digits, but with a digits on the RHS instead of an ofDigits on the LHS.


Open in Gitpod

@dwrensha
Copy link
Copy Markdown
Member Author

dwrensha commented Sep 7, 2023

This is a generalization of a lemma that I needed for a USAMO problem: https://github.com/dwrensha/math-puzzles-in-lean4/blob/918bb01e426d1c60ae2f9b841dfeb95f1f9f7841/MathPuzzles/Usa2003Q1.lean#L21-L30

cc @b-mehta, who minimized the proof of digits_add', and @mo271 who has also worked on the Data.Nat.Digits file.

@mo271
Copy link
Copy Markdown
Collaborator

mo271 commented Sep 7, 2023

This also works

theorem digits_append_digits {b m n : ℕ} (hb : 1 < b) :
    digits b n ++ digits b m = digits b (n + b ^ (digits b n).length * m) := by
  rw [← ofDigits_digits_append_digits]
  refine' (digits_ofDigits b hb _ (fun l hl => _) (fun h_append => _)).symm
  · rcases (List.mem_append.mp hl) with (h | h) <;> exact digits_lt_base hb h
  · by_cases digits b m = []
    · simp only [h, List.append_nil] at h_append ⊢
      exact getLast_digit_ne_zero b <| digits_ne_nil_iff_ne_zero.mp h_append
    · exact (List.getLast_append' _ _ h) ▸
          (getLast_digit_ne_zero _ <| digits_ne_nil_iff_ne_zero.mp h)

@dwrensha dwrensha force-pushed the digits-append-digits branch from 8306028 to fa8c033 Compare September 7, 2023 11:50
@dwrensha
Copy link
Copy Markdown
Member Author

dwrensha commented Sep 7, 2023

@mo271 Thanks! Your proof looks nicer, so I switched to that.

I also weakened hb to only require that 0 < b, rather than 1 < b.
(We can't weaken it any more, because the theorem is not true if b = 0.)

Copy link
Copy Markdown
Member

@jcommelin jcommelin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks 🎉

bors merge

@ghost ghost added ready-to-merge This PR has been sent to bors. and removed awaiting-review labels Sep 8, 2023
bors bot pushed a commit that referenced this pull request Sep 8, 2023
Similar to `Nat.ofDigits_digits_append_digits`, but with a `digits` on the RHS instead of an `ofDigits` on the LHS.
@bors
Copy link
Copy Markdown

bors bot commented Sep 8, 2023

Pull request successfully merged into master.

Build succeeded!

The publicly hosted instance of bors-ng is deprecated and will go away soon.

If you want to self-host your own instance, instructions are here.
For more help, visit the forum.

If you want to switch to GitHub's built-in merge queue, visit their help page.

@bors bors bot changed the title feat: add Nat.digits_append_digits [Merged by Bors] - feat: add Nat.digits_append_digits Sep 8, 2023
@bors bors bot closed this Sep 8, 2023
@bors bors bot deleted the digits-append-digits branch September 8, 2023 12:17
Julian added a commit that referenced this pull request Sep 11, 2023
* fix-lint: (463 commits)
  chore: lint-style.py was calling str.replace incorrectly
  chore: module doc for #find_home, #minimize_imports, import early (#7095)
  chore: reduce imports to Data.Rat.Cast.CharZero (#7091)
  chore: cleanup imports of Data/Rat/Cast/Defs (#7092)
  chore: linarith only needs ring1 (#7090)
  refactor(Data/Int/Bitwise): use `<<<` and `>>>` notation (#6789)
  chore: delete redundant commented-out positivity test (#7085)
  chore: fix docstrings, names and aligns about paracompacity of emetric spaces (#7064)
  feat(Data/Finsupp): add notation (#6367)
  refactor: re-home some meta code (#6921)
  fix: don't use `False` as a bool, use `false` (#7059)
  chore: fix reference to `compactCovering` in docstring (#7065)
  fix: fix link in docstring of IsWellFounded (#7063)
  chore: tidy various files (#7041)
  feat: roots in an algebra (#6740)
  chore: revert ProofWidgets bump in #7044 and #7056 (#7069)
  feat: super factorial (#6768)
  feat(LinearAlgebra/Matrix/Trace): add Matrix.trace_diagonal (#7061)
  chore: complete ProofWidgets bump (#7056)
  feat: More `Finset.sup'` lemmas (#7021)
  feat: self_lt_pow (#7058)
  chore: move some files to `MeasureTheory/MeasurableSpace/` (#7045)
  chore(RingTheory/Nilpotent): untwine two universes (#7057)
  feat: von Neumann Mean Ergodic Theorem (#6053)
  feat: (sSup, Iic) and (Ici, sInf) are Galois connections (#6951)
  feat: derivative along a vector (#7038)
  feat: check for some common git problems in CI (#7043)
  chore: bump ProofWidgets (#7044)
  feat(Topology/Algebra): add `DiscreteTopology Mˣ` (#7028)
  chore: simplify `by rfl` (#7039)
  chore: tidy various files (#7035)
  refactor(LinearAlgebra/CliffordAlgebra/Conjugation): expose implementation details of 'reverse' (#6783)
  feat: add `DiscreteTopology.of_continuous_injective` (#7029)
  feat: restore the module docstring code snippet (#7030)
  feat: flesh out the API for `realPart` and `imaginaryPart` (#7023)
  chore: missing simps lemmas for `Multiplicative` defs (#7016)
  feat: characterize isLittleO on principal filters (#7008)
  doc: cleanup documentation on Basis.constr (#7007)
  feat: cleanup API around differentiable functions (#7004)
  feat: add Nat.digits_append_digits (#6999)
  feat: definition of the homology of a short complex (#6994)
  chore: implement porting notes about Polish spaces (#6991)
  feat(Algebra/Category/ModuleCat): composition of restriction of scalar functors (#6915)
  feat: compute the integral of sqrt (1 - x ^ 2) (#6905)
  chore(*/TensorProduct): missing functorial lemmas (#6781)
  feat: a functor from a small category to a filtered category factors through a small filtered category (#6212)
  feat: expand API on locally integrable functions (#7006)
  chore: split Tactic.NormNum.Basic (#7002)
  feat: a few lemmas on continuous functions (#7005)
  feat: ZMod.castHom_self (#7013)
  ...
kodyvajjha pushed a commit that referenced this pull request Sep 22, 2023
Similar to `Nat.ofDigits_digits_append_digits`, but with a `digits` on the RHS instead of an `ofDigits` on the LHS.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge This PR has been sent to bors.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants