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 Spaces.Pos. Require Import Spaces.Int.Core. Require Import Spaces.Int.Spec. (** ** Iteration of equivalences *) (** *** Iteration by arbitrary integers *) Definition int_iter {A} (f : A -> A) `{!IsEquiv f} (n : Int) : A -> A := match n with | neg n => fun x => pos_iter f^-1 n x | zero => idmap | pos n => fun x => 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: Int
a: A

int_iter f (int_succ n) a = f (int_iter f n a)
A: Type
f: A -> A
H: IsEquiv f
n: Int
a: A

int_iter f (int_succ n) a = f (int_iter f n a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A
int_iter f (int_succ (pos n)) a = f (int_iter f (pos n) a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
A: Type

forall (n : Pos) (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
A: Type

(fun p : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p)) a = f (int_iter f (neg p) a)) 1%pos
A: Type
forall p : Pos, (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = f (int_iter f (neg p0) a)) p -> (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = f (int_iter f (neg p0) a)) (pos_succ p)
A: Type

(fun p : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p)) a = f (int_iter f (neg p) a)) 1%pos
A: Type
f: A -> A
H: IsEquiv f
a: A

int_iter f (int_succ (-1)%int) a = f (int_iter f (-1)%int a)
A: Type
f: A -> A
H: IsEquiv f
a: A

f (int_iter f (-1)%int a) = int_iter f (int_succ (-1)%int) a
apply eisretr.
A: Type

forall p : Pos, (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = f (int_iter f (neg p0) a)) p -> (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = f (int_iter f (neg p0) a)) (pos_succ p)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A

int_iter f (int_succ (neg (pos_succ n))) a = f (int_iter f (neg (pos_succ n)) a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A

int_succ (neg (pos_succ n)) = ?Goal0
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A
int_iter f ?Goal0 a = f (int_iter f (neg (pos_succ n)) a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A

int_succ (int_pred (neg n)) = ?Goal0
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A
int_iter f ?Goal0 a = f (int_iter f (neg (pos_succ n)) a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A

int_iter f (neg n) a = f (int_iter f (neg (pos_succ n)) a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_iter f (neg n) a)
f: A -> A
H: IsEquiv f
a: A

f^-1 (int_iter f (neg n) a) = int_iter f (neg (pos_succ n)) a
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = f (int_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

int_iter f (int_succ (pos n)) a = f (int_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: Int
a: A

int_iter f (int_succ n) a = int_iter f n (f a)
A: Type
f: A -> A
H: IsEquiv f
n: Int
a: A

int_iter f (int_succ n) a = int_iter f n (f a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A
int_iter f (int_succ (pos n)) a = int_iter f (pos n) (f a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
A: Type

forall (n : Pos) (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
A: Type

(fun p : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p)) a = int_iter f (neg p) (f a)) 1%pos
A: Type
forall p : Pos, (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = int_iter f (neg p0) (f a)) p -> (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = int_iter f (neg p0) (f a)) (pos_succ p)
A: Type

(fun p : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p)) a = int_iter f (neg p) (f a)) 1%pos
A: Type
f: A -> A
H: IsEquiv f
a: A

int_iter f (int_succ (-1)%int) a = int_iter f (-1)%int (f a)
A: Type
f: A -> A
H: IsEquiv f
a: A

int_iter f (-1)%int (f a) = int_iter f (int_succ (-1)%int) a
apply eissect.
A: Type

forall p : Pos, (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = int_iter f (neg p0) (f a)) p -> (fun p0 : Pos => forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg p0)) a = int_iter f (neg p0) (f a)) (pos_succ p)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
f: A -> A
H: IsEquiv f
a: A

int_iter f (int_succ (neg (pos_succ n))) a = int_iter f (neg (pos_succ n)) (f a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
f: A -> A
H: IsEquiv f
a: A

int_iter f (int_succ (int_pred (neg n))) a = int_iter f (int_pred (neg n)) (f a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
f: A -> A
H: IsEquiv f
a: A

int_succ (int_pred (neg n)) = ?Goal0
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
f: A -> A
H: IsEquiv f
a: A
int_iter f ?Goal0 a = int_iter f (int_pred (neg n)) (f a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_iter f (neg n) (f a)
f: A -> A
H: IsEquiv f
a: A

int_iter f (neg n) a = int_iter f (int_pred (neg n)) (f a)
A: Type
n: Pos
p: forall (f : A -> A) (H : IsEquiv f) (a : A), int_iter f (int_succ (neg n)) a = int_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), int_iter f (int_succ (neg n)) a = int_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), int_iter f (int_succ (neg n)) a = int_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

int_iter f (int_succ (pos n)) a = int_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: Int
a: A

int_iter f (int_pred n) a = f^-1 (int_iter f n a)
A: Type
f: A -> A
H: IsEquiv f
n: Int
a: A

int_iter f (int_pred n) a = f^-1 (int_iter f n a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_pred (neg n)) a = f^-1 (int_iter f (neg n) a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A
int_iter f (int_pred (pos n)) a = f^-1 (int_iter f (pos n) a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_pred (neg n)) a = f^-1 (int_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)
by rewrite pos_iter_succ_l.
A: Type
f: A -> A
H: IsEquiv f
n: Pos
a: A

int_iter f (int_pred (pos n)) a = f^-1 (int_iter f (pos n) a)
A: Type
f: A -> A
H: IsEquiv f
a: A

forall n : Pos, int_iter f (int_pred (pos n)) a = f^-1 (int_iter f (pos n) a)
A: Type
f: A -> A
H: IsEquiv f
a: A

(fun p : Pos => int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)) 1%pos
A: Type
f: A -> A
H: IsEquiv f
a: A
forall p : Pos, (fun p0 : Pos => int_iter f (int_pred (pos p0)) a = f^-1 (int_iter f (pos p0) a)) p -> (fun p0 : Pos => int_iter f (int_pred (pos p0)) a = f^-1 (int_iter f (pos p0) a)) (pos_succ p)
A: Type
f: A -> A
H: IsEquiv f
a: A

(fun p : Pos => int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)) 1%pos
cbn; symmetry; apply eissect.
A: Type
f: A -> A
H: IsEquiv f
a: A

forall p : Pos, (fun p0 : Pos => int_iter f (int_pred (pos p0)) a = f^-1 (int_iter f (pos p0) a)) p -> (fun p0 : Pos => int_iter f (int_pred (pos p0)) a = f^-1 (int_iter f (pos p0) a)) (pos_succ p)
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

int_iter f (int_pred (pos (pos_succ p))) a = f^-1 (int_iter f (pos (pos_succ p)) a)
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

int_iter f (int_pred (pos (p + 1%pos))) a = f^-1 (int_iter f (pos (p + 1%pos)) a)
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

int_iter f (int_pred (int_succ (pos p))) a = f^-1 (int_iter f (pos (p + 1%pos)) a)
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

int_iter f (pos p) a = f^-1 (int_iter f (pos (p + 1%pos)) a)
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

int_iter f (pos p) a = f^-1 (int_iter f (int_succ (pos p)) a)
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

int_iter f (pos p) a = f^-1 (f (int_iter f (pos p) a))
A: Type
f: A -> A
H: IsEquiv f
a: A
p: Pos
q: int_iter f (int_pred (pos p)) a = f^-1 (int_iter f (pos p) a)

f^-1 (f (int_iter f (pos p) a)) = int_iter f (pos p) a
apply eissect. Qed.
A: Type
f: A -> A
H: IsEquiv f
n: Int
a: A

int_iter f (int_pred n) a = int_iter f n (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Int
a: A

int_iter f (int_pred n) a = int_iter f n (f^-1 a)
A: Type

forall (f : A -> A) (H : IsEquiv f) (n : Int) (a : A), int_iter f (int_pred n) a = int_iter f n (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)

forall a : A, int_iter f (int_pred (neg (pos_succ n))) a = int_iter f (neg (pos_succ n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
forall a : A, int_iter f (int_pred 1%int) a = int_iter f 1%int (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
forall a : A, int_iter f (int_pred (pos (pos_succ n))) a = int_iter f (pos (pos_succ n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)

forall a : A, int_iter f (int_pred (neg (pos_succ n))) a = int_iter f (neg (pos_succ n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
forall a : A, int_iter f (int_pred (pos (pos_succ n))) a = int_iter f (pos (pos_succ n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)

forall a : A, int_iter f (int_pred (neg (n + 1)%pos)) a = int_iter f (neg (n + 1)%pos) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
forall a : A, int_iter f (int_pred (pos (n + 1%pos))) a = int_iter f (pos (n + 1%pos)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)
a: A

int_iter f (int_pred (neg (n + 1)%pos)) a = int_iter f (neg (n + 1)%pos) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A
int_iter f (int_pred (pos (n + 1%pos))) a = int_iter f (pos (n + 1%pos)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)
a: A

int_iter f (int_pred (int_pred (neg n))) a = int_iter f (int_pred (neg n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A
int_iter f (int_pred (pos (n + 1%pos))) a = int_iter f (pos (n + 1%pos)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)
a: A

int_iter f (int_pred (int_pred (neg n))) a = int_iter f (int_pred (neg n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A
int_iter f (int_pred (int_succ (pos n))) a = int_iter f (int_succ (pos n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (neg n)) a = int_iter f (neg n) (f^-1 a)
a: A

int_iter f (neg (pos_succ (pos_succ n))) a = int_iter f (neg (pos_succ n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A
int_iter f (int_pred (int_succ (pos n))) a = int_iter f (int_succ (pos n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A

int_iter f (int_pred (int_succ (pos n))) a = int_iter f (int_succ (pos n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A

int_iter f (pos n) a = int_iter f (int_succ (pos n)) (f^-1 a)
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A

int_iter f (pos n) a = int_iter f (pos n) (f (f^-1 a))
A: Type
f: A -> A
H: IsEquiv f
n: Pos
nH: forall a : A, int_iter f (int_pred (pos n)) a = int_iter f (pos n) (f^-1 a)
a: A

int_iter f (pos n) a = int_iter f (pos n) a
reflexivity. Qed.