g x y =?= f z unification failed g x y =?= f z g x y =?= f z unification successful unification hints: (nat.succ, add) succ #0 =?= #2 + succ #1 {#0 =?= #2 + #1} (toy.f, toy.g) f z =?= g #1 #0 {} Canonical.carrier A_canonical =?= A unification failed Canonical.carrier A_canonical =?= A Canonical.carrier A_canonical =?= A unification successful unification hints: (nat.succ, add) succ #0 =?= #2 + succ #1 {#0 =?= #2 + #1} (toy.f, toy.g) toy.f toy.z =?= toy.g #1 #0 {} (canonical.A, canonical.Canonical.carrier) A =?= Canonical.carrier #0 {#0 =?= A_canonical}