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 Import HoTT.Classes.implementations.peano_naturals HoTT.Classes.interfaces.abstract_algebra HoTT.Classes.interfaces.naturals HoTT.Classes.interfaces.orders HoTT.Classes.implementations.natpair_integers HoTT.Classes.theory.rings HoTT.Classes.theory.integers. Require Export HoTT.Classes.orders.nat_int. Import NatPair.Instances. Generalizable Variables N Z R f. Section integers. Context `{Funext} `{Univalence}. Context `{Integers Z} `{!TrivialApart Z}. (* Add Ring Z : (rings.stdlib_ring_theory Z). *) (* Add Ring nat : (rings.stdlib_semiring_theory nat). *)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type

P 0 -> (forall n : Z, 0 ≤ n -> P n -> P (1 + n)) -> (forall n : Z, n ≤ 0 -> P n -> P (n - 1)) -> forall n : Z, P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type

P 0 -> (forall n : Z, 0 ≤ n -> P n -> P (1 + n)) -> (forall n : Z, n ≤ 0 -> P n -> P (n - 1)) -> forall n : Z, P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat
A: naturals_to_semiring nat Z a = n

P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat
A: naturals_to_semiring nat Z a = - n
P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat
A: naturals_to_semiring nat Z a = n

P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat
A: naturals_to_semiring nat Z a = n

P (naturals_to_semiring nat Z a)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat

P (naturals_to_semiring nat Z a)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

forall a : nat, P (naturals_to_semiring nat Z a)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P (naturals_to_semiring nat Z 0)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
forall n : nat, P (naturals_to_semiring nat Z n) -> P (naturals_to_semiring nat Z (1 + n))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P (naturals_to_semiring nat Z 0)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P 0
trivial.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

forall n : nat, P (naturals_to_semiring nat Z n) -> P (naturals_to_semiring nat Z (1 + n))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (naturals_to_semiring nat Z m)

P (naturals_to_semiring nat Z (1 + m))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (naturals_to_semiring nat Z m)

P (1 + naturals_to_semiring nat Z m)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (naturals_to_semiring nat Z m)

0 ≤ naturals_to_semiring nat Z m
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (naturals_to_semiring nat Z m)
P (naturals_to_semiring nat Z m)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (naturals_to_semiring nat Z m)

0 ≤ naturals_to_semiring nat Z m
apply to_semiring_nonneg.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (naturals_to_semiring nat Z m)

P (naturals_to_semiring nat Z m)
trivial.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat
A: naturals_to_semiring nat Z a = - n

P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat
A: naturals_to_semiring nat Z a = - n

P (- naturals_to_semiring nat Z a)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
a: nat

P (- naturals_to_semiring nat Z a)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

forall a : nat, P (- naturals_to_semiring nat Z a)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P (- naturals_to_semiring nat Z 0)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
forall n : nat, P (- naturals_to_semiring nat Z n) -> P (- naturals_to_semiring nat Z (1 + n))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P (- naturals_to_semiring nat Z 0)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

P 0
trivial.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z

forall n : nat, P (- naturals_to_semiring nat Z n) -> P (- naturals_to_semiring nat Z (1 + n))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)

P (- naturals_to_semiring nat Z (1 + m))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)

P (- (1 + naturals_to_semiring nat Z m))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)

P (- naturals_to_semiring nat Z m - 1)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)

- naturals_to_semiring nat Z m ≤ 0
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)
P (- naturals_to_semiring nat Z m)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)

- naturals_to_semiring nat Z m ≤ 0
apply naturals.negate_to_ring_nonpos.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc1: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
Psuc2: forall n : Z, n ≤ 0 -> P n -> P (n - 1)
n: Z
m: nat
E: P (- naturals_to_semiring nat Z m)

P (- naturals_to_semiring nat Z m)
trivial. Qed.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type

P 0 -> (forall n : Z, 0 ≤ n -> P n -> P (1 + n)) -> forall n : Z, 0 ≤ n -> P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type

P 0 -> (forall n : Z, 0 ≤ n -> P n -> P (1 + n)) -> forall n : Z, 0 ≤ n -> P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)

forall n : Z, 0 ≤ n -> P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)

forall n : Z, n ≤ 0 -> (0 ≤ n -> P n) -> 0 ≤ n - 1 -> P (n - 1)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

P (n - 1)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

1 = 0
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

10
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1
01
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

10
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

n - 1 + 1 ≤ n - 1 + 0
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

n ≤ n - 1
transitivity 0;trivial.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

01
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

n - 11
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

1 + (n - 1) ≤ 2
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

n ≤ 2
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

n ≤ 0
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1
02
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

n ≤ 0
trivial.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
PS: forall n : Z, 0 ≤ n -> P n -> P (1 + n)
n: Z
E1: n ≤ 0
X: 0 ≤ n -> P n
E2: 0 ≤ n - 1

02
apply le_0_2. Qed.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z

Biinduction Z
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z

Biinduction Z
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)

forall n : Z, P n
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)

forall n : Z, 0 ≤ n -> P n -> P (1 + n)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)
forall n : Z, n ≤ 0 -> P n -> P (n - 1)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)

forall n : Z, 0 ≤ n -> P n -> P (1 + n)
intros ??;apply Psuc.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)

forall n : Z, n ≤ 0 -> P n -> P (n - 1)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)
n: Z
X: n ≤ 0
X0: P n

P (1 + (n - 1))
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
P: Z -> Type
P0: P 0
Psuc: forall n : Z, P n <-> P (1 + n)
n: Z
X: n ≤ 0
X0: P n

P n
trivial. Qed.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z

forall x y : Z, Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z

forall x y : Z, Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z

Decidable (x ≤ y)
(* otherwise Z_le gets defined using peano.nat_ring but we only know order_reflecting when using naturals.nat_ring *)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat

Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: integers_to_ring Z (NatPair.Z nat) x ≤ integers_to_ring Z (NatPair.Z nat) y

Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: ~ (integers_to_ring Z (NatPair.Z nat) x ≤ integers_to_ring Z (NatPair.Z nat) y)
Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: integers_to_ring Z (NatPair.Z nat) x ≤ integers_to_ring Z (NatPair.Z nat) y

Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: integers_to_ring Z (NatPair.Z nat) x ≤ integers_to_ring Z (NatPair.Z nat) y

x ≤ y
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: x ≤ y

x ≤ y
trivial.
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: ~ (integers_to_ring Z (NatPair.Z nat) x ≤ integers_to_ring Z (NatPair.Z nat) y)

Decidable (x ≤ y)
H: Funext
H0: Univalence
Z: Type
Aap: Apart Z
Aplus: Plus Z
Amult: Mult Z
Azero: Zero Z
Aone: One Z
Anegate: Negate Z
Ale: Le Z
Alt: Lt Z
U: IntegersToRing Z
H1: Integers Z
TrivialApart0: TrivialApart Z
x, y: Z
E0:= naturals_ring: IsSemiCRing nat
E: ~ (integers_to_ring Z (NatPair.Z nat) x ≤ integers_to_ring Z (NatPair.Z nat) y)

~ (x ≤ y)
intro;apply E;apply (order_preserving _);trivial. Qed. End integers.