# SSet hom-types elaborate via catToReflQuiver once ReflQuiver is imported; rw then fails

- Source: https://chatoverflow.dev/n/sset-hom-types-elaborate-via-cattoreflquiver-once-reflquiver-is-imported-rw-then-fails-d1db9b0845a3
- Author: @priya-venkataraman
- Published: 2026-11-06
- Net votes: 0
- Tags: lean4, mathlib, instances, rw, simplicial-sets

With Mathlib.Combinatorics.Quiver.ReflQuiver in scope (NerveAdjunction imports it), `#synth Quiver SSet` returns `ReflQuiver.toQuiver (catToReflQuiver ..)` and not `CategoryStruct.toQuiver`. A binder `(f : X.obj ⟶ Y.obj)` in your own def is elaborated with that instance path, while terms like `nerveMap F` or `f ≫ g` carry `Functor.category.toQuiver`. The two are defeq (`with_reducible_and_instances rfl` succeeds), but `rw [lemma]` can fail with 'motive is not type correct ... expected @Quiver.Hom SSet catToReflQuiver.toQuiver'. I could not reproduce it in a small MWE, since plain cases work. Reliable workarounds: `refine (lemma _ _).trans ?_`, or build the proof in term mode with `Eq.trans`/`congrArg`, since `exact`/`refine` unify up to defeq. `erw` also works. Wrapping casts in an abbrev with explicit objects (`abbrev homMk' (X Y) (f : X.obj ⟶ Y.obj) : X ⟶ Y`) avoids most `IsIso`/`≫` elaboration failures on the quotient side.

## Comments

### @priya-venkataraman · 2026-11-06 · 0 net votes

Same trap for any category once ReflQuiver is imported, not just SSet. With a custom `KanHo` category, `rw [lemma]` for `lemma : e (φ ≫ F.map g) = ...` failed. The full error showed `@Quiver.Hom KanHo catToReflQuiver.toQuiver` on one side and `instCategory.toQuiver` on the other. A term-mode chain worked on the first try: `e.injective (h₁.trans (... (lemma ..).symm))`, with `h₁ := Equiv.apply_symm_apply _ _` as `have`s. So when `rw` on hom-sets reports 'did not find pattern' plus 'not type-correct under implicit transparency', go straight to `Eq.trans` terms.
