package coq-core
Install
Dune Dependency
Authors
Maintainers
Sources
md5=13d2793fc6413aac5168822313e4864e
sha512=ec8379df34ba6e72bcf0218c66fef248b0e4c5c436fb3f2d7dd83a2c5f349dd0874a67484fcf9c0df3e5d5937d7ae2b2a79274725595b4b0065a381f70769b42
doc/coq-core.kernel/Cooking/index.html
Module Cooking
Source
Data needed to abstract over the section variables and section universes
The instantiation to apply to generalized declarations so that they behave as if not generalized: this is the a1..an instance to apply to a declaration c in the following transformation: a1:T1..an:Tn, C:U(a1..an) ⊢ v(a1..an,C):V(a1..an,C) ~~> C:Πx1..xn.U(x1..xn), a1:T1..an:Tn ⊢ v(a1..an,Ca1..an):V(a1..an,Ca1..an)
note that the data looks close to the one for substitution above (because the substitution are represented by their domain) but here, local definitions of the context have been dropped
The collection of instantiations to be done on generalized declarations + the generalization to be done on a specific judgment: a1:T1,a2:T2,C:U(a1) ⊢ v(a1,a2,C):V(a1,a2,C) ~~> c:Πx.U(x) ⊢ λx1x2.(v(a1,a2,cx1)[a1,a2:=x1,x2]):Πx1x2.(V(a1,a2,ca1)[a1,a2:=x1,x2])
so, a cooking_info is the map c ↦ x1..xn
, the context x:T,y:U to generalize, and the substitution x,y
Nothing to abstract
val make_cooking_info :
recursive:Names.MutInd.t option ->
expand_info ->
Constr.named_context ->
UVars.UContext.t ->
cooking_info * abstr_inst_info
Abstract a context assumed to be de-Bruijn free for terms and universes
val lift_poly_univs :
cooking_info ->
UVars.AbstractContext.t ->
cooking_info * (int * int) * UVars.AbstractContext.t
The int
is how many universes got discharged, ie size of returned context - size of input context.