Hint Rewrite intsigned_intrepr_bytesigned : rep_omega.
Ltac prove_it_now :=
first [ splittable; fail 1
| computable
| apply Coq.Init.Logic.I
| reflexivity
| rewrite ?intsigned_intrepr_bytesigned; rep_omega (* Omega0 *)
| prove_signed_range
| repeat match goal with H: ?A |- _ => has_evar A; clear H end;
auto with prove_it_now field_compatible;
autorewrite with norm entailer_rewrite; normalize;
first [eapply field_compatible_nullval; eassumption
| eapply field_compatible_nullval1; eassumption
| eapply field_compatible_nullval2; eassumption
]
].
Ltac try_prove_it_now :=
first [match goal with H := _ |- _ => instantiate (1:=True) in H; prove_it_now end
| eassumption].

(* Specifications: *)
(* try_conjuncts.  The purpose of this is to avoid splitting any goal into two subgoals, for the reason that perhaps the user wants to simplify things above the line before splitting. On the other hand, if the current goal is  A/\B/\C/\D where B and D are easily provable, one wants to leave the goal A/\C. *)
Lemma try_conjuncts_lem2: forall A B : Prop,
B -> A -> (A /\ B).
Lemma try_conjuncts_prop:
forall {A}{NA: NatDed A} (S: A) (P P': Prop),
(P' -> P) ->
S |-- !! P' ->
S |-- !! P .