%%% Proof of Value Soundness %%% Author: Frank Pfenning, based on [Michaylov & Pfenning 92] vs : eval E V -> value V -> type. %mode vs +D -P. % Natural Numbers vs_z : vs (ev_z) (val_z). vs_s : vs (ev_s D1) (val_s P1) <- vs D1 P1. vs_case_z : vs (ev_case_z D2 D1) P2 <- vs D2 P2. vs_case_s : vs (ev_case_s D3 D1) P3 <- vs D3 P3. % Pairs vs_pair : vs (ev_pair D2 D1) (val_pair P2 P1) <- vs D1 P1 <- vs D2 P2. vs_fst : vs (ev_fst D') P1 <- vs D' (val_pair P2 P1). vs_snd : vs (ev_snd D') P2 <- vs D' (val_pair P2 P1). % Functions vs_lam : vs (ev_lam) (val_lam). vs_app : vs (ev_app D3 D2 D1) P3 <- vs D3 P3. % Definitions vs_letv : vs (ev_letv D2 D1) P2 <- vs D2 P2. vs_letn : vs (ev_letn D2) P2 <- vs D2 P2. % Recursion vs_fix : vs (ev_fix D1) P1 <- vs D1 P1. %worlds () (vs D P). %terminates D (vs D _). %covers vs +D -P. %total D (vs D _).