Definition cast_no_val_change (from: type)(to:type) : bool :=
match from, to with
| Tint _ _ _, Tint I32 _ _ => true
| Tpointer _ _, Tpointer _ _ => 
    eqb_type from to || 
    negb (eqb_type from int_or_ptr_type) && 
    negb (eqb_type to int_or_ptr_type)
| Tfloat F64 _ , Tfloat F64 _ => true
| Tfloat F32 _ , Tfloat F32 _ => true
| _, _ => false
end.

Lemma typecheck_tid_ptr_compare_sub: forall Delta Delta', tycontext_sub Delta Delta' -> forall id, typecheck_tid_ptr_compare Delta id = true -> typecheck_tid_ptr_compare Delta' id = true.