Notation match_states':=
  (fun (idx s1 : state L1) (s2 : state L2) => idx = s1 /\ match_states s1 s2).

(* Specifications: *)
Lemma fsim_properties_star_wf: fsim_properties L1 L2 _ order match_states'.
Lemma forward_simulation_star: forward_simulation L1 L2.
Lemma fsim_properties_star: fsim_properties L1 L2 _ (ltof _ measure) (fun (idx s1 : state L1) (s2 : state L2) => idx = s1 /\ match_states s1 s2).
Lemma forward_simulation_plus: forward_simulation L1 L2.
Lemma fsim_properties_plus: fsim_properties L1 L2 _ (ltof _ ( fun _ => O)) (fun (idx s1 : state L1) (s2 : state L2) => idx = s1 /\ match_states s1 s2).
Lemma forward_simulation_step: forward_simulation L1 L2.
Lemma fsim_properties_step: fsim_properties L1 L2 _ (ltof _ ( fun _ => O)) (fun (idx s1 : state L1) (s2 : state L2) => idx = s1 /\ match_states s1 s2).
Lemma forward_simulation_opt: forward_simulation L1 L2.
Lemma fsim_properties_opt: fsim_properties L1 L2 _ (ltof _ measure) (fun (idx s1 : state L1) (s2 : state L2) => idx = s1 /\ match_states s1 s2).
Lemma simulation_star: forall s1 t s1', Star L1 s1 t s1' -> forall i s2, match_states i s1 s2 -> exists i', exists s2', Star L2 s2 t s2' /\ match_states i' s1' s2'.
Lemma simulation_plus: forall s1 t s1', Plus L1 s1 t s1' -> forall i s2, match_states i s1 s2 -> (exists i', exists s2', Plus L2 s2 t s2' /\ match_states i' s1' s2') \/ (exists i', clos_trans _ order i' i /\ t = E0 /\ match_states i' s1' s2).
Lemma simulation_forever_silent: forall i s1 s2, Forever_silent L1 s1 -> match_states i s1 s2 -> Forever_silent L2 s2.
Lemma simulation_forever_reactive: forall i s1 s2 T, Forever_reactive L1 s1 T -> match_states i s1 s2 -> Forever_reactive L2 s2 T.