Canonical reverse_blatticeType := BLatticeType L^r reverse_blatticeMixin.
Definition reverse_tblatticeMixin :=
@TBLatticeMixin _ [latticeType of L^r] (bottom : L) (@le0x _ L).
Canonical reverse_tblatticeType := TBLatticeType L^r reverse_tblatticeMixin.
End ReverseTBLattice.
End ReverseTBLattice.
Module Import ReverseTBLatticeSyntax.
Section ReverseTBLatticeSyntax.
Local Notation "0" := bottom.
Local Notation "1" := top.
Local Notation join := (@join (reverse_display _) _).
Local Notation meet := (@meet (reverse_display _) _).
Notation "\join^r_ ( i <- r | P ) F" :=
(\big[join/0]_(i <- r | P%B) F%O) : order_scope.
Notation "\join^r_ ( i <- r ) F" :=
(\big[join/0]_(i <- r) F%O) : order_scope.
Notation "\join^r_ ( i | P ) F" :=
(\big[join/0]_(i | P%B) F%O) : order_scope.
Notation "\join^r_ i F" :=
(\big[join/0]_i F%O) : order_scope.
Notation "\join^r_ ( i : I | P ) F" :=
(\big[join/0]_(i : I | P%B) F%O) (only parsing) : order_scope.
Notation "\join^r_ ( i : I ) F" :=
(\big[join/0]_(i : I) F%O) (only parsing) : order_scope.
Notation "\join^r_ ( m <= i < n | P ) F" :=
(\big[join/0]_(m <= i < n | P%B) F%O) : order_scope.
Notation "\join^r_ ( m <= i < n ) F" :=
(\big[join/0]_(m <= i < n) F%O) : order_scope.
Notation "\join^r_ ( i < n | P ) F" :=
(\big[join/0]_(i < n | P%B) F%O) : order_scope.
Notation "\join^r_ ( i < n ) F" :=
(\big[join/0]_(i < n) F%O) : order_scope.
Notation "\join^r_ ( i 'in' A | P ) F" :=
(\big[join/0]_(i in A | P%B) F%O) : order_scope.
Notation "\join^r_ ( i 'in' A ) F" :=
(\big[join/0]_(i in A) F%O) : order_scope.
Notation "\meet^r_ ( i <- r | P ) F" :=
(\big[meet/1]_(i <- r | P%B) F%O) : order_scope.
Notation "\meet^r_ ( i <- r ) F" :=
(\big[meet/1]_(i <- r) F%O) : order_scope.
Notation "\meet^r_ ( i | P ) F" :=
(\big[meet/1]_(i | P%B) F%O) : order_scope.
Notation "\meet^r_ i F" :=
(\big[meet/1]_i F%O) : order_scope.
Notation "\meet^r_ ( i : I | P ) F" :=
(\big[meet/1]_(i : I | P%B) F%O) (only parsing) : order_scope.
Notation "\meet^r_ ( i : I ) F" :=
(\big[meet/1]_(i : I) F%O) (only parsing) : order_scope.
Notation "\meet^r_ ( m <= i < n | P ) F" :=
(\big[meet/1]_(m <= i < n | P%B) F%O) : order_scope.
Notation "\meet^r_ ( m <= i < n ) F" :=
(\big[meet/1]_(m <= i < n) F%O) : order_scope.
Notation "\meet^r_ ( i < n | P ) F" :=
(\big[meet/1]_(i < n | P%B) F%O) : order_scope.
Notation "\meet^r_ ( i < n ) F" :=
(\big[meet/1]_(i < n) F%O) : order_scope.
Notation "\meet^r_ ( i 'in' A | P ) F" :=
(\big[meet/1]_(i in A | P%B) F%O) : order_scope.
Notation "\meet^r_ ( i 'in' A ) F" :=
(\big[meet/1]_(i in A) F%O) : order_scope.
End ReverseTBLatticeSyntax.
End ReverseTBLatticeSyntax.
Module Import TBLatticeTheory.
Section TBLatticeTheory.
Context {disp : unit}.
Local Notation tblatticeType := (tblatticeType disp).
Context {L : tblatticeType}.
Implicit Types (x y : L).
Local Notation "1" := top.
Hint Resolve le0x lex1.

Lemma subxB x y z : x `\` (y `\` z) = (x `\` y) `|` (x `&` z).