Library UniMath.OrderTheory.DCPOs.Core.WayBelow
Require Import UniMath.MoreFoundations.All.
Require Import UniMath.OrderTheory.DCPOs.Core.DirectedSets.
Require Import UniMath.OrderTheory.DCPOs.Core.Basics.
Local Open Scope dcpo.
Require Import UniMath.OrderTheory.DCPOs.Core.DirectedSets.
Require Import UniMath.OrderTheory.DCPOs.Core.Basics.
Local Open Scope dcpo.
1. Definition of the way-below relation
Definition way_below
{X : dcpo}
(x y : X)
: hProp
:= (∀ (D : directed_set X), y ⊑ ⨆ D ⇒ ∃ (i : D), x ⊑ D i)%logic.
Notation "x ≪ y" := (way_below x y) (at level 70).
Proposition way_below_elem
{X : dcpo}
{x y : X}
(p : x ≪ y)
(D : directed_set X)
(HD : y ⊑ ⨆ D)
: ∃ (i : D), x ⊑ D i.
Show proof.
Section PropertiesOfWayBelow.
Context {X : dcpo}.
{X : dcpo}
(x y : X)
: hProp
:= (∀ (D : directed_set X), y ⊑ ⨆ D ⇒ ∃ (i : D), x ⊑ D i)%logic.
Notation "x ≪ y" := (way_below x y) (at level 70).
Proposition way_below_elem
{X : dcpo}
{x y : X}
(p : x ≪ y)
(D : directed_set X)
(HD : y ⊑ ⨆ D)
: ∃ (i : D), x ⊑ D i.
Show proof.
exact (p D HD).
Section PropertiesOfWayBelow.
Context {X : dcpo}.
2. Transitivity of the way-below relation
Proposition trans_way_below
{x y z : X}
(p : x ≪ y)
(q : y ≪ z)
: x ≪ z.
Show proof.
{x y z : X}
(p : x ≪ y)
(q : y ≪ z)
: x ≪ z.
Show proof.
intros D HD.
assert (H := way_below_elem q D HD).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intros H.
induction H as [ i H ].
assert (H' : y ⊑ ⨆ D).
{
refine (trans_dcpo H _).
use (less_than_dcpo_lub D _ i).
apply refl_dcpo.
}
exact (way_below_elem p D H').
assert (H := way_below_elem q D HD).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intros H.
induction H as [ i H ].
assert (H' : y ⊑ ⨆ D).
{
refine (trans_dcpo H _).
use (less_than_dcpo_lub D _ i).
apply refl_dcpo.
}
exact (way_below_elem p D H').
3. Interaction between the order of the DCPO and the way-below relation
Proposition trans_way_below_le
{x y z : X}
(p : x ≪ y)
(q : y ⊑ z)
: x ≪ z.
Show proof.
Proposition trans_le_way_below
{x y z : X}
(p : x ⊑ y)
(q : y ≪ z)
: x ≪ z.
Show proof.
Proposition way_below_to_le
{x y : X}
(p : x ≪ y)
: x ⊑ y.
Show proof.
{x y z : X}
(p : x ≪ y)
(q : y ⊑ z)
: x ≪ z.
Show proof.
Proposition trans_le_way_below
{x y z : X}
(p : x ⊑ y)
(q : y ≪ z)
: x ≪ z.
Show proof.
intros D HD.
assert (H := way_below_elem q D HD).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intros H.
induction H as [ i H ].
refine (hinhpr (i ,, _)).
exact (trans_dcpo p H).
assert (H := way_below_elem q D HD).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intros H.
induction H as [ i H ].
refine (hinhpr (i ,, _)).
exact (trans_dcpo p H).
Proposition way_below_to_le
{x y : X}
(p : x ≪ y)
: x ⊑ y.
Show proof.
pose (D := nat_directed_set X (λ _, y) (λ _, refl_dcpo _)).
assert (q : y ⊑ ⨆ D).
{
exact (less_than_dcpo_lub D y 0 (refl_dcpo _)).
}
assert (H := way_below_elem p D q).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intros H.
exact (pr2 H).
assert (q : y ⊑ ⨆ D).
{
exact (less_than_dcpo_lub D y 0 (refl_dcpo _)).
}
assert (H := way_below_elem p D q).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intros H.
exact (pr2 H).
4. Antisymmetry of the way-below relation
Proposition antisymm_way_below
{x y : X}
(p : x ≪ y)
(q : y ≪ x)
: x = y.
Show proof.
End PropertiesOfWayBelow.
{x y : X}
(p : x ≪ y)
(q : y ≪ x)
: x = y.
Show proof.
End PropertiesOfWayBelow.
5. The bottom is way-below every element
Proposition bot_way_below
{X : dcppo}
(x : X)
: ⊥_{X} ≪ x.
Show proof.
{X : dcppo}
(x : X)
: ⊥_{X} ≪ x.
Show proof.
intros D HD.
assert (H := directed_set_el D).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intro i.
refine (hinhpr (i ,, _)).
apply is_min_bottom_dcppo.
assert (H := directed_set_el D).
revert H.
use factor_through_squash.
{
apply propproperty.
}
intro i.
refine (hinhpr (i ,, _)).
apply is_min_bottom_dcppo.
6. Principal lower sets for the way-below relation