New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - feat(linear_algebra/trace): dual_tensor_hom is an equivalence + basis-free characterization of the trace #10372
Conversation
antoinelab01
commented
Nov 17, 2021
…-free characterization of the trace
Co-authored-by: Oliver Nash <github@olivernash.org>
Co-authored-by: Oliver Nash <github@olivernash.org>
Co-authored-by: Oliver Nash <github@olivernash.org>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using the explicit right inverse, I think you should refactor this to:
def dual_tensor_hom_equiv_of_basis
which requires only acomm_ring
, and an explicit basis- A proof that
dual_tensor_hom_equiv_of_basis b1 = dual_tensor_hom_equiv_of_basis b2
(trivially follows fromlinear_equiv.ext
) def dual_tensor_hom_equiv := dual_tensor_hom_equiv_of_basis (fin_basis R M)
which requires afield
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
src/data/matrix/basis.lean
Outdated
variable [fintype n] | ||
|
||
lemma trace_zero (h : j ≠ i) : trace n α α (std_basis_matrix i j c) = 0 := by simp [h] | ||
|
||
lemma trace_same : trace n α α (std_basis_matrix i i c) = c := by simp |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since the proof is simp
, do you really need it? What happens if you remove it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At any rate this lemma should include std_basis_matrix
in its name
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You're right, I don't really need it.
Thanks! bors d+ |
✌️ antoinelab01 can now approve this pull request. To approve and merge a pull request, simply reply with |
src/data/finsupp/basic.lean
Outdated
@[simp] lemma fintype_sum_single [add_comm_monoid M] [fintype α] (i : α) (m : M) : | ||
∑ (j : α), (single i m) j = m := | ||
by simp [single] | ||
|
||
@[simp] lemma fintype_sum_single' [add_comm_monoid M] [fintype α] (i : α) (m : M) : | ||
∑ (j : α), (single j m) i = m := | ||
by simp [single] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think these should instead be called sum_univ_single
, since syntactically this is finset.univ.sum _
not fintype.sum _
.
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
bors r+ |
…s-free characterization of the trace (#10372) Co-authored-by: antoinelab01 <66086247+antoinelab01@users.noreply.github.com> Co-authored-by: Oliver Nash <github@olivernash.org>
Build failed (retrying...): |
…s-free characterization of the trace (#10372) Co-authored-by: antoinelab01 <66086247+antoinelab01@users.noreply.github.com> Co-authored-by: Oliver Nash <github@olivernash.org>
Build failed: |
@antoinelab01 I merged master because this was failing to build for bors. Do you think you can fix this? |
bors merge |
…s-free characterization of the trace (#10372) Co-authored-by: antoinelab01 <66086247+antoinelab01@users.noreply.github.com> Co-authored-by: Oliver Nash <github@olivernash.org>
Pull request successfully merged into master. Build succeeded: |
* origin/master: (394 commits) feat(data/set/[basic|prod]): make `×ˢ` bind more strongly, and define `mem.out` (#13422) feat(order/basic): Simple shortcut lemmas (#13421) chore(number_theory/dioph): Cleanup (#13403) feat(analysis/normed_space/exponential): ring homomorphisms are preserved by the exponential (#13402) feat(algebraic_geometry/projective_spectrum): degree zero part of a localized ring (#13398) feat(set_theory/cardinal): A set of cardinals is small iff it's bounded (#13373) feat(data/polynomial/{derivative, iterated_deriv}): reduce assumptions (#13368) feat(algebra/monoid_algebra/grading): Use the new graded_algebra API (#13360) feat(algebra/group/to_additive): let @[to_additive] mimic alias’s docstrings (#13330) feat(set_theory/cofinality): Basic fundamental sequences (#13326) feat(special_functions/pow): continuity of real to complex power (#13244) feat(group_theory/torsion): extension closedness, and torsion scalars in modules (#13172) feat(category_theory/path_category): canonical quotient of a path category (#13159) refactor(number_theory/padics/padic_norm): Switch nat and rat definitions (#12454) feat(analysis/normed): more lemmas about the sup norm on pi types and matrices (#13536) fix(category_theory/monoidal): improve hygiene in coherence tactic (#13507) feat(src/number_theory/cyclotomic/discriminant): add discr_prime_pow_ne_two (#13465) chore(algebra/group/type_tags): missing simp lemmas (#13553) feat(measure_theory): allow measurability to prove ae_strongly_measurable (#13427) refactor(algebra/hom/group): generalize a few lemmas to `monoid_hom_class` (#13447) chore(data/list/cycle): Add basic `simp` lemmas + minor golfing (#13533) feat(algebra/hom/non_unital_alg): introduce notation for non-unital algebra homomorphisms (#13470) chore(algebra/group/defs): Declare `field_simps` attribute earlier (#13543) feat(analysis/normed/normed_field): add `one_le_(nn)norm_one` for nontrivial normed rings (#13556) refactor(analysis/calculus/cont_diff): reorder the file (#13468) move(set_theory/*): Organize in folders (#13530) chore(number_theory/zsqrtd/basic): simplify le_total proof (#13555) feat(group_theory/perm/basic): Iterating a permutation is the same as taking a power (#13554) feat(data/real/sqrt): `sqrt x < y ↔ x < y^2` (#13546) feat(algebra/hom/group and *): introduce `mul_hom M N` notation `M →ₙ* N` (#13526) feat(group_theory/schreier): Schreier's lemma in terms of `group.fg` and `group.rank` (#13361) feat(linear_algebra/trace): dual_tensor_hom is an equivalence + basis-free characterization of the trace (#10372) feat(order/filter/basic): allow functions between different types in lemmas about [co]map by a constant function (#13542) feat(data/finset/basic): simp `to_finset_eq_empty` (#13531) feat(topology/algebra/algebra): ℚ-scalar multiplication is continuous (#13458) chore(model_theory/encoding): Improve the encoding of terms (#13532) feat(topology/separation): Finite sets in T2 spaces (#12845) feat(analysis/inner_product_space/gram_schmidt_ortho): Gram-Schmidt Orthogonalization and Orthonormalization (#12857) chore(algebra/big_operators/fin): golf finset.prod_range (#13535) chore(analysis/normed_space/star): make an argument explicit (#13523) feat(*): `op_op_op_comm` lemmas (#13528) chore(data/real/nnreal): add commuted version of `nnreal.mul_finset_sup` (#13512) chore(*/matrix): order `m` and `n` alphabetically (#13510) feat(analysis/calculus/specific_functions): trivial extra lemmas (#13516) feat(analysis): lemmas about nnnorm and nndist (#13498) feat(data/int/basic): add lemma `int.abs_le_one_iff` (#13513) feat(category_theory/limits): add characteristic predicate for zero objects (#13511) feat(order/filter/n_ary): Add lemma equating map₂ to map on the product (#13490) fix(analysis/locally_convex/balanced_hull_core): minimize import (#13450) feat(order/cover): define `wcovby` (#13424) ...