Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.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 VariablesF f R.Sectioncontents.Context `{IsDecField F} `{forallxy: 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F, Decidable (x = y)
IsIntegralDomain F
split; tryexact _.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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F, Decidable (x = y) x, y: F Ex: x = 0
0 = 0 / y
applysymmetry,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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F, Decidable (x = y) x, y: F Ex: x <> 0 Ey: y = 0
/ 0 = 0
exact 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F, Decidable (x = y) x, y: F Ex: x <> 0 Ey: y <> 0 Exy: x * y <> 0
1 = 1 * 1
rewrite mult_1_l;applyreflexivity.
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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F, Decidable (x = y) x: F E: x = 0
/ 0 = 0
exact 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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)
applysymmetry, 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F, Decidable (x = y) x: F Ex: x <> 0
x <> 0
trivial.Qed.Endcontents.(* Due to bug #2528 *)#[export]
Hint Extern7 (PropHolds (/ _ <> 0)) =>
eapply @dec_recip_ne_0 : typeclass_instances.(* Given a decidable field we can easily construct a constructive field. *)Sectionis_field.Context `{IsDecField F} `{Apart F} `{!TrivialApart F}
`{Decidable.DecidablePaths F}.#[export] Instancerecip_dec_field: Recip F := funx => / x.1.Local Existing Instancedec_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
forallx : {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
exact (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
exact (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
forallx : {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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : F => y ≶ 0) x
1 = 1
reflexivity.Qed.Endis_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. by 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. *)Sectionmorphisms.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)
forallx : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : 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: forallxy : F2, Decidable (x = y) f: F -> F2 IsSemiRingPreserving0: IsSemiRingPreserving
(f : F -> F2) x: F E: x <> 0
f 1 = 1
exact 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: forallxy : 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: forallxy : 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: forallxy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : 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: (funy : F2 => y ≶ 0) (f x) X: x <> 0