Goal forall x y : proc, mer x y = mer y x.
intros.
elim CM1.
elim CM1.
elim SC3.
elim (A1 (Lmer x y) (Lmer y x)).
apply refl_equal.
Save SC6.
(* The next axiom should be proven correct *)
Goal forall x y z : proc, mer x (mer y z) = mer (mer x y) z.
intros.
repeat elim CM1.
(* Repeat Elim SC1. *)
repeat elim CM8.
repeat elim CM9.
repeat elim CM4.
repeat elim SC5.
repeat elim SC4.
repeat elim CM1.
repeat elim A2.
repeat elim SC1.
repeat elim CM1.
elim (A1 (Lmer z x) (Lmer x z)).
repeat elim A2.
elim (SC3 x z).
elimtype
(alt (Lmer z (alt (Lmer y x) (alt (Lmer x y) (comm y x))))
(alt (Lmer (comm y z) x)
(alt (Lmer (comm x y) z) (alt (Lmer (comm z x) y) (comm x (comm y z))))) =
alt (Lmer (comm x y) z)
(alt (Lmer z (alt (Lmer x y) (alt (Lmer y x) (comm x y))))
(alt (comm (Lmer x y) z) (alt (comm (Lmer y x) z) (comm x (comm y z)))))).
apply refl_equal.
elim
(A1
(alt (Lmer z (alt (Lmer x y) (alt (Lmer y x) (comm x y))))
(alt (comm (Lmer x y) z) (alt (comm (Lmer y x) z) (comm x (comm y z)))))
(Lmer (comm x y) z)).
repeat elim A2.
elimtype
(alt (Lmer (comm y z) x)
(alt (Lmer (comm x y) z) (alt (Lmer (comm z x) y) (comm x (comm y z)))) =
alt (comm (Lmer x y) z)
(alt (comm (Lmer y x) z) (alt (comm x (comm y z)) (Lmer (comm x y) z)))).
elimtype
(alt (Lmer y x) (alt (Lmer x y) (comm y x)) =
alt (Lmer x y) (alt (Lmer y x) (comm x y))).
apply refl_equal.
elim SC3.
elim A1.
elim A2.
elim (A1 (comm x y) (Lmer y x)).
apply refl_equal.
elim (SC3 (Lmer y x) z).
elim SC5.
elim
(A1 (alt (Lmer (comm z y) x) (alt (comm x (comm y z)) (Lmer (comm x y) z)))
(comm (Lmer x y) z)).
repeat elim A2.
elimtype
(alt (Lmer (comm x y) z) (alt (Lmer (comm z x) y) (comm x (comm y z))) =
alt (comm x (comm y z)) (alt (Lmer (comm x y) z) (comm (Lmer x y) z))).
elim (SC3 y z).
apply refl_equal.
elim (A1 (alt (Lmer (comm x y) z) (comm (Lmer x y) z)) (comm x (comm y z))).
elim A2.
elim (SC3 (Lmer x y) z).
elim SC5.
apply refl_equal.
Save SC7.
Section CONDITION.
Variable x y : proc.

Axiom COND1 : x = cond x true y.