(** We define our own field tactic based on the new ring *)
(** This tactic is geared toward automation because it does not generate non nullity conditions 
but it assumes that we know that the denominators of the input are not zero (syntactically !) *)
(** This tactic is also used to reduce a term to a unique fraction *)
(** This tactic is not reflexive, it is basically a reduction to the same denominators
but even using the legacy ring it is quicker than the legacy field tactic 
on our examples *)

Ltac assumption_or_ax := assumption || apply chara_not_2.Ltac solve_conds :=  
repeat split;
repeat (assumption_or_ax || 
           apply nonzeromult || 
           apply nonzerodiv ||
           apply nonzeroinv).Ltac smart_field := field; solve_conds.Ltac smart_field_simplify_eq := field_simplify_eq;solve_conds.

Lemma invariant_div_1 : forall b c d, b<>0 -> c/d<>0 -> d<>0 -> b*c <> 0.