Skip to content
Snippets Groups Projects
deptype.lp 523 B
Newer Older
gabrielhdt's avatar
gabrielhdt committed
/// Dependent types
gabrielhdt's avatar
gabrielhdt committed

gabrielhdt's avatar
gabrielhdt committed
/// PVS allows dependent types using theory abstraction. For instance,
gabrielhdt's avatar
gabrielhdt committed
/// vector_real[n: nat]: THEORY BEGIN vec: TYPE END vector
gabrielhdt's avatar
gabrielhdt committed
/// allows to define
gabrielhdt's avatar
gabrielhdt committed
/// cons(n: nat, r: real, v: vector_real[n].vec): vector_real[n + 1].vec
gabrielhdt's avatar
gabrielhdt committed

require open personoj.lhol
             personoj.pvs_cert;
constant symbol Kind: TYPE;
constant symbol set: Kind;

injective symbol Ty : Kind → TYPE;
rule Ty set ↪ Set;

symbol *> : Set → Kind → Kind;
notation *> infix right 6;
rule Ty ($t *> $k) ↪ El $t → Ty $k;