No, Rocq is not a “type-checking-based theorem prover”, it is more generally a full-fledged dependently-typed functional language. And few of those term conversion rules, i.e. alpha-conversion and beta-reduction, you can indeed already find in plain lambda-calculus.
The typing, and especially the dependent typing, rather adds expressivity and complexity, up to proving theorems: but then again, that does not reduce to any system of “just logic”.
Thanks for that clarification. I agree!
As for the typing rules, the Conv rule says, in short, that if t : T, then also t : U for any supertype U of T. It’s an enlargement/lifting (maybe more precisely a kind of cumulativity, but I am not 100% sure that label is appropriate there), anyway the very opposite of a “restriction”.
Hmm… perhaps I did not express myself clearly enough. My original point was that the Conv rule with premises:
E;Γ |- U : s E;Γ |- t : T E;Γ |- T <= U
And conclusion:
E;Γ |- t : U
Restricts the application of any reduction/convertibility rules including:
embedded in the _ <= _ relation to types, when these embedded rules also apply to terms. So we could imagine an alternate form of the conversion rule Conv2 that has the premises:
E;Γ |- U : s E;Γ |- t : T E;Γ |- t |> t' E;Γ |- T <= U
And the conclusion:
E;Γ |- t' : U
where t |> t’ is the transitive closure of the union of all of the reduction/convertibility relations (β, δ, ζ, …).
The restriction to which I was referring was the fact that the reduction/convertibility relation is not applied freely in Conv but limited to be used on types.
Except that indeed you cannot do that in (plain) Rocq/CIC…
I agree!
My point in that paragraph was that the untyped lambda calculus is non-terminating — I was not talking about CIC or any other typed lambda calculus-based system.
I made that point to discuss the need for well-typedness in order to preserve termination, decidability of term normalization, and decidability of type checking (in a dependently typed system).
Hopefully that’s more clear. Thanks.