Welcome to Abella 1.1.3-dev2
Reading clauses from ccs.mod
Abella < Theorem mu_id_step_absurd :
forall A Q, {step (mu (x1\x1)) A Q} -> false.
1 subgoal(s).
============================
forall A Q, {step (mu (x1\x1)) A Q} -> false
mu_id_step_absurd < induction on 1.
1 subgoal(s).
IH : forall A Q, {step (mu (x1\x1)) A Q}* -> false
============================
forall A Q, {step (mu (x1\x1)) A Q}@ -> false
mu_id_step_absurd < intros.
1 subgoal(s).
Variables: A, Q
IH : forall A Q, {step (mu (x1\x1)) A Q}* -> false
H1 : {step (mu (x1\x1)) A Q}@
============================
false
mu_id_step_absurd < case H1.
1 subgoal(s).
Variables: A, Q
IH : forall A Q, {step (mu (x1\x1)) A Q}* -> false
H2 : {step (mu (x1\x1)) A Q}*
============================
false
mu_id_step_absurd < apply IH to H2.
Proof completed.
Abella < CoDefine sim P Q := forall A P1, {step P A P1} -> (exists Q1, {step Q A Q1} /\ sim P1 Q1).
Abella < Theorem sim_mu_par_ext :
forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q.
1 subgoal(s).
============================
forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q
sim_mu_par_ext < coinduction.
1 subgoal(s).
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
============================
forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q @
sim_mu_par_ext < intros.
1 subgoal(s).
Variables: P, Q, Q1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
============================
sim (mu (x1\out a x1)) Q @
sim_mu_par_ext < unfold.
1 subgoal(s).
Variables: P, Q, Q1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
============================
forall A P1, {step (mu (x1\out a x1)) A P1} -> (exists Q1,
{step Q A Q1} /\ sim P1 Q1 +)
sim_mu_par_ext < intros.
1 subgoal(s).
Variables: P, Q, Q1, A, P1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
H2 : {step (mu (x1\out a x1)) A P1}
============================
exists Q1, {step Q A Q1} /\ sim P1 Q1 +
sim_mu_par_ext < case H2.
1 subgoal(s).
Variables: P, Q, Q1, A, P1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
H3 : {step (out a (mu (x1\out a x1))) A P1}
============================
exists Q1, {step Q A Q1} /\ sim P1 Q1 +
sim_mu_par_ext < case H3.
1 subgoal(s).
Variables: P, Q, Q1, A, P1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
============================
exists Q1, {step Q a Q1} /\ sim (mu (x1\out a x1)) Q1 +
sim_mu_par_ext < assert {step (par Q Q1) a (par (par Q Q1) Q1)}.
1 subgoal(s).
Variables: P, Q, Q1, A, P1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
H4 : {step (par Q Q1) a (par (par Q Q1) Q1)}
============================
exists Q1, {step Q a Q1} /\ sim (mu (x1\out a x1)) Q1 +
sim_mu_par_ext < apply CH to H4.
1 subgoal(s).
Variables: P, Q, Q1, A, P1
CH : forall P Q Q1, {step Q a (par Q Q1)} -> sim (mu (x1\out a x1)) Q +
H1 : {step Q a (par Q Q1)}
H4 : {step (par Q Q1) a (par (par Q Q1) Q1)}
H5 : sim (mu (x1\out a x1)) (par Q Q1) +
============================
exists Q1, {step Q a Q1} /\ sim (mu (x1\out a x1)) Q1 +
sim_mu_par_ext < search.
Proof completed.
Abella < Theorem sim_mu_par :
sim (mu (x1\out a x1)) (mu (x1\par (out a x1) (out a x1))).
1 subgoal(s).
============================
sim (mu (x1\out a x1)) (mu (x1\par (out a x1) (out a x1)))
sim_mu_par < apply sim_mu_par_ext to _ with Q = mu (x1\par (out a x1) (out a x1)).
1 subgoal(s).
H1 : sim (mu (x1\out a x1)) (mu (x1\par (out a x1) (out a x1)))
============================
sim (mu (x1\out a x1)) (mu (x1\par (out a x1) (out a x1)))
sim_mu_par < search.
Proof completed.
Abella < Theorem sim_refl :
forall P, sim P P.
1 subgoal(s).
============================
forall P, sim P P
sim_refl < coinduction.
1 subgoal(s).
CH : forall P, sim P P +
============================
forall P, sim P P @
sim_refl < intros.
1 subgoal(s).
Variables: P
CH : forall P, sim P P +
============================
sim P P @
sim_refl < unfold.
1 subgoal(s).
Variables: P
CH : forall P, sim P P +
============================
forall A P1, {step P A P1} -> (exists Q1, {step P A Q1} /\ sim P1 Q1 +)
sim_refl < intros.
1 subgoal(s).
Variables: P, A, P1
CH : forall P, sim P P +
H1 : {step P A P1}
============================
exists Q1, {step P A Q1} /\ sim P1 Q1 +
sim_refl < apply CH with P = P1.
1 subgoal(s).
Variables: P, A, P1
CH : forall P, sim P P +
H1 : {step P A P1}
H2 : sim P1 P1 +
============================
exists Q1, {step P A Q1} /\ sim P1 Q1 +
sim_refl < search.
Proof completed.
Abella < Theorem sim_trans :
forall P Q R, sim P Q -> sim Q R -> sim P R.
1 subgoal(s).
============================
forall P Q R, sim P Q -> sim Q R -> sim P R
sim_trans < coinduction.
1 subgoal(s).
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
============================
forall P Q R, sim P Q -> sim Q R -> sim P R @
sim_trans < intros.
1 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H1 : sim P Q
H2 : sim Q R
============================
sim P R @
sim_trans < unfold.
1 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H1 : sim P Q
H2 : sim Q R
============================
forall A P1, {step P A P1} -> (exists Q1, {step R A Q1} /\ sim P1 Q1 +)
sim_trans < intros.
1 subgoal(s).
Variables: P, Q, R, A, P1
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H1 : sim P Q
H2 : sim Q R
H3 : {step P A P1}
============================
exists Q1, {step R A Q1} /\ sim P1 Q1 +
sim_trans < case H1.
1 subgoal(s).
Variables: P, Q, R, A, P1
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H2 : sim Q R
H3 : {step P A P1}
H4 : forall A P1, {step P A P1} -> (exists Q2, {step Q A Q2} /\ sim P1 Q2)
============================
exists Q1, {step R A Q1} /\ sim P1 Q1 +
sim_trans < apply H4 to H3.
1 subgoal(s).
Variables: P, Q, R, A, P1, Q2
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H2 : sim Q R
H3 : {step P A P1}
H4 : forall A P1, {step P A P1} -> (exists Q2, {step Q A Q2} /\ sim P1 Q2)
H5 : {step Q A Q2}
H6 : sim P1 Q2
============================
exists Q1, {step R A Q1} /\ sim P1 Q1 +
sim_trans < case H2.
1 subgoal(s).
Variables: P, Q, R, A, P1, Q2
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H3 : {step P A P1}
H4 : forall A P1, {step P A P1} -> (exists Q2, {step Q A Q2} /\ sim P1 Q2)
H5 : {step Q A Q2}
H6 : sim P1 Q2
H7 : forall A P1, {step Q A P1} -> (exists Q2, {step R A Q2} /\ sim P1 Q2)
============================
exists Q1, {step R A Q1} /\ sim P1 Q1 +
sim_trans < apply H7 to H5.
1 subgoal(s).
Variables: P, Q, R, A, P1, Q2, Q1
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H3 : {step P A P1}
H4 : forall A P1, {step P A P1} -> (exists Q2, {step Q A Q2} /\ sim P1 Q2)
H5 : {step Q A Q2}
H6 : sim P1 Q2
H7 : forall A P1, {step Q A P1} -> (exists Q2, {step R A Q2} /\ sim P1 Q2)
H8 : {step R A Q1}
H9 : sim Q2 Q1
============================
exists Q1, {step R A Q1} /\ sim P1 Q1 +
sim_trans < apply CH to H6 H9.
1 subgoal(s).
Variables: P, Q, R, A, P1, Q2, Q1
CH : forall P Q R, sim P Q -> sim Q R -> sim P R +
H3 : {step P A P1}
H4 : forall A P1, {step P A P1} -> (exists Q2, {step Q A Q2} /\ sim P1 Q2)
H5 : {step Q A Q2}
H6 : sim P1 Q2
H7 : forall A P1, {step Q A P1} -> (exists Q2, {step R A Q2} /\ sim P1 Q2)
H8 : {step R A Q1}
H9 : sim Q2 Q1
H10 : sim P1 Q1 +
============================
exists Q1, {step R A Q1} /\ sim P1 Q1 +
sim_trans < search.
Proof completed.
Abella < CoDefine bisim P Q := (forall A P1, {step P A P1} -> (exists Q1, {step Q A Q1} /\ bisim P1 Q1)) /\
(forall A Q1, {step Q A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1)).
Abella < Theorem bisim_refl :
forall P, bisim P P.
1 subgoal(s).
============================
forall P, bisim P P
bisim_refl < coinduction.
1 subgoal(s).
CH : forall P, bisim P P +
============================
forall P, bisim P P @
bisim_refl < intros.
1 subgoal(s).
Variables: P
CH : forall P, bisim P P +
============================
bisim P P @
bisim_refl < unfold.
2 subgoal(s).
Variables: P
CH : forall P, bisim P P +
============================
forall A P1, {step P A P1} -> (exists Q1, {step P A Q1} /\ bisim P1 Q1 +)
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_refl < intros.
2 subgoal(s).
Variables: P, A, P1
CH : forall P, bisim P P +
H1 : {step P A P1}
============================
exists Q1, {step P A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_refl < apply CH with P = P1.
2 subgoal(s).
Variables: P, A, P1
CH : forall P, bisim P P +
H1 : {step P A P1}
H2 : bisim P1 P1 +
============================
exists Q1, {step P A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_refl < search.
1 subgoal(s).
Variables: P
CH : forall P, bisim P P +
============================
forall A Q1, {step P A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_refl < intros.
1 subgoal(s).
Variables: P, A, Q1
CH : forall P, bisim P P +
H1 : {step P A Q1}
============================
exists P1, {step P A P1} /\ bisim P1 Q1 +
bisim_refl < apply CH with P = Q1.
1 subgoal(s).
Variables: P, A, Q1
CH : forall P, bisim P P +
H1 : {step P A Q1}
H2 : bisim Q1 Q1 +
============================
exists P1, {step P A P1} /\ bisim P1 Q1 +
bisim_refl < search.
Proof completed.
Abella < Theorem bisim_sym :
forall P Q, bisim P Q -> bisim Q P.
1 subgoal(s).
============================
forall P Q, bisim P Q -> bisim Q P
bisim_sym < coinduction.
1 subgoal(s).
CH : forall P Q, bisim P Q -> bisim Q P +
============================
forall P Q, bisim P Q -> bisim Q P @
bisim_sym < intros.
1 subgoal(s).
Variables: P, Q
CH : forall P Q, bisim P Q -> bisim Q P +
H1 : bisim P Q
============================
bisim Q P @
bisim_sym < case H1.
1 subgoal(s).
Variables: P, Q
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
============================
bisim Q P @
bisim_sym < unfold.
2 subgoal(s).
Variables: P, Q
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
============================
forall A P1, {step Q A P1} -> (exists Q1, {step P A Q1} /\ bisim P1 Q1 +)
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step Q A P1} /\ bisim P1 Q1 +)
bisim_sym < intros.
2 subgoal(s).
Variables: P, Q, A, P1
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H4 : {step Q A P1}
============================
exists Q1, {step P A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step Q A P1} /\ bisim P1 Q1 +)
bisim_sym < apply H3 to H4.
2 subgoal(s).
Variables: P, Q, A, P1, P2
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H4 : {step Q A P1}
H5 : {step P A P2}
H6 : bisim P2 P1
============================
exists Q1, {step P A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step Q A P1} /\ bisim P1 Q1 +)
bisim_sym < apply CH to H6.
2 subgoal(s).
Variables: P, Q, A, P1, P2
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H4 : {step Q A P1}
H5 : {step P A P2}
H6 : bisim P2 P1
H7 : bisim P1 P2 +
============================
exists Q1, {step P A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step P A Q1} -> (exists P1, {step Q A P1} /\ bisim P1 Q1 +)
bisim_sym < search.
1 subgoal(s).
Variables: P, Q
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
============================
forall A Q1, {step P A Q1} -> (exists P1, {step Q A P1} /\ bisim P1 Q1 +)
bisim_sym < intros.
1 subgoal(s).
Variables: P, Q, A, Q1
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H4 : {step P A Q1}
============================
exists P1, {step Q A P1} /\ bisim P1 Q1 +
bisim_sym < apply H2 to H4.
1 subgoal(s).
Variables: P, Q, A, Q1, Q2
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H4 : {step P A Q1}
H5 : {step Q A Q2}
H6 : bisim Q1 Q2
============================
exists P1, {step Q A P1} /\ bisim P1 Q1 +
bisim_sym < apply CH to H6.
1 subgoal(s).
Variables: P, Q, A, Q1, Q2
CH : forall P Q, bisim P Q -> bisim Q P +
H2 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H3 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H4 : {step P A Q1}
H5 : {step Q A Q2}
H6 : bisim Q1 Q2
H7 : bisim Q2 Q1 +
============================
exists P1, {step Q A P1} /\ bisim P1 Q1 +
bisim_sym < search.
Proof completed.
Abella < Theorem bisim_trans :
forall P Q R, bisim P Q -> bisim Q R -> bisim P R.
1 subgoal(s).
============================
forall P Q R, bisim P Q -> bisim Q R -> bisim P R
bisim_trans < coinduction.
1 subgoal(s).
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
============================
forall P Q R, bisim P Q -> bisim Q R -> bisim P R @
bisim_trans < intros.
1 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H1 : bisim P Q
H2 : bisim Q R
============================
bisim P R @
bisim_trans < case H1.
1 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H2 : bisim Q R
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
============================
bisim P R @
bisim_trans < case H2.
1 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
============================
bisim P R @
bisim_trans < unfold.
2 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
============================
forall A P1, {step P A P1} -> (exists Q1, {step R A Q1} /\ bisim P1 Q1 +)
subgoal 2 is:
forall A Q1, {step R A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_trans < intros.
2 subgoal(s).
Variables: P, Q, R, A, P1
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step P A P1}
============================
exists Q1, {step R A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step R A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_trans < apply H3 to H7.
2 subgoal(s).
Variables: P, Q, R, A, P1, Q2
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step P A P1}
H8 : {step Q A Q2}
H9 : bisim P1 Q2
============================
exists Q1, {step R A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step R A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_trans < apply H5 to H8.
2 subgoal(s).
Variables: P, Q, R, A, P1, Q2, Q1
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step P A P1}
H8 : {step Q A Q2}
H9 : bisim P1 Q2
H10 : {step R A Q1}
H11 : bisim Q2 Q1
============================
exists Q1, {step R A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step R A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_trans < apply CH to H9 H11.
2 subgoal(s).
Variables: P, Q, R, A, P1, Q2, Q1
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step P A P1}
H8 : {step Q A Q2}
H9 : bisim P1 Q2
H10 : {step R A Q1}
H11 : bisim Q2 Q1
H12 : bisim P1 Q1 +
============================
exists Q1, {step R A Q1} /\ bisim P1 Q1 +
subgoal 2 is:
forall A Q1, {step R A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_trans < search.
1 subgoal(s).
Variables: P, Q, R
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
============================
forall A Q1, {step R A Q1} -> (exists P1, {step P A P1} /\ bisim P1 Q1 +)
bisim_trans < intros.
1 subgoal(s).
Variables: P, Q, R, A, Q1
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step R A Q1}
============================
exists P1, {step P A P1} /\ bisim P1 Q1 +
bisim_trans < apply H6 to H7.
1 subgoal(s).
Variables: P, Q, R, A, Q1, P2
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step R A Q1}
H8 : {step Q A P2}
H9 : bisim P2 Q1
============================
exists P1, {step P A P1} /\ bisim P1 Q1 +
bisim_trans < apply H4 to H8.
1 subgoal(s).
Variables: P, Q, R, A, Q1, P2, P1
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step R A Q1}
H8 : {step Q A P2}
H9 : bisim P2 Q1
H10 : {step P A P1}
H11 : bisim P1 P2
============================
exists P1, {step P A P1} /\ bisim P1 Q1 +
bisim_trans < apply CH to H11 H9.
1 subgoal(s).
Variables: P, Q, R, A, Q1, P2, P1
CH : forall P Q R, bisim P Q -> bisim Q R -> bisim P R +
H3 : forall A P2, {step P A P2} -> (exists Q2, {step Q A Q2} /\
bisim P2 Q2)
H4 : forall A Q2, {step Q A Q2} -> (exists P2, {step P A P2} /\
bisim P2 Q2)
H5 : forall A P2, {step Q A P2} -> (exists Q2, {step R A Q2} /\
bisim P2 Q2)
H6 : forall A Q2, {step R A Q2} -> (exists P2, {step Q A P2} /\
bisim P2 Q2)
H7 : {step R A Q1}
H8 : {step Q A P2}
H9 : bisim P2 Q1
H10 : {step P A P1}
H11 : bisim P1 P2
H12 : bisim P1 Q1 +
============================
exists P1, {step P A P1} /\ bisim P1 Q1 +
bisim_trans < search.
Proof completed.
Abella < Goodbye.