Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Require Export HoTT.Classes.theory.rings. Generalizable Variables F f R. Section contents. Context `{IsDecField F} `{forall x y: F, Decidable (x = y)}. (* Add Ring F : (stdlib_ring_theory F). *)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

ZeroProduct F
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

ZeroProduct F
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: x * y = 0

((x = 0) + (y = 0))%type
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: x * y = 0
Ex: x <> 0

((x = 0) + (y = 0))%type
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: x * y = 0
Ex: x <> 0

y = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: x * y = 0
Ex: x <> 0

y * (x / x) = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: x * y = 0
Ex: x <> 0

0 / x = 0
apply mult_0_l. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

IsIntegralDomain F
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

IsIntegralDomain F
split; try apply _. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

/ 1 = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

/ 1 = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

1 / 1 = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

1 <> 0
solve_propholds. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x = 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x = 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x = 0

0 = 0 / y
apply symmetry,mult_0_l.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y = 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y = 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y = 0

/ 0 = 0
apply dec_recip_0.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

/ (x * y) = / x / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

x * y / (x * y) = x * y * (/ x / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

x * y / (x * y) = x / x * (y / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0
x / x * (y / y) = x * y * (/ x / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

x * y / (x * y) = x / x * (y / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

1 = 1 * 1
rewrite mult_1_l;apply reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

x / x * (y / y) = x * y * (/ x / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

1 * 1 = x * y * (/ x / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

1 * 1 = y * (x / x) / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

1 * 1 = y * 1 / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

1 * 1 = 1 * (y / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Ex: x <> 0
Ey: y <> 0
Exy: x * y <> 0

1 * 1 = 1 * 1
reflexivity. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

/ x = 0 <-> x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

/ x = 0 <-> x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: / x = 0

x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: x = 0
/ x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: / x = 0

x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: / x = 0

~~ (x = 0)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: / x = 0
Ex: x <> 0

Empty
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: / x = 0
Ex: x <> 0

1 = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: / x = 0
Ex: x <> 0

x * 0 = 0
apply mult_0_r.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: x = 0

/ x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E: x = 0

/ 0 = 0
apply dec_recip_0. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

/ x <> 0 <-> x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

/ x <> 0 <-> x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E2: x = 0

/ / x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
E2: x = 0

x = 0
trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

PropHolds (x <> 0) -> PropHolds (/ x <> 0)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

PropHolds (x <> 0) -> PropHolds (/ x <> 0)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
X: PropHolds (x <> 0)

PropHolds (/ x <> 0)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
X: PropHolds (x <> 0)

x <> 0
trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

x / y = 1 -> x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

x / y = 1 -> x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y = 0

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0
x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y = 0

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y = 0

1 = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y = 0

x * 0 = 0
apply mult_0_r.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0

/ y <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0
x / y = y / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0

/ y <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0

PropHolds (y <> 0)
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
Exy: x / y = 1
Ey: y <> 0

x / y = y / y
rewrite dec_recip_inverse;trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

IsInjective dec_recip
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

IsInjective dec_recip
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

IsInjective dec_recip
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y = 0

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0
x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y = 0

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / 0
Ey: y = 0

x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = 0
Ey: y = 0

x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = 0
Ey: y = 0

/ x = 0
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

x = y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

/ y <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0
x / y = y / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

/ y <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

PropHolds (y <> 0)
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

x / y = y / y
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

x / y = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

/ x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

/ y <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F
E: / x = / y
Ey: y <> 0

PropHolds (y <> 0)
trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

Involutive dec_recip
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)

Involutive dec_recip
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

/ / x = x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x = 0

/ / x = x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0
/ / x = x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x = 0

/ / x = x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x = 0

0 = 0
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

/ / x = x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

/ x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0
/ / x / x = x / x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

/ x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

PropHolds (x <> 0)
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

/ / x / x = x / x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

/ / x / x = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

1 = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0
/ x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

1 = 1
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

/ x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

PropHolds (x <> 0)
trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F

b <> 0 -> d <> 0 -> a * d = c * b <-> a / b = c / d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F

b <> 0 -> d <> 0 -> a * d = c * b <-> a / b = c / d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a / b = c / d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d
a * d = c * b
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a / b = c / d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a / b * b = c / d * b
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a / b * b * d = c / d * b * d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a / b * b * d = a * d * (b / b)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b
a * d * (b / b) = c * b * (d / d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b
c * b * (d / d) = c / d * b * d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a / b * b * d = a * d * (b / b)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a * (/ b * b * d) = a * (d * (b / b))
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

/ b * b * d = d * (b / b)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

b / b * d = b / b * d
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

a * d * (b / b) = c * b * (d / d)
rewrite E, dec_recip_inverse, dec_recip_inverse;trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

c * b * (d / d) = c / d * b * d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

c * (b * (d / d)) = c * (/ d * b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

b * (d / d) = / d * b * d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a * d = c * b

/ d * b * d = / d * b * d
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

a * d = c * b
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

a * d * 1 = c * b
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

a * d * (b / b) = c * b
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

a * d * (b / b) = c * b * 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

a * d * (b / b) = c * b * (d / d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

b * (c / d * d) = c * b * (d / d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

b * (c * (/ d * d)) = c * b * (d / d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

b * (c * (d / d)) = c * b * (d / d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, b, c, d: F
X: b <> 0
X0: d <> 0
E: a / b = c / d

b * c * (d / d) = b * c * (d / d)
reflexivity. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F

b <> 0 -> d <> 0 -> a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F

b <> 0 -> d <> 0 -> a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0

a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0

a / b = a * d / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)
a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0

a / b = a * d / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0

b * d <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
a * (b * d) = a * d * b
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0

b * d <> 0
solve_propholds.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0

a * (b * d) = a * d * b
rewrite (mult_comm b);apply associativity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

c / d = b * c / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)
E2: c / d = b * c / (b * d)
a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

c / d = b * c / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

b * d <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)
c * (b * d) = b * c * d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

b * d <> 0
solve_propholds.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

c * (b * d) = b * c * d
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)

b * c * d = b * c * d
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)
E2: c / d = b * c / (b * d)

a / b + c / d = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)
E2: c / d = b * c / (b * d)

a * d / (b * d) + b * c / (b * d) = (a * d + c * b) / (b * d)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
a, c, b, d: F
A: b <> 0
B: d <> 0
E1: a / b = a * d / (b * d)
E2: c / d = b * c / (b * d)

a * d / (b * d) + b * c / (b * d) = (a * d + b * c) / (b * d)
apply symmetry, simple_distribute_r. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

x / y = / (/ x * y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

x / y = / (/ x * y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

x / y = x / y
reflexivity. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

/ x * y = / (x / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

/ x * y = / (x / y)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x, y: F

/ x * y = / x * y
reflexivity. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

- / x = / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F

- / x = / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x = 0

- / x = / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0
- / x = / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x = 0

- / x = / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x = 0

0 = 0
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- / x = / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0
- x * - / x = - x / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

x <> 0
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- x * - / x = - x / - x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- x * - / x = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0
- x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- x * - / x = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

x / x = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

x <> 0
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

- x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: forall x y : F, Decidable (x = y)
x: F
Ex: x <> 0

x <> 0
trivial. Qed. End contents. (* Due to bug #2528 *) #[export] Hint Extern 7 (PropHolds (/ _ <> 0)) => eapply @dec_recip_ne_0 : typeclass_instances. (* Given a decidable field we can easily construct a constructive field. *) Section is_field. Context `{IsDecField F} `{Apart F} `{!TrivialApart F} `{Decidable.DecidablePaths F}. Global Instance recip_dec_field: Recip F := fun x => / x.1. Local Existing Instance dec_strong_setoid.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F

IsField F
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F

IsField F
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F

StrongBinaryExtensionality plus
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
StrongBinaryExtensionality mult
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
forall x : {y : F & y ≶ 0}, x.1 // x = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F

StrongBinaryExtensionality plus
apply (dec_strong_binary_morphism (+)).
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F

StrongBinaryExtensionality mult
apply (dec_strong_binary_morphism (.*.)).
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F

forall x : {y : F & y ≶ 0}, x.1 // x = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: x ≶ 0

(x; Px).1 // (x; Px) = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: x ≶ 0

x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: x ≶ 0

x ≶ 0
trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

/ x = // (x; Px)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

/ x = // (x; Px)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x
x / x = x // (x; Px)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

x ≶ 0
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

x / x = x // (x; Px)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
H0: Apart F
TrivialApart0: TrivialApart F
H1: DecidablePaths F
x: F
Px: (fun y : F => y ≶ 0) x

1 = 1
reflexivity. Qed. End is_field. (* Definition stdlib_field_theory F `{DecField F} : Field_theory.field_theory 0 1 (+) (.*.) (fun x y => x - y) (-) (fun x y => x / y) (/) (=). Proof with auto. intros. constructor. apply (theory.rings.stdlib_ring_theory _). apply (is_ne_0 1). reflexivity. intros. rewrite commutativity. now apply dec_recip_inverse. Qed. *) (* Section from_stdlib_field_theory. Context `(ftheory : @field_theory F Fzero Fone Fplus Fmult Fminus Fnegate Fdiv Frecip Fe) (rinv_0 : Fe (Frecip Fzero) Fzero) `{!@Setoid F Fe} `{!Proper (Fe ==> Fe ==> Fe) Fplus} `{!Proper (Fe ==> Fe ==> Fe) Fmult} `{!Proper (Fe ==> Fe) Fnegate} `{!Proper (Fe ==> Fe) Frecip}. Add Field F2 : ftheory. Definition from_stdlib_field_theory: @DecField F Fe Fplus Fmult Fzero Fone Fnegate Frecip. Proof with auto. destruct ftheory. repeat (constructor; try assumption); repeat intro ; unfold equiv, mon_unit, sg_op, zero_is_mon_unit, plus_is_sg_op, one_is_mon_unit, mult_is_sg_op, plus, mult, recip, negate; try field. unfold recip, mult. simpl. assert (Fe (Fmult x (Frecip x)) (Fmult (Frecip x) x)) as E by ring. rewrite E. Qed. End from_stdlib_field_theory. *) Section morphisms. Context `{IsDecField F} `{TrivialApart F} `{Decidable.DecidablePaths F}.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)

IsInjective f
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)

IsInjective f
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)

forall x : F, f x = 0 -> x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0

x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0

~~ (x = 0)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0
Ex: x <> 0

Empty
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0
Ex: x <> 0

1 = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0
Ex: x <> 0

f 1 = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0
Ex: x <> 0

f (x / x) = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
R: Type
Aplus0: Plus R
Amult0: Mult R
Azero0: Zero R
Aone0: One R
Anegate0: Negate R
H2: IsIntegralDomain R
f: F -> R
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> R)
x: F
Efx: f x = 0
Ex: x <> 0

0 * f (/ x) = 0
apply left_absorb. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F

f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F

f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x = 0

f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0
f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x = 0

f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x = 0

0 = 0
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f (/ x) = / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0
f x * f (/ x) = f x / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

PropHolds (x <> 0)
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f x * f (/ x) = f x / f x
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f 1 = 1
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0
f x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0
x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f 1 = 1
apply preserves_1.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

f x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

PropHolds (x <> 0)
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Adec_recip0: DecRecip F2
H2: IsDecField F2
H3: forall x y : F2, Decidable (x = y)
f: F -> F2
IsSemiRingPreserving0: IsSemiRingPreserving (f : F -> F2)
x: F
E: x <> 0

x <> 0
trivial. Qed.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)

f (/ x) = // (f x; Pfx)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)

f (/ x) = // (f x; Pfx)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)

x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0
f (/ x) = // (f x; Pfx)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)

x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
Ex: x = 0

Empty
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
Ex: x = 0

f x = 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
Ex: x = 0

0 = 0
reflexivity.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0

f (/ x) = // (f x; Pfx)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0

f x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0
f x * f (/ x) = f x // (f x; Pfx)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0

f x <> 0
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0

PropHolds (x <> 0)
trivial.
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0

f x * f (/ x) = f x // (f x; Pfx)
F: Type
Aplus: Plus F
Amult: Mult F
Azero: Zero F
Aone: One F
Anegate: Negate F
Adec_recip: DecRecip F
H: IsDecField F
Aap: Apart F
H0: TrivialApart F
H1: DecidablePaths F
F2: Type
Aplus0: Plus F2
Amult0: Mult F2
Azero0: Zero F2
Aone0: One F2
Anegate0: Negate F2
Aap0: Apart F2
Arecip: Recip F2
H2: IsField F2
f: F -> F2
IsSemiRingStrongPreserving0: IsSemiRingStrongPreserving (f : F -> F2)
x: F
Pfx: (fun y : F2 => y ≶ 0) (f x)
X: x <> 0

f 1 = 1
apply preserves_1. Qed. End morphisms.