Theorem transf_cstrategy_program_preservation: forall p tp, transf_c_program p = OK tp -> (forall beh, program_behaves (Cstrategy.semantics p) beh -> exists beh', program_behaves (Asm.semantics tp) beh' /\ behavior_improves beh beh') /\(forall beh, program_behaves (Asm.semantics tp) beh -> exists beh', program_behaves (Cstrategy.semantics p) beh' /\ behavior_improves beh' beh) /\(forall beh, not_wrong beh -> program_behaves (Cstrategy.semantics p) beh -> program_behaves (Asm.semantics tp) beh) /\(forall beh, (forall beh', program_behaves (Cstrategy.semantics p) beh' -> not_wrong beh') -> program_behaves (Asm.semantics tp) beh -> program_behaves (Cstrategy.semantics p) beh).