: / ͷλΫςΟΧϧΛಋೖ͠ɺapplyɺcaseɺrewriteͳͲͷλΫςΟΫεΛ࠶ఆٛ͢Δɻ 4UBOEBSE$PRͱൺͯɺՄಡੑΛམͱͣ͞ʹ͘ॻ͘͜ͱ͕Ͱ͖Δɻ'PSUSBOWT$ w Α͘ཧ͞ΕͨϥΠϒϥϦ͔ΒͳΔɻ w ʮܾఆੑͷ͋Δಉؔͷ͋ΔܕʯʢCPPMܕͷ͕ࣜ͑Δɺਅِ͕Ұҙʹܾ·ΔʣͷΫϥεΛϧʔτͱ͢Δɻ CPPMͷ໋ΛຒΊࠐΜͰ͏ɻຒΊࠐΉ͚ͩͳΒ༰қ͕ͩɻ ෆ߸≦ CPPMܕͷؔleqͰ͋Δɻͦͷ··Ͱomega ͳͲͷλΫςΟΫ͕͑ͳ͍ɻ w 4UBOEBSE$PRͷػೳ֓Ͷͦͷ··͑Δɻޓػೳཪٕ͕͋Δɻ leq4UBOEBSE$PRͷෆ߸ͷleʹมͰ͖Δɻ͜ΕʹΑΓomegaͳͲΛ͏͜ͱՄೳɻ<> w ֶͷূ໌ͨΊɺ͚ͩͰͳ͍ɻ ʢิʣຊདྷͷ$PRɺ؍ओٛཧͷ໋Λ1SPQܕͱ͢Δɻূ໌Մೳʢ͔Ͳ͏͔ʣɻ .BUI$PNQͱ
:= | ReflectT : P -> reflect P true | ReflectF : ~ P -> reflect P false. Record eqMixin (T : Type) := EqMixin { eq_op : T -> T -> bool; ɹɹɹɹ(* eq_op boolͷࣜ *) a : forall x y : T, reflect (x = y) (eq_op x y) }. Record eqType := EqType { sort : Type; m : mixin_of sort }. Check @op_op : forall T : Type, mixin_of T -> T -> T -> bool.