Built with Alectryon, running Coq+SerAPI v8.10.0+0.7.0. Coq sources are in this panel; goals and messages will appear in the other. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+🖱️ to focus.
(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* <O___,, * (see CREDITS file for the list of authors) *) (* \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) *) (************************************************************************) (****************************************************************************) (* *) (* Naive Set Theory in Coq *) (* *) (* INRIA INRIA *) (* Rocquencourt Sophia-Antipolis *) (* *) (* Coq V6.1 *) (* *) (* Gilles Kahn *) (* Gerard Huet *) (* *) (* *) (* *) (* Acknowledgments: This work was started in July 1993 by F. Prost. Thanks *) (* to the Newton Institute for providing an exceptional work environment *) (* in Summer 1995. Several developments by E. Ledinot were an inspiration. *) (****************************************************************************) Require Export Relations_1. Require Export Relations_1_facts. Require Export Relations_2. Require Export Relations_2_facts. Require Export Relations_3.forall (U : Type) (R : Relation U) (x y : U), Rstar U R x y -> coherent U R x yforall (U : Type) (R : Relation U) (x y : U), Rstar U R x y -> coherent U R x yexists y; auto with sets. Qed. Hint Resolve Rstar_imp_coherent : core.U:TypeR:Relation Ux, y:UH':Rstar U R x yexists z : U, Rstar U R x z /\ Rstar U R y zforall (U : Type) (R : Relation U), Symmetric U (coherent U R)forall (U : Type) (R : Relation U), Symmetric U (coherent U R)forall (U : Type) (R : Relation U), Symmetric U (fun x y : U => exists z : U, Rstar U R x z /\ Rstar U R y z)U:TypeR:Relation Uforall x y : U, (exists z : U, Rstar U R x z /\ Rstar U R y z) -> exists z : U, Rstar U R y z /\ Rstar U R x zintros z H'0; exists z; tauto. Qed.U:TypeR:Relation Ux, y:UH':exists z : U, Rstar U R x z /\ Rstar U R y zforall x0 : U, Rstar U R x x0 /\ Rstar U R y x0 -> exists z : U, Rstar U R y z /\ Rstar U R x zforall (U : Type) (R : Relation U), Strongly_confluent U R -> Confluent U Rforall (U : Type) (R : Relation U), Strongly_confluent U R -> Confluent U RU:TypeR:Relation UH':Strongly_confluent U Rforall x : U, confluent U R xU:TypeR:Relation UH':Strongly_confluent U Rx, a, b:UH'0:Rstar U R x aRstar U R x b -> coherent U R a bU:TypeR:Relation UH':Strongly_confluent U Rx, a, b:UH'0:Rstar U R x aRstar U R x b -> exists z : U, Rstar U R a z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:UH'0:Rstar U R x aforall b : U, Rstar U R x b -> exists z : U, Rstar U R a z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 b : U, Rstar U R x0 b -> exists z : U, Rstar U R x0 z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 y z : U, R x0 y -> Rstar U R y z -> (forall b : U, Rstar U R y b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0) -> forall b : U, Rstar U R x0 b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0intros x0 b H'1; exists b; auto with sets.U:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 b : U, Rstar U R x0 b -> exists z : U, Rstar U R x0 z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 y z : U, R x0 y -> Rstar U R y z -> (forall b : U, Rstar U R y b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0) -> forall b : U, Rstar U R x0 b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bexists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z1 : U, Rstar U R z z1 /\ Rstar U R b0 z1b:UH'4:Rstar U R x0 bH'0:forall x1 b0 : U, Rstar U R x1 b0 -> forall a0 : U, R x1 a0 -> exists z1 : U, Rstar U R a0 z1 /\ R b0 z1H'5:forall a0 : U, R x0 a0 -> exists z1 : U, Rstar U R a0 z1 /\ R b z1z0:UH'6:Rstar U R y z0H'7:R b z0exists z1 : U, Rstar U R z z1 /\ Rstar U R b z1U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z2 : U, Rstar U R z z2 /\ Rstar U R b0 z2b:UH'4:Rstar U R x0 bH'0:forall x1 b0 : U, Rstar U R x1 b0 -> forall a0 : U, R x1 a0 -> exists z2 : U, Rstar U R a0 z2 /\ R b0 z2H'5:forall a0 : U, R x0 a0 -> exists z2 : U, Rstar U R a0 z2 /\ R b z2z0:UH'6:Rstar U R y z0H'7:R b z0z1:UH'8:Rstar U R z z1H'9:Rstar U R z0 z1exists z2 : U, Rstar U R z z2 /\ Rstar U R b z2apply Rstar_n with z0; auto with sets. Qed.U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z2 : U, Rstar U R z z2 /\ Rstar U R b0 z2b:UH'4:Rstar U R x0 bH'0:forall x1 b0 : U, Rstar U R x1 b0 -> forall a0 : U, R x1 a0 -> exists z2 : U, Rstar U R a0 z2 /\ R b0 z2H'5:forall a0 : U, R x0 a0 -> exists z2 : U, Rstar U R a0 z2 /\ R b z2z0:UH'6:Rstar U R y z0H'7:R b z0z1:UH'8:Rstar U R z z1H'9:Rstar U R z0 z1Rstar U R b z1forall (U : Type) (R : Relation U), Strongly_confluent U R -> Confluent U Rforall (U : Type) (R : Relation U), Strongly_confluent U R -> Confluent U RU:TypeR:Relation UH':Strongly_confluent U Rforall x : U, confluent U R xU:TypeR:Relation UH':Strongly_confluent U Rx, a, b:UH'0:Rstar U R x aRstar U R x b -> coherent U R a bU:TypeR:Relation UH':Strongly_confluent U Rx, a, b:UH'0:Rstar U R x aRstar U R x b -> exists z : U, Rstar U R a z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:UH'0:Rstar U R x aforall b : U, Rstar U R x b -> exists z : U, Rstar U R a z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 b : U, Rstar U R x0 b -> exists z : U, Rstar U R x0 z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 y z : U, R x0 y -> Rstar U R y z -> (forall b : U, Rstar U R y b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0) -> forall b : U, Rstar U R x0 b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0intros x0 b H'1; exists b; auto with sets.U:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 b : U, Rstar U R x0 b -> exists z : U, Rstar U R x0 z /\ Rstar U R b zU:TypeR:Relation UH':Strongly_confluent U Rx, a:Uforall x0 y z : U, R x0 y -> Rstar U R y z -> (forall b : U, Rstar U R y b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0) -> forall b : U, Rstar U R x0 b -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bexists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 b(exists t : U, Rstar U R y t /\ R b t) -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bexists t : U, Rstar U R y t /\ R b tU:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 b(exists t : U, Rstar U R y t /\ R b t) -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bt:UH'0:Rstar U R y tH'5:R b texists z0 : U, Rstar U R z z0 /\ Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z1 : U, Rstar U R z z1 /\ Rstar U R b0 z1b:UH'4:Rstar U R x0 bt:UH'0:Rstar U R y tH'5:R b tz0:UH'6:Rstar U R z z0H'7:Rstar U R t z0exists z1 : U, Rstar U R z z1 /\ Rstar U R b z1apply Rstar_n with t; auto with sets.U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z1 : U, Rstar U R z z1 /\ Rstar U R b0 z1b:UH'4:Rstar U R x0 bt:UH'0:Rstar U R y tH'5:R b tz0:UH'6:Rstar U R z z0H'7:Rstar U R t z0Rstar U R b z0U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'1:R x0 yH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bexists t : U, Rstar U R y t /\ R b tU:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bforall y0 : U, R x0 y0 -> exists t : U, Rstar U R y0 t /\ R b tU:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bforall x1 y0 : U, R x1 y0 -> exists t : U, Rstar U R y0 t /\ R x1 tU:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bforall x1 y0 z0 : U, R x1 y0 -> Rstar U R y0 z0 -> (forall y1 : U, R y0 y1 -> exists t : U, Rstar U R y1 t /\ R z0 t) -> forall y1 : U, R x1 y1 -> exists t : U, Rstar U R y1 t /\ R z0 tintros x1 y0 H'0; exists y0; auto with sets.U:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bforall x1 y0 : U, R x1 y0 -> exists t : U, Rstar U R y0 t /\ R x1 tU:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z0 : U, Rstar U R z z0 /\ Rstar U R b0 z0b:UH'4:Rstar U R x0 bforall x1 y0 z0 : U, R x1 y0 -> Rstar U R y0 z0 -> (forall y1 : U, R y0 y1 -> exists t : U, Rstar U R y1 t /\ R z0 t) -> forall y1 : U, R x1 y1 -> exists t : U, Rstar U R y1 t /\ R z0 tU:TypeR:Relation UH':Strongly_confluent U Rx, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z1 : U, Rstar U R z z1 /\ Rstar U R b0 z1b:UH'4:Rstar U R x0 bx1, y0, z0:UH'0:R x1 y0H'1:Rstar U R y0 z0H'5:forall y2 : U, R y0 y2 -> exists t : U, Rstar U R y2 t /\ R z0 ty1:UH'6:R x1 y1exists t : U, Rstar U R y1 t /\ R z0 tU:TypeR:Relation UH':forall x2 a0 b0 : U, R x2 a0 -> R x2 b0 -> exists z1 : U, R a0 z1 /\ R b0 z1x, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z1 : U, Rstar U R z z1 /\ Rstar U R b0 z1b:UH'4:Rstar U R x0 bx1, y0, z0:UH'0:R x1 y0H'1:Rstar U R y0 z0H'5:forall y2 : U, R y0 y2 -> exists t : U, Rstar U R y2 t /\ R z0 ty1:UH'6:R x1 y1exists t : U, Rstar U R y1 t /\ R z0 tU:TypeR:Relation UH':forall x2 a0 b0 : U, R x2 a0 -> R x2 b0 -> exists z2 : U, R a0 z2 /\ R b0 z2x, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z2 : U, Rstar U R z z2 /\ Rstar U R b0 z2b:UH'4:Rstar U R x0 bx1, y0, z0:UH'0:R x1 y0H'1:Rstar U R y0 z0H'5:forall y2 : U, R y0 y2 -> exists t : U, Rstar U R y2 t /\ R z0 ty1:UH'6:R x1 y1z1:UH'8:R y0 z1H'9:R y1 z1exists t : U, Rstar U R y1 t /\ R z0 tU:TypeR:Relation UH':forall x2 a0 b0 : U, R x2 a0 -> R x2 b0 -> exists z2 : U, R a0 z2 /\ R b0 z2x, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z2 : U, Rstar U R z z2 /\ Rstar U R b0 z2b:UH'4:Rstar U R x0 bx1, y0, z0:UH'0:R x1 y0H'1:Rstar U R y0 z0H'5:forall y2 : U, R y0 y2 -> exists t0 : U, Rstar U R y2 t0 /\ R z0 t0y1:UH'6:R x1 y1z1:UH'8:R y0 z1H'9:R y1 z1t:UH'7:Rstar U R z1 tH'10:R z0 texists t0 : U, Rstar U R y1 t0 /\ R z0 t0apply Rstar_n with z1; auto with sets. Qed.U:TypeR:Relation UH':forall x2 a0 b0 : U, R x2 a0 -> R x2 b0 -> exists z2 : U, R a0 z2 /\ R b0 z2x, a, x0, y, z:UH'2:Rstar U R y zH'3:forall b0 : U, Rstar U R y b0 -> exists z2 : U, Rstar U R z z2 /\ Rstar U R b0 z2b:UH'4:Rstar U R x0 bx1, y0, z0:UH'0:R x1 y0H'1:Rstar U R y0 z0H'5:forall y2 : U, R y0 y2 -> exists t0 : U, Rstar U R y2 t0 /\ R z0 t0y1:UH'6:R x1 y1z1:UH'8:R y0 z1H'9:R y1 z1t:UH'7:Rstar U R z1 tH'10:R z0 tRstar U R y1 tforall (U : Type) (R R' : Relation U), Noetherian U R -> contains U R R' -> Noetherian U R'forall (U : Type) (R R' : Relation U), Noetherian U R -> contains U R R' -> Noetherian U R'forall (U : Type) (R R' : Relation U), Noetherian U R -> contains U R R' -> forall x : U, noetherian U R' xelim (H' x); auto with sets. Qed.U:TypeR, R':Relation UH':Noetherian U RH'0:contains U R R'x:Unoetherian U R' xforall (U : Type) (R : Relation U), Noetherian U R -> Locally_confluent U R -> Confluent U Rforall (U : Type) (R : Relation U), Noetherian U R -> Locally_confluent U R -> Confluent U RU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx:Uconfluent U R xU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx:Uforall x0 : U, (forall y : U, R x0 y -> noetherian U R y) -> (forall y : U, R x0 y -> forall y0 z : U, Rstar U R y y0 -> Rstar U R y z -> coherent U R y0 z) -> forall y z : U, Rstar U R x0 y -> Rstar U R x0 z -> coherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zcoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zh1:x0 = ycoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u ycoherent U R y zelim h1; auto with sets.U:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zh1:x0 = ycoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u ycoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yh1:x0 = zcoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zcoherent U R y zelim h1; generalize coherent_symmetric; intro t; red in t; auto with sets.U:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yh1:x0 = zcoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:Locally_confluent U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zcoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:forall x1 y0 z0 : U, R x1 y0 -> R x1 z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1x, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zcoherent U R y zU:TypeR:Relation UH':Noetherian U RH'0:forall x1 y0 z0 : U, R x1 y0 -> R x1 z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1x, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tcoherent U R y zU:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> coherent U R y1 z0y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tcoherent U R y zU:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y1 z0 : U, Rstar U R y0 y1 -> Rstar U R y0 z0 -> exists z1 : U, Rstar U R y1 z1 /\ Rstar U R z0 z1y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tcoherent U R y zU:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z1 : U, Rstar U R y2 z1 /\ Rstar U R z0 z1y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1coherent U R y zU:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z1 : U, Rstar U R y2 z1 /\ Rstar U R z0 z1y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1T:forall (U0 : Type) (R0 : Relation U0) (x1 y0 z0 : U0), Rstar U0 R0 x1 y0 -> Rstar U0 R0 y0 z0 -> Rstar U0 R0 x1 z0coherent U R y zU:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z2 : U, Rstar U R y2 z2 /\ Rstar U R z0 z2y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z2 : U, Rstar U R y0 z2 /\ Rstar U R z0 z2y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1T:forall (U0 : Type) (R0 : Relation U0) (x1 y0 z0 : U0), Rstar U0 R0 x1 y0 -> Rstar U0 R0 y0 z0 -> Rstar U0 R0 x1 z0H'9:forall y0 z0 : U, Rstar U R v y0 -> Rstar U R v z0 -> exists z2 : U, Rstar U R y0 z2 /\ Rstar U R z0 z2z1:UH'15:Rstar U R y1 z1H'16:Rstar U R z z1coherent U R y zU:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z1 : U, Rstar U R y2 z1 /\ Rstar U R z0 z1y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1T:forall (U0 : Type) (R0 : Relation U0) (x1 y0 z0 : U0), Rstar U0 R0 x1 y0 -> Rstar U0 R0 y0 z0 -> Rstar U0 R0 x1 z0H'9:forall y0 z0 : U, Rstar U R v y0 -> Rstar U R v z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1Rstar U R v y1U:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z2 : U, Rstar U R y2 z2 /\ Rstar U R z0 z2y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z2 : U, Rstar U R y0 z2 /\ Rstar U R z0 z2y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1T:forall (U0 : Type) (R0 : Relation U0) (x1 y0 z0 : U0), Rstar U0 R0 x1 y0 -> Rstar U0 R0 y0 z0 -> Rstar U0 R0 x1 z0H'9:forall y0 z0 : U, Rstar U R v y0 -> Rstar U R v z0 -> exists z2 : U, Rstar U R y0 z2 /\ Rstar U R z0 z2z1:UH'15:Rstar U R y1 z1H'16:Rstar U R z z1coherent U R y zapply T with y1; auto with sets.U:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z2 : U, Rstar U R y2 z2 /\ Rstar U R z0 z2y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z2 : U, Rstar U R y0 z2 /\ Rstar U R z0 z2y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1T:forall (U0 : Type) (R0 : Relation U0) (x1 y0 z0 : U0), Rstar U0 R0 x1 y0 -> Rstar U0 R0 y0 z0 -> Rstar U0 R0 x1 z0H'9:forall y0 z0 : U, Rstar U R v y0 -> Rstar U R v z0 -> exists z2 : U, Rstar U R y0 z2 /\ Rstar U R z0 z2z1:UH'15:Rstar U R y1 z1H'16:Rstar U R z z1Rstar U R y z1apply T with t; auto with sets. Qed.U:TypeR:Relation UH':Noetherian U Rx, x0:UH'1:forall y0 : U, R x0 y0 -> noetherian U R y0H'2:forall y0 : U, R x0 y0 -> forall y2 z0 : U, Rstar U R y0 y2 -> Rstar U R y0 z0 -> exists z1 : U, Rstar U R y2 z1 /\ Rstar U R z0 z1y, z:UH'3:Rstar U R x0 yH'4:Rstar U R x0 zu:UH'5:R x0 uH'6:Rstar U R u yv:UH'7:R x0 vH'8:Rstar U R v zt:UH'10:Rstar U R u tH'11:Rstar U R v tH'0:forall y0 z0 : U, Rstar U R u y0 -> Rstar U R u z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1y1:UH'12:Rstar U R y y1H'13:Rstar U R t y1T:forall (U0 : Type) (R0 : Relation U0) (x1 y0 z0 : U0), Rstar U0 R0 x1 y0 -> Rstar U0 R0 y0 z0 -> Rstar U0 R0 x1 z0H'9:forall y0 z0 : U, Rstar U R v y0 -> Rstar U R v z0 -> exists z1 : U, Rstar U R y0 z1 /\ Rstar U R z0 z1Rstar U R v y1