Section Lemmas1.
Variable K : FIELD.
Definition field_inverse (x : K) : K := Ap (field_inverse_map K) x.
Definition field_div (x y : K) : K := ring_mult x (field_inverse y).
exact (field_inverse_r_prf K).
Qed.
exact (field_inverse_l_prf K).
Qed.
exact (field_unit_non_zero K).
Qed.
unfold field_inverse in |- *.
auto with algebra.
Qed.
Hint Resolve FIELD_comp FIELD_inverse_r FIELD_inverse_l FIELD_unit_non_zero:
algebra.
apply Trans with (ring_mult (field_inverse (ring_unit K)) (ring_unit K));
auto with algebra.
Qed.
Hint Resolve FIELD_unit_inverse: algebra.
intros x y z H' H'0; try assumption.
apply Trans with (ring_mult (ring_unit K) y).
auto with algebra.
apply Trans with (ring_mult (ring_mult (field_inverse x) x) y).
apply Sym; auto with algebra.
apply Trans with (ring_mult (field_inverse x) (ring_mult x y)).
auto with algebra.
apply Trans with (ring_mult (field_inverse x) (ring_mult x z)).
auto with algebra.
apply Trans with (ring_mult (ring_mult (field_inverse x) x) z).
auto with algebra.
apply Trans with (ring_mult (ring_unit K) z); auto with algebra.
Qed.
intros x y z H' H'0; try assumption.
apply Trans with (ring_mult y (ring_unit K)).
auto with algebra.
apply Trans with (ring_mult y (ring_mult x (field_inverse x))).
apply Sym; auto with algebra.
apply Trans with (ring_mult (ring_mult y x) (field_inverse x)).
auto with algebra.
apply Trans with (ring_mult (ring_mult z x) (field_inverse x)).
auto with algebra.
apply Trans with (ring_mult z (ring_mult x (field_inverse x))).
auto with algebra.
apply Trans with (ring_mult z (ring_unit K)).
auto with algebra.
auto with algebra.
Qed.
intuition.
apply FIELD_unit_non_zero.
apply Trans with (ring_mult (field_inverse x) x:K); auto with algebra.
apply Sym; auto with algebra.
apply Trans with (ring_mult (monoid_unit K) x:K); auto with algebra.
Qed.
Hint Resolve FIELD_inverse_non_zero: algebra.

Lemma FIELD_inverse_inverse :
forall x : K,
~ Equal x (monoid_unit K) -> Equal (field_inverse (field_inverse x)) x.