## Stream: general

### Topic: has_coe_to_fun lemmas

#### Andreas Swerdlow (Jun 24 2019 at 13:04):

I'm working on bilinear forms (link: https://github.com/leanprover-community/mathlib/blob/inner_product_spaces/src/linear_algebra/bilinear_form.lean) and would like to use has_coe_to_fun for notation. However, I run into issues when trying to apply lemmas for structures that extend bilin_form, for example refl_bilin_form. Do I need to copy and paste every lemma for each new structure? I have found one workaround which is to give a coercion from refl_bilin_form to bilin_form, but this requires the use of coe_fn_coe_base before rw works.

#### Kevin Buzzard (Jun 27 2019 at 17:50):

Andreas has just explained his question to me in a lot more detail. He has made a structure called bilinear forms, with a coe to fun. His simp lemmas for bilinear forms are all written in terms of this coercion (so they're statements about \u b with b the bilinear form). He now wants to make symmetric bilinear forms and so he extended the structure and now he can't use any of his simp lemmas. How should he be doing this? I suggested making an is_symmetric predicate on bilinear forms instead, so then the symmetric bilinear forms would be a subtype rather than a new structure. Are there other better ways to do this?

#### Kevin Buzzard (Jul 12 2019 at 09:01):

Chris says that this is hard in Lean 3.

#### Kevin Buzzard (Jul 12 2019 at 09:01):

@Chris Hughes

Last updated: May 14 2021 at 06:16 UTC