(************************************************************************)
(*         *      The Rocq Prover / The Rocq Development Team           *)
(*  v      *         Copyright INRIA, CNRS and contributors             *)
(* <O___,, * (see version control and CREDITS file for authors & dates) *)
(*   \VV/  **************************************************************)
(*    //   *    This file is distributed under the terms of the         *)
(*         *     GNU Lesser General Public License Version 2.1          *)
(*         *     (see LICENSE file for the text of the license)         *)
(************************************************************************)
(************************************************************************)
(** * Some properties of the operators on relations                     *)
(************************************************************************)
(** * Initial version by Bruno Barras                                   *)
(************************************************************************)
Section Properties.
Arguments clos_refl [A] R x _.
Arguments clos_refl_trans [A] R x _.
Arguments clos_refl_trans_1n [A] R x _.
Arguments clos_refl_trans_n1 [A] R x _.
Arguments clos_refl_sym_trans [A] R _ _.
Arguments clos_refl_sym_trans_1n [A] R x _.
Arguments clos_refl_sym_trans_n1 [A] R x _.
Arguments clos_trans [A] R x _.
Arguments clos_trans_1n [A] R x _.
Arguments clos_trans_n1 [A] R x _.
Arguments inclusion [A] R1 R2.
Arguments preorder [A] R.
Variable A : Type.
Variable R : relation A.
Section Clos_Refl_Trans.
#[warning="-notation-incompatible-prefix"]
Local Notation "R *" := (clos_refl_trans R)
(at level 8, no associativity, format "R *").
(** Correctness of the reflexive-transitive closure operator *)

(* Specifications: *)
Lemma clos_rt_is_preorder : preorder R*.
(** Idempotency of the reflexive-transitive closure operator *)
Lemma clos_rt_idempotent : inclusion (R*)* R*.
End Clos_Refl_Trans.