Built with Alectryon, running Coq+SerAPI v8.18.0+0.18.1. 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.
Object: Type P, Q: Object * Object -> Prop H1: forallxy : Object, P (x, y) -> Q (y, x) H2: forallx : Object, P (x, x) y: Object
Q (y, y)
Object: Type P, Q: Object * Object -> Prop H1: forallxy : Object, P (x, y) -> Q (y, x) H2: forallx : Object, P (x, x) y: Object
P (y, y)
apply H2.Qed.(*3.30 (page 92)*)
forallx : nat, x <= x
forallx : nat, x <= x
x: nat
x <= x
x: nat
x + 0 = x
x: nat A0: foralln : nat, n + 0 = n
x + 0 = x
x: nat A0: foralln : nat, n + 0 = n H0: x + 0 = x
x + 0 = x
x: nat A0: foralln : nat, n + 0 = n H0: x + 0 = x
x = x
equals_intro.
forallx : nat, x <= x
x: nat
x <= x
x: nat
existsz : nat, x + z = x
x: nat
x + 0 = x
lia.Qed.(*3.33 (page 94)*)
forallxy : nat, even x -> even y -> even (x + y)
forallxy : nat, even x -> even y -> even (x + y)
x: nat
forally : nat, even x -> even y -> even (x + y)
x, y: nat
even x -> even y -> even (x + y)
x, y: nat H0: even x
even y -> even (x + y)
x, y: nat H0: even x H1: even y
even (x + y)
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k
existsk : nat, x + y = 2 * k
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1
existsk : nat, x + y = 2 * k
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2
existsk : nat, x + y = 2 * k
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2
x + y = 2 * (k1 + k2)
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p
x + y = 2 * (k1 + k2)
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p H4: forallmp : nat, 2 * (m + p) = 2 * m + 2 * p
x + y = 2 * (k1 + k2)
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p H4: forallmp : nat, 2 * (m + p) = 2 * m + 2 * p H5: forallp : nat, 2 * (k1 + p) = 2 * k1 + 2 * p
x + y = 2 * (k1 + k2)
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p H4: forallmp : nat, 2 * (m + p) = 2 * m + 2 * p H5: forallp : nat, 2 * (k1 + p) = 2 * k1 + 2 * p H6: 2 * (k1 + k2) = 2 * k1 + 2 * k2
x + y = 2 * (k1 + k2)
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p H4: forallmp : nat, 2 * (m + p) = 2 * m + 2 * p H5: forallp : nat, 2 * (k1 + p) = 2 * k1 + 2 * p H6: 2 * (k1 + k2) = 2 * k1 + 2 * k2
x + y = 2 * k1 + 2 * k2
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p H4: forallmp : nat, 2 * (m + p) = 2 * m + 2 * p H5: forallp : nat, 2 * (k1 + p) = 2 * k1 + 2 * p H6: 2 * (k1 + k2) = 2 * k1 + 2 * k2
x + y = x + 2 * k2
x, y: nat H0: existsk : nat, x = 2 * k H1: existsk : nat, y = 2 * k k1: nat H2: x = 2 * k1 k2: nat H3: y = 2 * k2 A0: forallnmp : nat, n * (m + p) = n * m + n * p H4: forallmp : nat, 2 * (m + p) = 2 * m + 2 * p H5: forallp : nat, 2 * (k1 + p) = 2 * k1 + 2 * p H6: 2 * (k1 + k2) = 2 * k1 + 2 * k2
x + y = x + y
equals_intro.
forallxy : nat, even x -> even y -> even (x + y)
x, y: nat Hx: even x Hy: even y
even (x + y)
x, y, k1: nat Hk1: x = 2 * k1 Hy: even y
even (x + y)
x, y, k1: nat Hk1: x = 2 * k1 k2: nat Hk2: y = 2 * k2
even (x + y)
x, y, k1: nat Hk1: x = 2 * k1 k2: nat Hk2: y = 2 * k2
x + y = 2 * (k1 + k2)
x, y, k1: nat Hk1: x = 2 * k1 k2: nat Hk2: y = 2 * k2