(cross post from SO)
How do I trigger typeclass search from auto/eauto in Coq?
Example:
I have a class for PartialOrders:
Class PartialOrder `(lt : LessThan A) :=
{
po_refl : forall a, a ⊑ a;
po_trans : forall a b c, a ⊑ b -> b ⊑ c -> a ⊑ c;
po_antisymm : forall a b, a ⊑ b -> b ⊑ a -> a = b
}.
I then want to take products of partial orders:
Instance ProdPO `(lt__a : LessThan A)
`(lt__b : LessThan B)
`(!PartialOrder lt__a)
`(!PartialOrder lt__b) : PartialOrder (ProdLT lt__a lt__b).
Proof.
constructor.
- (* refl *)
intros [a b].
(* TODO: how can I apply po_rel automatically? *)
constructor; apply po_refl.
This works, but it should be possible to solve it with auto, if there were a way to trigger typeclass search from within auto.
What's the proper way to leverage automation here?
I think you are looking for typeclasses eauto
Last updated: Feb 01 2023 at 12:30 UTC