(* A tactic to globally normalize brackets *)
Ltac normbs :=
repeat match goal with |- context['[p2v ?a,p2v ?b,p2v ?c]] =>
generalize (fbracket_norm a b c);
intros (Hn1, (Hn2, (Hn3, (Hn4, (Hn5, Hn6)))));
rewrite ?Hn1, ?Hn2, ?Hn3, ?Hn4, ?Hn5, ?Hn6;
clear Hn1 Hn2 Hn3 Hn4 Hn5 Hn6
end; unfold fbracket.
(******************************************************************************)
(*   Some distributivity rules                                                *)
(******************************************************************************)

(* Specifications: *)
Lemma expand_meetr (x y x1 y1: point) :
(x ∨ y1) ∧ (x1 ∨ y) = '[x,y1,y] .* x1 - '[x,y1,x1] .* y.
Lemma meet_swap (x y x1 y1: point) :
(x ∨ y1) ∧ (x1 ∨ y) =  (-(1))%f .* (x1 ∨ y) ∧ (x ∨ y1).
Lemma expand_meetl (x y x1 y1: point) :
(x1 ∨ y) ∧ (x ∨ y1) = '[x,y1,x1] .* y - '[x,y1,y] .* x1.
Lemma split_meetl (x1 x2 x3 x4 x5 x6: point) :
(x1 ∨ x2) ∧ (x3 ∨ x4) ∧ (x5 ∨ x6) =
(x1 ∧ (x3 ∨ x4)) ∨ (x2 ∧ (x5 ∨ x6)) +
(-(1))%f .*  ((x2 ∧ (x3 ∨ x4)) ∨ (x1 ∧ (x5 ∨ x6))).