%%% Completeness of uniform proofs with respect to canonical deductions %%% Author: Frank Pfenning cmpcs : can A D -> solve A -> type. cmpai : {D:pf A} atm D -> ({P:p} A >> P -> solve (atom P)) -> type. %mode cmpcs +CN -S. %mode cmpai +D +AT -S. cmpcs_andi : cmpcs (can_andi CN2 CN1) (s_and S2 S1) <- cmpcs CN1 S1 <- cmpcs CN2 S2. cmpcs_impi : cmpcs (can_impi CN1) (s_imp S1) <- ({u:pf A2} {a:atm u} {d:assume A2} cmpai u a ([P:p] [i:A2 >> P] s_atom i d) -> cmpcs (CN1 u a) (S1 d)). cmpcs_truei : cmpcs (can_truei) (s_true). cmpcs_foralli : cmpcs (can_foralli CN1) (s_forall S1) <- {a:i} cmpcs (CN1 a) (S1 a). cmpcs_atm : cmpcs (can_atm (AT1 : atm D)) (I1 Q (i_atom)) <- cmpai D AT1 I1. cmpai_andel : cmpai (andel D1) (atm_andel CN1) ([P:p] [i:A >> P] I1 P (i_andl i)) <- cmpai D1 CN1 I1. cmpai_ander : cmpai (ander D1) (atm_ander CN1) ([P:p] [i:A >> P] I1 P (i_andr i)) <- cmpai D1 CN1 I1. cmpai_impe : cmpai (impe D1 D2) (atm_impe CN2 AT1) ([P:p] [i:A >> P] I1 P (i_imp S2 i)) <- cmpai D1 AT1 I1 <- cmpcs CN2 S2. cmpai_foralle : cmpai (foralle D1 T) (atm_foralle AT1) ([P:p] [i] I1 P (i_forall T i)) <- cmpai D1 AT1 I1. %block l_cmpai : some {A:o} block {u:pf A} {a:atm u} {d:assume A} {cai:cmpai u a ([P:p] [i:A >> P] s_atom i d)}. %worlds (l_i | l_cmpai) (cmpcs CN S) (cmpai D AT S'). %total (CN AT) (cmpcs CN _) (cmpai D AT _).