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]
Local Open Scope nat_scope.
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

P n k
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

P n k
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

P n (finnat_to_fin (fin_to_finnat k))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall n : nat, P n.+1 (finnat_to_fin (zero_finnat n))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
forall (n : nat) (u : FinNat n), P n (finnat_to_fin u) -> P n.+1 (finnat_to_fin (succ_finnat u))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall n : nat, P n.+1 (finnat_to_fin (zero_finnat n))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
n0: nat

P n0.+1 (finnat_to_fin (zero_finnat n0))
apply z.
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall (n : nat) (u : FinNat n), P n (finnat_to_fin u) -> P n.+1 (finnat_to_fin (succ_finnat u))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
n': nat
u: FinNat n'
c: P n' (finnat_to_fin u)

P n'.+1 (finnat_to_fin (succ_finnat u))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
n': nat
u: FinNat n'
c: P n' (finnat_to_fin u)

P n'.+1 (fsucc (finnat_to_fin u))
by apply s. Defined.
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

fin_ind P z s fin_zero = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

fin_ind P z s fin_zero = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

transport (P n.+1) (path_fin_to_finnat_to_fin fin_zero) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat fin_zero)) = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

forall p : finnat_to_fin (fin_to_finnat fin_zero) = fin_zero, transport (P n.+1) p (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat fin_zero)) = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

forall p : finnat_to_fin (zero_finnat n) = fin_zero, transport (P n.+1) p (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (zero_finnat n)) = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
p: finnat_to_fin (zero_finnat n) = fin_zero

transport (P n.+1) p (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (zero_finnat n)) = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

transport (P n.+1) 1 (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (zero_finnat n)) = z n
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat

transport (fun u : FinNat n.+1 => P n.+1 (match u.1 as proj1 return (proj1 < n.+1 -> (Fin n + Unit)%type) with | 0 => fun _ : 0 < n.+1 => fin_zero | x.+1 => fun h : x.+1 < n.+1 => fsucc (finnat_to_fin (x; leq_S_n x.+1 n h)) end u.2)) (path_zero_finnat n leq_1_Sn) (z n) = z n
by destruct (hset_path2 1 (path_zero_finnat n leq_1_Sn)). Defined.
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

fin_ind P z s (fsucc k) = s n k (fin_ind P z s k)
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

fin_ind P z s (fsucc k) = s n k (fin_ind P z s k)
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

transport (P n.+1) (path_fin_to_finnat_to_fin (fsucc k)) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat (fsucc k))) = s n k (transport (P n) (path_fin_to_finnat_to_fin k) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall p : finnat_to_fin (fin_to_finnat (fsucc k)) = fsucc k, transport (P n.+1) p (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat (fsucc k))) = s n k (transport (P n) (path_fin_to_finnat_to_fin k) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall p : finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc k, transport (P n.+1) p (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (succ_finnat (fin_to_finnat k))) = s n k (transport (P n) (path_fin_to_finnat_to_fin k) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
p: finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc k

transport (P n.+1) p (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (succ_finnat (fin_to_finnat k))) = s n k (transport (P n) (path_fin_to_finnat_to_fin k) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
p: finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc k

transport (P n.+1) p (transport (P n.+1) (path_finnat_to_fin_succ (fin_to_finnat k))^ (s n (finnat_to_fin (fin_to_finnat k)) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))) = s n k (transport (P n) (path_fin_to_finnat_to_fin k) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall p : finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc k, transport (P n.+1) p (transport (P n.+1) (path_finnat_to_fin_succ (fin_to_finnat k))^ (s n (finnat_to_fin (fin_to_finnat k)) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))) = s n k (transport (P n) (path_fin_to_finnat_to_fin k) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall p : finnat_to_fin (succ_finnat (fin_to_finnat (finnat_to_fin (fin_to_finnat k)))) = fsucc (finnat_to_fin (fin_to_finnat k)), transport (P n.+1) p (transport (P n.+1) (path_finnat_to_fin_succ (fin_to_finnat (finnat_to_fin (fin_to_finnat k))))^ (s n (finnat_to_fin (fin_to_finnat (finnat_to_fin (fin_to_finnat k)))) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat (finnat_to_fin (fin_to_finnat k)))))) = s n (finnat_to_fin (fin_to_finnat k)) (transport (P n) 1 (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n

forall p : finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc (finnat_to_fin (fin_to_finnat k)), transport (P n.+1) p (transport (P n.+1) (path_finnat_to_fin_succ (fin_to_finnat k))^ (s n (finnat_to_fin (fin_to_finnat k)) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))) = s n (finnat_to_fin (fin_to_finnat k)) (transport (P n) 1 (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
p: finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc (finnat_to_fin (fin_to_finnat k))

transport (P n.+1) p (transport (P n.+1) (path_finnat_to_fin_succ (fin_to_finnat k))^ (s n (finnat_to_fin (fin_to_finnat k)) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))) = s n (finnat_to_fin (fin_to_finnat k)) (transport (P n) 1 (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
P: forall n : nat, Fin n -> Type
z: forall n : nat, P n.+1 fin_zero
s: forall (n : nat) (k : Fin n), P n k -> P n.+1 (fsucc k)
n: nat
k: Fin n
p: finnat_to_fin (succ_finnat (fin_to_finnat k)) = fsucc (finnat_to_fin (fin_to_finnat k))

transport (P n.+1) p (transport (P n.+1) p^ (s n (finnat_to_fin (fin_to_finnat k)) (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))) = s n (finnat_to_fin (fin_to_finnat k)) (transport (P n) 1 (finnat_ind (fun (n : nat) (u : FinNat n) => P n (finnat_to_fin u)) (fun n0 : nat => z n0) (fun (n' : nat) (u : FinNat n') (c : P n' (finnat_to_fin u)) => transport (P n'.+1) (path_finnat_to_fin_succ u)^ (s n' (finnat_to_fin u) c)) (fin_to_finnat k)))
apply transport_pV. Defined. Definition fin_rec (B : nat -> Type) : (forall n : nat, B n.+1) -> (forall (n : nat), Fin n -> B n -> B n.+1) -> forall {n : nat}, Fin n -> B n := fin_ind (fun n _ => B n).
B: nat -> Type
z: forall n : nat, B n.+1
s: forall n : nat, Fin n -> B n -> B n.+1
n: nat

fin_rec B z s fin_zero = z n
B: nat -> Type
z: forall n : nat, B n.+1
s: forall n : nat, Fin n -> B n -> B n.+1
n: nat

fin_rec B z s fin_zero = z n
apply (compute_fin_ind_fin_zero (fun n _ => B n)). Defined.
B: nat -> Type
z: forall n : nat, B n.+1
s: forall n : nat, Fin n -> B n -> B n.+1
n: nat
k: Fin n

fin_rec B z s (fsucc k) = s n k (fin_rec B z s k)
B: nat -> Type
z: forall n : nat, B n.+1
s: forall n : nat, Fin n -> B n -> B n.+1
n: nat
k: Fin n

fin_rec B z s (fsucc k) = s n k (fin_rec B z s k)
apply (compute_fin_ind_fsucc (fun n _ => B n)). Defined.