Tealeaves.Adapters.PolyToMono.Categorical.TraversableMonad

Single-Argument Traversable Functor Instances

Module ToMono.

  Section mono.

    Context
      `{TraversableMonad2 T}.

    #[export] Instance TraversableMonad_Dist2_1 {B}:
      TraversableMonad (T B).
    Proof.
      constructor.
      - typeclasses eauto.
      - typeclasses eauto.
      - intros.
        unfold_ops @Dist2_1.
        reassociateon left.
        rewrite dmp_map_ret.
        reassociate <- on left.
        rewrite (xxx_dist2_ret (T := T) B A (G := G)).
        reflexivity.
      - intros.
        unfold_ops @Dist2_1.
        reassociateon left.
        rewrite dmp_map_join.
        reassociate <- on left.
        rewrite (xxx_dist2_join (T := T) B A (G := G)).
        reassociateon left.
        unfold_compose_in_compose.
        setoid_rewrite fun2_map_map.
        reassociateon right.
        reassociateon right.
        rewrite fun2_map2_map21.
        reflexivity.
    Qed.

  End mono.

End ToMono.