Back to NPA
Declaration
ring_as_additive_group_laws
Mathlib.Algebra.Ring.FirstIsomorphism.Basic
Packages
2
Module
63
Theorems
750
Declarations
1016
Untrusted sidecar
Source text and display overlays are presentation metadata. The signed certificate and checker result are the trusted evidence.
Statement
forall (R : Sort u), forall (zero : R), forall (one : R), forall (add : forall (a : R), forall (b : R), R), forall (neg : forall (a : R), R), forall (sub : forall (a : R), forall (b : R), R), forall (mul : forall (a : R), forall (b : R), R), forall (ring_args : @RingLawArgs.{u} R zero one add neg sub mul), @GroupLawArgs.{u} R zero add neg
Proof term
theorem ring_as_additive_group_laws.{u} :
forall (R : Sort u), forall (zero : R), forall (one : R), forall (add : forall (a : R), forall (b : R), R), forall (neg : forall (a : R), R), forall (sub : forall (a : R), forall (b : R), R), forall (mul : forall (a : R), forall (b : R), R), forall (ring_args : @RingLawArgs.{u} R zero one add neg sub mul), @GroupLawArgs.{u} R zero add neg :=
fun R => fun zero => fun one => fun add => fun neg => fun sub => fun mul => fun ring_args => fun (P : Prop) => fun (mk : forall (mul_assoc_law : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (add (add a b) c) (add a (add b c))), forall (one_mul_law : forall (a : R), @Eq.{u} R (add zero a) a), forall (mul_one_law : forall (a : R), @Eq.{u} R (add a zero) a), forall (inv_mul_law : forall (a : R), @Eq.{u} R (add (neg a) a) zero), forall (mul_inv_law : forall (a : R), @Eq.{u} R (add a (neg a)) zero), P) => ring_args P (fun (sub_eq_add_neg_arg : forall (a : R), forall (b : R), @Eq.{u} R (sub a b) (add a (neg b))) => fun (add_assoc_arg : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (add (add a b) c) (add a (add b c))) => fun (add_comm_arg : forall (a : R), forall (b : R), @Eq.{u} R (add a b) (add b a)) => fun (add_zero_arg : forall (a : R), @Eq.{u} R (add a zero) a) => fun (zero_add_arg : forall (a : R), @Eq.{u} R (add zero a) a) => fun (neg_add_cancel_arg : forall (a : R), @Eq.{u} R (add (neg a) a) zero) => fun (add_neg_cancel_arg : forall (a : R), @Eq.{u} R (add a (neg a)) zero) => fun (sub_self_arg : forall (a : R), @Eq.{u} R (sub a a) zero) => fun (mul_assoc_arg : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (mul (mul a b) c) (mul a (mul b c))) => fun (mul_comm_arg : forall (a : R), forall (b : R), @Eq.{u} R (mul a b) (mul b a)) => fun (mul_one_arg : forall (a : R), @Eq.{u} R (mul a one) a) => fun (one_mul_arg : forall (a : R), @Eq.{u} R (mul one a) a) => fun (left_distrib_arg : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (mul a (add b c)) (add (mul a b) (mul a c))) => fun (right_distrib_arg : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (mul (add a b) c) (add (mul a c) (mul b c))) => fun (mul_zero_arg : forall (a : R), @Eq.{u} R (mul a zero) zero) => fun (zero_mul_arg : forall (a : R), @Eq.{u} R (mul zero a) zero) => fun (add_left_cancel_arg : forall (a : R), forall (b : R), forall (c : R), forall (h : @Eq.{u} R (add a b) (add a c)), @Eq.{u} R b c) => fun (ring_normalize_add_mul3_arg : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (add (add (mul a b) (mul b c)) (mul a c)) (add (add (mul a b) (mul a c)) (mul b c))) => fun (add_right_cancel_arg : forall (a : R), forall (b : R), forall (c : R), forall (h : @Eq.{u} R (add b a) (add c a)), @Eq.{u} R b c) => fun (neg_neg_arg : forall (a : R), @Eq.{u} R (neg (neg a)) a) => fun (sub_zero_arg : forall (a : R), @Eq.{u} R (sub a zero) a) => fun (zero_sub_arg : forall (a : R), @Eq.{u} R (sub zero a) (neg a)) => fun (sub_add_cancel_arg : forall (a : R), forall (b : R), @Eq.{u} R (add (sub a b) b) a) => fun (add_sub_cancel_arg : forall (a : R), forall (b : R), @Eq.{u} R (sub (add a b) b) a) => fun (sub_add_sub_cancel_arg : forall (a : R), forall (b : R), forall (c : R), @Eq.{u} R (sub (sub a c) (sub b c)) (sub a b)) => mk add_assoc_arg zero_add_arg add_zero_arg neg_add_cancel_arg add_neg_cancel_arg)