Library UniMath.CategoryTheory.Nonassociative.UnitalMagmoids.Tactics

The unital_magmoid tactic


Section mor_hints.
  Context {M : unital_magmoid} (a b : M).
  Definition is_linear_l_mor (f : a -->{_l} b) : is_linear f := submm_mor_property _l f.
  Definition is_thunkable_t_mor (f : a -->{_t} b) : is_thunkable f := submm_mor_property _t f.
  Definition is_intermediate_i_mor (f : a -->{_i} b) : is_intermediate f := submm_mor_property _i f.
  Definition is_linear_lt_mor (f : a -->{_lt} b) : is_linear f := pr1 (submm_mor_property _lt f).
  Definition is_thunkable_lt_mor (f : a -->{_lt} b) : is_thunkable f := pr2 (submm_mor_property _lt f).
  Definition is_linear_lti_mor (f : a -->{_lti} b) : is_linear f := pr11 (submm_mor_property _lti f).
  Definition is_thunkable_lti_mor (f : a -->{_lti} b) : is_thunkable f := pr21 (submm_mor_property _lti f).
  Definition is_intermediate_lti_mor (f : a -->{_lti} b) : is_intermediate f := pr2 (submm_mor_property _lti f).
End mor_hints.

Section ob_hints.
  Context {M : unital_magmoid}.
  Definition is_positive_p_ob (a : sub_ob M ^⊕) : is_positive a := sub_ob_property ^⊕ a.
  Definition is_negative_n_ob (a : sub_ob M ^⊖) : is_negative a := sub_ob_property ^⊖ a.
End ob_hints.

Create HintDb unital_magmoid.
Hint Resolve @is_linear_l_mor : unital_magmoid.
Hint Resolve @is_thunkable_t_mor : unital_magmoid.
Hint Resolve @is_intermediate_i_mor : unital_magmoid.
Hint Resolve @is_linear_lt_mor : unital_magmoid.
Hint Resolve @is_thunkable_lt_mor : unital_magmoid.
Hint Resolve @is_linear_lti_mor : unital_magmoid.
Hint Resolve @is_thunkable_lti_mor : unital_magmoid.
Hint Resolve @is_intermediate_lti_mor : unital_magmoid.
Hint Resolve @is_positive_p_ob : unital_magmoid.
Hint Resolve @is_negative_n_ob : unital_magmoid.

Ltac submagmoid :=
  repeat (assumption || split);
  solve
    [ apply is_linear_l_mor
    | apply is_thunkable_t_mor
    | apply is_intermediate_i_mor
    | apply is_linear_lt_mor
    | apply is_thunkable_lt_mor
    | apply is_linear_lti_mor
    | apply is_thunkable_lti_mor
    | apply is_intermediate_lti_mor
    | apply is_positive_p_ob
    | apply is_negative_n_ob ].
Notation ummsolve := ltac:(submagmoid) (only parsing).