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 Import Spaces.Pos.Require Import Spaces.BinInt.Core.Require Import Spaces.BinInt.Spec.(** ** Iteration of equivalences *)(** *** Iteration by arbitrary integers *)Definitionbinint_iter {A} (f : A -> A) `{!IsEquiv f} (n : BinInt) : A -> A
:= match n with
| neg n => funx => pos_iter f^-1 n x
| zero => idmap
| pos n => funx => pos_iter f n x
end.(** Iteration by arbitrary integers requires the endofunction to be an equivalence, so that we can define a negative iteration by using its inverse. *)
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_succ n) a =
f (binint_iter f n a)
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_succ n) a =
f (binint_iter f n a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (pos n)) a =
f (binint_iter f (pos n) a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a)
A: Type
forall (n : Pos) (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a)
A: Type
(funp : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p)) a =
f (binint_iter f (neg p) a)) 1%pos
A: Type
forallp : Pos,
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
f (binint_iter f (neg p0) a)) p ->
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
f (binint_iter f (neg p0) a)) (pos_succ p)
A: Type
(funp : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p)) a =
f (binint_iter f (neg p) a)) 1%pos
A: Type f: A -> A H: IsEquiv f a: A
binint_iter f (binint_succ (-1)%binint) a =
f (binint_iter f (-1)%binint a)
A: Type f: A -> A H: IsEquiv f a: A
f (binint_iter f (-1)%binint a) =
binint_iter f (binint_succ (-1)%binint) a
apply eisretr.
A: Type
forallp : Pos,
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
f (binint_iter f (neg p0) a)) p ->
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
f (binint_iter f (neg p0) a)) (pos_succ p)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
binint_iter f (binint_succ (neg (pos_succ n))) a =
f (binint_iter f (neg (pos_succ n)) a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
binint_succ (neg (pos_succ n)) = ?Goal0
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
binint_iter f ?Goal0 a =
f (binint_iter f (neg (pos_succ n)) a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
binint_succ (binint_pred (neg n)) = ?Goal0
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
binint_iter f ?Goal0 a =
f (binint_iter f (neg (pos_succ n)) a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
binint_iter f (neg n) a =
f (binint_iter f (neg (pos_succ n)) a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
f^-1 (binint_iter f (neg n) a) =
binint_iter f (neg (pos_succ n)) a
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
f (binint_iter f (neg n) a) f: A -> A H: IsEquiv f a: A
pos_iter f^-1 (pos_succ n) a =
f^-1 (pos_iter f^-1 n a)
srapply pos_iter_succ_l.
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (pos n)) a =
f (binint_iter f (pos n) a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
pos_iter f (n + 1)%pos a = f (pos_iter f n a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
pos_iter f (pos_succ n) a = f (pos_iter f n a)
srapply pos_iter_succ_l.Qed.
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_succ n) a =
binint_iter f n (f a)
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_succ n) a =
binint_iter f n (f a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (pos n)) a =
binint_iter f (pos n) (f a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a)
A: Type
forall (n : Pos) (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a)
A: Type
(funp : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p)) a =
binint_iter f (neg p) (f a)) 1%pos
A: Type
forallp : Pos,
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
binint_iter f (neg p0) (f a)) p ->
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
binint_iter f (neg p0) (f a)) (pos_succ p)
A: Type
(funp : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p)) a =
binint_iter f (neg p) (f a)) 1%pos
A: Type f: A -> A H: IsEquiv f a: A
binint_iter f (binint_succ (-1)%binint) a =
binint_iter f (-1)%binint (f a)
A: Type f: A -> A H: IsEquiv f a: A
binint_iter f (-1)%binint (f a) =
binint_iter f (binint_succ (-1)%binint) a
apply eissect.
A: Type
forallp : Pos,
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
binint_iter f (neg p0) (f a)) p ->
(funp0 : Pos =>
forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg p0)) a =
binint_iter f (neg p0) (f a)) (pos_succ p)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
binint_iter f (binint_succ (neg (pos_succ n))) a =
binint_iter f (neg (pos_succ n)) (f a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
binint_iter f (binint_succ (binint_pred (neg n))) a =
binint_iter f (binint_pred (neg n)) (f a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
binint_succ (binint_pred (neg n)) = ?Goal0
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
binint_iter f ?Goal0 a =
binint_iter f (binint_pred (neg n)) (f a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
binint_iter f (neg n) a =
binint_iter f (binint_pred (neg n)) (f a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
pos_iter f^-1 n a = pos_iter f^-1 (pos_succ n) (f a)
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
pos_iter f^-1 n a = pos_iter f^-1 n (f^-1 (f a))
A: Type n: Pos p: forall (f : A -> A) (H : IsEquiv f) (a : A),
binint_iter f (binint_succ (neg n)) a =
binint_iter f (neg n) (f a) f: A -> A H: IsEquiv f a: A
pos_iter f^-1 n a = pos_iter f^-1 n a
reflexivity.
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_succ (pos n)) a =
binint_iter f (pos n) (f a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
pos_iter f (n + 1)%pos a = pos_iter f n (f a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
pos_iter f (pos_succ n) a = pos_iter f n (f a)
srapply pos_iter_succ_r.Qed.
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_pred n) a =
f^-1 (binint_iter f n a)
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_pred n) a =
f^-1 (binint_iter f n a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_pred (neg n)) a =
f^-1 (binint_iter f (neg n) a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_pred (pos n)) a =
f^-1 (binint_iter f (pos n) a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_pred (neg n)) a =
f^-1 (binint_iter f (neg n) a)
A: Type f: A -> A H: IsEquiv f n: Pos a: A
pos_iter f^-1 (pos_succ n) a =
f^-1 (pos_iter f^-1 n a)
byrewrite pos_iter_succ_l.
A: Type f: A -> A H: IsEquiv f n: Pos a: A
binint_iter f (binint_pred (pos n)) a =
f^-1 (binint_iter f (pos n) a)
A: Type f: A -> A H: IsEquiv f a: A
foralln : Pos,
binint_iter f (binint_pred (pos n)) a =
f^-1 (binint_iter f (pos n) a)
A: Type f: A -> A H: IsEquiv f a: A
(funp : Pos =>
binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)) 1%pos
A: Type f: A -> A H: IsEquiv f a: A
forallp : Pos,
(funp0 : Pos =>
binint_iter f (binint_pred (pos p0)) a =
f^-1 (binint_iter f (pos p0) a)) p ->
(funp0 : Pos =>
binint_iter f (binint_pred (pos p0)) a =
f^-1 (binint_iter f (pos p0) a)) (pos_succ p)
A: Type f: A -> A H: IsEquiv f a: A
(funp : Pos =>
binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)) 1%pos
cbn; symmetry; apply eissect.
A: Type f: A -> A H: IsEquiv f a: A
forallp : Pos,
(funp0 : Pos =>
binint_iter f (binint_pred (pos p0)) a =
f^-1 (binint_iter f (pos p0) a)) p ->
(funp0 : Pos =>
binint_iter f (binint_pred (pos p0)) a =
f^-1 (binint_iter f (pos p0) a)) (pos_succ p)
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
binint_iter f (binint_pred (pos (pos_succ p))) a =
f^-1 (binint_iter f (pos (pos_succ p)) a)
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
binint_iter f (binint_pred (pos (p + 1%pos))) a =
f^-1 (binint_iter f (pos (p + 1%pos)) a)
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
binint_iter f (binint_pred (binint_succ (pos p))) a =
f^-1 (binint_iter f (pos (p + 1%pos)) a)
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
binint_iter f (pos p) a =
f^-1 (binint_iter f (pos (p + 1%pos)) a)
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
binint_iter f (pos p) a =
f^-1 (binint_iter f (binint_succ (pos p)) a)
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
binint_iter f (pos p) a =
f^-1 (f (binint_iter f (pos p) a))
A: Type f: A -> A H: IsEquiv f a: A p: Pos q: binint_iter f (binint_pred (pos p)) a =
f^-1 (binint_iter f (pos p) a)
f^-1 (f (binint_iter f (pos p) a)) =
binint_iter f (pos p) a
apply eissect.Qed.
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_pred n) a =
binint_iter f n (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: BinInt a: A
binint_iter f (binint_pred n) a =
binint_iter f n (f^-1 a)
A: Type
forall (f : A -> A) (H : IsEquiv f) (n : BinInt)
(a : A),
binint_iter f (binint_pred n) a =
binint_iter f n (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a)
foralla : A,
binint_iter f (binint_pred (neg (pos_succ n))) a =
binint_iter f (neg (pos_succ n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f
foralla : A,
binint_iter f (binint_pred 1%binint) a =
binint_iter f 1%binint (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a)
foralla : A,
binint_iter f (binint_pred (pos (pos_succ n))) a =
binint_iter f (pos (pos_succ n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a)
foralla : A,
binint_iter f (binint_pred (neg (pos_succ n))) a =
binint_iter f (neg (pos_succ n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a)
foralla : A,
binint_iter f (binint_pred (pos (pos_succ n))) a =
binint_iter f (pos (pos_succ n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a)
foralla : A,
binint_iter f (binint_pred (neg (n + 1)%pos)) a =
binint_iter f (neg (n + 1)%pos) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a)
foralla : A,
binint_iter f (binint_pred (pos (n + 1%pos))) a =
binint_iter f (pos (n + 1%pos)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a) a: A
binint_iter f (binint_pred (neg (n + 1)%pos)) a =
binint_iter f (neg (n + 1)%pos) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (binint_pred (pos (n + 1%pos))) a =
binint_iter f (pos (n + 1%pos)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a) a: A
binint_iter f (binint_pred (binint_pred (neg n))) a =
binint_iter f (binint_pred (neg n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (binint_pred (pos (n + 1%pos))) a =
binint_iter f (pos (n + 1%pos)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a) a: A
binint_iter f (binint_pred (binint_pred (neg n))) a =
binint_iter f (binint_pred (neg n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (binint_pred (binint_succ (pos n))) a =
binint_iter f (binint_succ (pos n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (neg n)) a =
binint_iter f (neg n) (f^-1 a) a: A
binint_iter f (neg (pos_succ (pos_succ n))) a =
binint_iter f (neg (pos_succ n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (binint_pred (binint_succ (pos n))) a =
binint_iter f (binint_succ (pos n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (binint_pred (binint_succ (pos n))) a =
binint_iter f (binint_succ (pos n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (pos n) a =
binint_iter f (binint_succ (pos n)) (f^-1 a)
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A
binint_iter f (pos n) a =
binint_iter f (pos n) (f (f^-1 a))
A: Type f: A -> A H: IsEquiv f n: Pos nH: foralla : A,
binint_iter f (binint_pred (pos n)) a =
binint_iter f (pos n) (f^-1 a) a: A