intros A World le forces0 k a1 b forces_a1_b a0.
simpl in |- *.
intros k' w' le_k_k' forces_a0_a1.
apply (forces_a1_b k').
assumption.
assumption.
change (forces A World le forces0 k' a1) in |- *.
elim forces_a0_a1; trivial.
Qed.
(*******   kripke_trees    ****************************************)
Definition atoms := AVL unit.
Definition ANil := AVL_NIL unit.
Definition kripke_tree := Tree atoms.
Definition Kripke_Forest := Forest atoms.
Definition forces0_t (A : atoms) (i : Int) := LOOKUP unit i A tt.
Definition Is_Monotone_kripke_tree := Is_Monotone_Tree atoms Int forces0_t.
Definition Is_Monotone_Kripke_Forest :=
Is_Monotone_Forest atoms Int forces0_t.
Definition Suc (k0 k1 : kripke_tree) := Successor atoms k0 k1.
Definition Atms (k : kripke_tree) := root atoms k.
Definition Succs (k0 : kripke_tree) := successors atoms k0.

(* Specifications: *)
Lemma kripke_tree_kripke_model :
forall k : kripke_tree,
Is_Monotone_kripke_tree k ->
Kripke_Model kripke_tree (fun k0 : kripke_tree => Suc k0 k)
(fun k0 k1 : kripke_tree => Suc k1 k0)
(fun (k0 : kripke_tree) (i : Int) => forces0_t (Atms k0) i).