%%% Soundness proof for optimization %%% This is the same as the completeness proof with different modes %%% Author: Brigitte Pientka %%% Modified: Frank Pfenning % Theorem: If E evaluates to V in the new semantics % and E converts to E' then E' evaluates to some V' in % the original semantics and V converts to V'. trans' : eval E V -> conv' E V' -> conv' V V' -> type. %mode trans' -D +C -C'. t'_z : trans' (ev_z) (c'_z) (c'_z). t'_s : trans' (ev_s D) (c'_s P) (c'_s P') <- trans' D P P'. t'_pair : trans' (ev_pair D2 D1) (c'_pair P2 P1) (c'_pair P2' P1') <- trans' D1 P1 P1' <- trans' D2 P2 P2'. t'_lam : trans' (ev_lam) (c'_lam Cv1) (c'_lam Cv1). %terminates C (trans' D C C'). trans: eval E V -> conv E E' -> conv' V V' -> eval' E' V' -> type. %mode trans -D +C -C' +F. t_vl : trans D (c_vl Cv) Cv (ev'_vl) <- trans' D Cv Cv'. t_z : trans (ev_z) (c_z) (c'_z) (ev'_z). t_s : trans (ev_s D) (c_s C) (c'_s C') (ev'_s F) <- trans D C C' F. t_case_z : trans (ev_case_z D2 D1) (c_case C3 C2 C1) Cv2 (ev'_case_z F2 F1) <- trans D1 C1 c'_z F1 <- trans D2 C2 Cv2 F2. t_case_s : trans (ev_case_s D3 D1) (c_case C3 C2 C1) Cv3 (ev'_case_s F3 F1) <- trans D1 C1 (c'_s Cv1) F1 <- trans D3 (C3 V2 V2* Cv1) Cv3 F3. % Pairs t_pair : trans (ev_pair D2 D1) (c_pair C2 C1) (c'_pair Cv2 Cv1) (ev'_pair F2 F1) <- trans D1 C1 Cv1 F1 <- trans D2 C2 Cv2 F2. t_fst : trans (ev_fst D) (c_fst C) Cv1 (ev'_fst F) <- trans D C (c'_pair Cv2 Cv1) F. t_snd : trans (ev_snd D) (c_snd C) Cv2 (ev'_snd F) <- trans D C (c'_pair Cv2 Cv1) F. % Functions t_lam : trans ev_lam (c_lam C) (c'_lam C) ev'_lam. t_app : trans (ev_app D3 D2 D1) (c_app C2 C1) Cv (ev'_app F3 F2 F1) <- trans D1 C1 (c'_lam C) F1 <- trans D2 C2 Cv2 F2 <- trans D3 (C V2 V2* Cv2) Cv F3. % Definitions t_letv : trans (ev_letv D2 D1) (c_letv C2 C1) Cv (ev'_letv F2 F1) <- trans D1 C1 Cv1 F1 <- trans D2 (C2 V1 V1* Cv1) Cv F2. t_letn : trans (ev_letn D) (c_letn C2 C1) Cv (ev'_letn F) <- trans D (C2 E1 E1' C1) Cv F. % Recursion t_fix : trans (ev_fix D) (c_fix C) Cv (ev'_fix F) <- trans D (C (fix E) (fix' E') (c_fix C)) Cv F. %terminates F (trans D C C' F).