Definition: co-value
co-value() ==  corec(L.atomic-values() ⋃ (L × L) ⋃ (L L))

Lemma: co-value_wf
co-value() ∈ Type

Lemma: continuous-monotone-co-value
ContinuousMonotone(T.atomic-values() ⋃ (T × T) ⋃ (T T))

Lemma: co-value-ext
co-value() ≡ atomic-values() ⋃ (co-value() × co-value()) ⋃ (co-value() co-value())

Definition: co-value-height
co-value-height(t)
==r if is pair then let a,b 
                        in co-value-height(a) co-value-height(b) otherwise if is inl then 1
                                                                                 co-value-height(outl(t))
                                                                                 else if is inr then 1
                                                                                      co-value-height(outr(t))
                                                                                      else 0

Lemma: co-value-height_wf
[t:co-value()]. (co-value-height(t) ∈ partial(ℕ))

Definition: rec-value
rec-value() ==  {v:co-value()| (co-value-height(v))↓

Lemma: rec-value_wf
rec-value() ∈ Type

Definition: rec-value-height
rec-value-height(v) ==  co-value-height(v)

Lemma: rec-value-height_wf
[v:rec-value()]. (rec-value-height(v) ∈ ℕ)

Lemma: rec-value-ext
rec-value() ≡ atomic-values() ⋃ (rec-value() × rec-value()) ⋃ (rec-value() rec-value())

Lemma: atomic-values-evalall
[x:Base]. (evalall(x))↓ supposing x ∈ atomic-values()

Lemma: rec-value-evalall
[x:Base]. uiff((evalall(x))↓;x ∈ rec-value())

Lemma: rec-value-valueall-type
valueall-type(rec-value())

Lemma: rec-value-value-type
value-type(rec-value())

Lemma: rec-value_subype_base
rec-value() ⊆Base

Lemma: rec-value-list-is-rec-value
[x:rec-value() List]. (x ∈ rec-value())

Lemma: evalall-append-implies-list
[a,b:Base].  a ∈ rec-value() List supposing (evalall(a b))↓

Lemma: evalall-append-implies-rec-value
[a,b:Base].  b ∈ rec-value() supposing (evalall(a b))↓



Home Index