Definition: poset_sig
PosetSig ==  car:Type × eq:car ⟶ car ⟶ 𝔹 × (car ⟶ car ⟶ 𝔹)

Lemma: poset_sig_wf
PosetSig ∈ 𝕌'

Definition: set_car
|p| ==  fst(p)

Lemma: set_car_wf
[p:PosetSig]. (|p| ∈ Type)

Definition: set_eq
=b ==  fst(snd(p))

Lemma: set_eq_wf
[p:PosetSig]. (=b ∈ |p| ⟶ |p| ⟶ 𝔹)

Definition: set_le
b ==  snd(snd(p))

Lemma: set_le_wf
[p:PosetSig]. (≤b ∈ |p| ⟶ |p| ⟶ 𝔹)

Lemma: subtype_rel_poset
PosetSig ⊆PosetSig{[i j]}

Lemma: poset_sig_inc
PosetSig ⊆PosetSig{[i j]}

Definition: dset
DSet ==  {s:PosetSig| IsEqFun(|s|;=b)} 

Lemma: dset_wf
DSet ∈ 𝕌'

Lemma: dset_properties
[s:DSet]. IsEqFun(|s|;=b)

Lemma: assert_of_dset_eq
[s:DSet]. ∀[a,b:|s|].  uiff(↑(a (=bb);a b ∈ |s|)

Lemma: decidable__dset_eq
s:DSet. ∀a,b:|s|.  Dec(a b ∈ |s|)

Lemma: dset_eq_refl
[s:DSet]. ∀[a:|s|].  (=btt

Definition: mk_dset
mk_dset(T, eq) ==  <T, eq, eq>

Lemma: mk_dset_wf
[T:Type]. ∀[eq:T ⟶ T ⟶ 𝔹].  mk_dset(T, eq) ∈ DSet supposing IsEqFun(T;eq)

Definition: set_leq
a ≤ ==  ↑(a (≤bb)

Lemma: set_leq_wf
[p:PosetSig]. ∀[a,b:|p|].  (a ≤ b ∈ ℙ)

Lemma: decidable__set_leq
p:PosetSig. ∀a,b:|p|.  Dec(a ≤ b)

Lemma: assert_of_set_leq
[p:PosetSig]. ∀[a,b:|p|].  uiff(↑(a (≤bb);a ≤ b)

Definition: set_blt
a <b ==  (a (≤bb) ∧b b(b (≤ba))

Lemma: set_blt_wf
[p:PosetSig]. ∀[a,b:|p|].  (a <b b ∈ 𝔹)

Lemma: comb_for_set_blt_wf
λp,a,b,z. (a <b b) ∈ p:PosetSig ⟶ a:|p| ⟶ b:|p| ⟶ (↓True) ⟶ 𝔹

Definition: set_lt
a <==  ↑(a <b b)

Lemma: set_lt_wf
[p:PosetSig]. ∀[a,b:|p|].  (a <b ∈ ℙ)

Lemma: set_lt_is_sp_of_leq
[p:PosetSig]. ∀[a,b:|p|].  uiff(a <b;strict_part(x,y.x ≤ y;a;b))

Lemma: set_lt_is_sp_of_leq_a
[p:PosetSig]. ∀[a,b:|p|].  uiff(a <b;(a ≤ b) ∧ (b ≤ a)))

Lemma: decidable__set_lt
p:PosetSig. ∀a,b:|p|.  Dec(a <b)

Lemma: assert_of_set_lt
[p:PosetSig]. ∀[a,b:|p|].  uiff(↑(a <b b);a <b)

Definition: qoset
QOSet ==  {s:DSet| UniformPreorder(|s|;a,b.a ≤ b)} 

Lemma: qoset_wf
QOSet ∈ 𝕌'

Lemma: qoset_subtype_dset
QOSet ⊆DSet

Lemma: qoset_properties
[s:QOSet]. UniformPreorder(|s|;a,b.a ≤ b)

Lemma: qoset_refl
[s:QOSet]. ∀[a:|s|].  (a ≤ a)

Lemma: set_leq_weakening_eq
[s:QOSet]. ∀[a,b:|s|].  a ≤ supposing b ∈ |s|

Lemma: qoset_trans
[s:QOSet]. ∀[a,b,c:|s|].  (a ≤ c) supposing ((b ≤ c) and (a ≤ b))

Lemma: set_leq_transitivity
[s:QOSet]. ∀[a,b,c:|s|].  (a ≤ c) supposing ((b ≤ c) and (a ≤ b))

Lemma: set_leq_trans
[s:QOSet]. UniformlyTrans(|s|;x,y.x ≤ y)

Lemma: qoset_lt_trans
[s:QOSet]. ∀[a,b,c:|s|].  (a <c) supposing ((b <c) and (a <b))

Lemma: qoset_lt_irrefl
[s:QOSet]. ∀[a,b:|s|].  ¬(a b ∈ |s|) supposing a <b

Lemma: set_lt_irreflexivity
[s:QOSet]. ∀[a:|s|].  False supposing a <a

Lemma: set_leq_weakening_lt
[s:QOSet]. ∀[a,b:|s|].  a ≤ supposing a <b

Lemma: set_lt_transitivity_1
[s:QOSet]. ∀[a,b,c:|s|].  (a <c) supposing ((b <c) and (a ≤ b))

Lemma: set_lt_transitivity_2
[s:QOSet]. ∀[a,b,c:|s|].  (a <c) supposing ((b ≤ c) and (a <b))

Lemma: set_blt_functionality_wrt_set_lt_r
[s:QOSet]. ∀[a,b,b':|s|].  ↑(a <b b (a <b b')) supposing b <b'

Definition: poset
POSet{i} ==  {s:QOSet| UniformlyAntiSym(|s|;a,b.a ≤ b)} 

Lemma: poset_wf
POSet{i} ∈ 𝕌'

Lemma: poset_subtype_qoset
POSet{i} ⊆QOSet

Lemma: poset_properties
[s:POSet{i}]. UniformlyAntiSym(|s|;a,b.a ≤ b)

Lemma: poset_anti_sym
[s:POSet{i}]. ∀[a,b:|s|].  (a b ∈ |s|) supposing ((b ≤ a) and (a ≤ b))

Lemma: set_leq_antisymmetry
[s:POSet{i}]. ∀[a,b:|s|].  (a b ∈ |s|) supposing ((b ≤ a) and (a ≤ b))

Lemma: set_leq_iff_lt_or_eq
s:POSet{i}. ∀a,b:|s|.  (a ≤ ⇐⇒ (a <b) ∨ (a b ∈ |s|))

Definition: loset
LOSet ==  {s:POSet{i}| Connex(|s|;x,y.x ≤ y)} 

Lemma: loset_wf
LOSet ∈ 𝕌'

Lemma: loset_subtype_poset
LOSet ⊆POSet{i}

Lemma: loset_subtype_dset
LOSet ⊆DSet

Lemma: loset_subtype_poset_sig
LOSet ⊆PosetSig

Lemma: loset_properties
s:LOSet. Connex(|s|;x,y.x ≤ y)

Definition: mk_oset
mk_oset(T;eq;leq) ==  <T, eq, leq>

Lemma: mk_oset_wf
[T:Type]. ∀[eq,leq:T ⟶ T ⟶ 𝔹].
  (mk_oset(T;eq;leq) ∈ LOSet) supposing (UniformLinorder(T;a,b.↑(a leq b)) and IsEqFun(T;eq))

Lemma: loset_connex
s:LOSet. ∀x,y:|s|.  ((x ≤ y) ∨ (y ≤ x))

Lemma: loset_trichot
s:LOSet. ∀a,b:|s|.  ((a <b) ∨ (a b ∈ |s|) ∨ (b <a))

Lemma: set_leq_complement
[s:LOSet]. ∀[a,b:|s|].  uiff(¬(a ≤ b);b <a)

Lemma: set_lt_complement
[s:LOSet]. ∀[a,b:|s|].  uiff(¬(b <a);a ≤ b)

Definition: eq_pair
=b ==  ((fst(a)) (=b(fst(b))) ∧b ((snd(a)) (=b(snd(b)))

Lemma: eq_pair_wf
[s,t:DSet]. ∀[a,b:|s| × |t|].  (a =b b ∈ 𝔹)

Lemma: assert_of_eq_pair
[s,t:DSet]. ∀[a,b:|s| × |t|].  uiff(↑(a =b b);a b ∈ (|s| × |t|))

Definition: set_prod
s × ==  mk_dset(|s| × |t|, λa,b. (a =b b))

Lemma: set_prod_wf
[s,t:DSet].  (s × t ∈ DSet)

Definition: dset_set
{x:s| Q[x]} ==  mk_dset({x:|s|| Q[x]} =b)

Lemma: eqfun_p_subtyping
[T:Type]. ∀[P:T ⟶ ℙ]. ∀[eq:T ⟶ T ⟶ 𝔹].  IsEqFun({x:T| P[x]} ;eq) supposing IsEqFun(T;eq)

Lemma: dset_set_wf
[s:DSet]. ∀[Q:|s| ⟶ ℙ].  ({x:s| Q[x]} ∈ DSet)

Definition: int_loset
int_loset() ==  mk_oset(ℤx,y. (x =z y);λx,y. x ≤y)

Lemma: int_loset_wf
int_loset() ∈ LOSet

Definition: atom_dset
atom_dset() ==  mk_dset(Atom, λx,y. =a y)

Lemma: atom_dset_wf
atom_dset() ∈ DSet



Home Index