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]
LocalOpen Scope nat_scope.
P: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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
foralln : nat, P n.+1 (finnat_to_fin (zero_finnat n))
P: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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
foralln : nat, P n.+1 (finnat_to_fin (zero_finnat n))
P: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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))
byapply s.Defined.
P: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : nat, P n.+1 fin_zero s: forall (n : nat) (k : Fin n),
P n k -> P n.+1 (fsucc k) n: nat
forallp : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : nat, P n.+1 fin_zero s: forall (n : nat) (k : Fin n),
P n k -> P n.+1 (fsucc k) n: nat
forallp : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : nat, P n.+1 fin_zero s: forall (n : nat) (k : Fin n),
P n k -> P n.+1 (fsucc k) n: nat
finnat_ind
(fun (n : nat) (u : FinNat n) =>
P n (finnat_to_fin u)) (funn0 : 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
napply finnat_ind_beta_zero.Defined.
P: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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: foralln : nat, Fin n -> Type z: foralln : 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)) (funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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
forallp : 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)) (funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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
forallp : 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)) (funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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)) (funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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))
(funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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
forallp : 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))
(funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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
forallp : 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))
(funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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
forallp : 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))
(funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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))
(funn0 : 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)) (funn0 : 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: foralln : nat, Fin n -> Type z: foralln : 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))
(funn0 : 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)) (funn0 : 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.Definitionfin_rec (B : nat -> Type)
: (foralln : nat, B n.+1) -> (forall (n : nat), Fin n -> B n -> B n.+1) ->
forall {n : nat}, Fin n -> B n
:= fin_ind (funn_ => B n).
B: nat -> Type z: foralln : nat, B n.+1 s: foralln : nat, Fin n -> B n -> B n.+1 n: nat
fin_rec B z s fin_zero = z n
B: nat -> Type z: foralln : nat, B n.+1 s: foralln : nat, Fin n -> B n -> B n.+1 n: nat
fin_rec B z s fin_zero = z n
apply (fin_ind_beta_zero (funn_ => B n)).Defined.
B: nat -> Type z: foralln : nat, B n.+1 s: foralln : 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: foralln : nat, B n.+1 s: foralln : 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 (fin_ind_beta_fsucc (funn_ => B n)).Defined.