Nuprl Lemma : global-order-compat-combine
∀[Info:Type]
  ∀L1,L2:(Id × Info) List.
    (L1 || L2
    ⇒ (∃L:(Id × Info) List
         (L1 ≤ L
         ∧ (∃f:ℕ||L2|| ⟶ ℕ||L||
             ((∀i,j:ℕ||L2||.  (i < j ⇒ (f i < f j ∨ f j < ||L1||)))
             ∧ (∀j:ℕ||L2||
                  ((L2[j] = L[f j] ∈ (Id × Info))
                  ∧ (filter(λx.fst(x) = fst(L2[j]);firstn(j + 1;L2))
                    = filter(λx.fst(x) = fst(L2[j]);firstn((f j) + 1;L))
                    ∈ ((Id × Info) List))))
             ∧ (∀x:ℕ||L||. (x < ||L1|| ∨ (∃i:ℕ||L2||. (x = (f i) ∈ ℤ))))))
         ∧ L2 ≤ L, locally
         ∧ (∀i:Id
              ((filter(λx.fst(x) = i;L) = filter(λx.fst(x) = i;L1) ∈ ((Id × Info) List))
              ∨ (filter(λx.fst(x) = i;L) = filter(λx.fst(x) = i;L2) ∈ ((Id × Info) List)))))))
Proof
Definitions occuring in Statement : 
global-order-compat: L1 || L2, 
global-order-iseg: L1 ≤ L2, locally, 
eq_id: a = b, 
Id: Id, 
iseg: l1 ≤ l2, 
firstn: firstn(n;as), 
select: L[n], 
length: ||as||, 
filter: filter(P;l), 
list: T List, 
int_seg: {i..j-}, 
less_than: a < b, 
uall: ∀[x:A]. B[x], 
pi1: fst(t), 
all: ∀x:A. B[x], 
exists: ∃x:A. B[x], 
implies: P ⇒ Q, 
or: P ∨ Q, 
and: P ∧ Q, 
apply: f a, 
lambda: λx.A[x], 
function: x:A ⟶ B[x], 
product: x:A × B[x], 
add: n + m, 
natural_number: $n, 
int: ℤ, 
universe: Type, 
equal: s = t ∈ T
Definitions unfolded in proof : 
uall: ∀[x:A]. B[x], 
all: ∀x:A. B[x], 
member: t ∈ T, 
so_lambda: λ2x.t[x], 
implies: P ⇒ Q, 
prop: ℙ, 
and: P ∧ Q, 
int_seg: {i..j-}, 
subtype_rel: A ⊆r B, 
or: P ∨ Q, 
so_apply: x[s], 
uimplies: b supposing a, 
guard: {T}, 
lelt: i ≤ j < k, 
decidable: Dec(P), 
satisfiable_int_formula: satisfiable_int_formula(fmla), 
exists: ∃x:A. B[x], 
false: False, 
not: ¬A, 
top: Top, 
less_than: a < b, 
squash: ↓T, 
ge: i ≥ j , 
nat: ℕ, 
pi1: fst(t), 
cand: A c∧ B, 
le: A ≤ B, 
select: L[n], 
nil: [], 
it: ⋅, 
so_lambda: λ2x y.t[x; y], 
so_apply: x[s1;s2], 
firstn: firstn(n;as), 
so_lambda: so_lambda(x,y,z.t[x; y; z]), 
so_apply: x[s1;s2;s3], 
global-order-iseg: L1 ≤ L2, locally, 
filter: filter(P;l), 
reduce: reduce(f;k;as), 
list_ind: list_ind, 
global-order-compat: L1 || L2, 
compat: l1 || l2, 
iff: P ⇐⇒ Q, 
true: True, 
rev_implies: P ⇐ Q, 
sq_type: SQType(T), 
uiff: uiff(P;Q), 
ifthenelse: if b then t else f fi , 
btrue: tt, 
bfalse: ff, 
bool: 𝔹, 
unit: Unit, 
less_than': less_than'(a;b), 
bnot: ¬bb, 
assert: ↑b, 
subtract: n - m, 
cons: [a / b], 
Id: Id, 
nat_plus: ℕ+, 
last: last(L)
Latex:
\mforall{}[Info:Type]
    \mforall{}L1,L2:(Id  \mtimes{}  Info)  List.
        (L1  ||  L2
        {}\mRightarrow{}  (\mexists{}L:(Id  \mtimes{}  Info)  List
                  (L1  \mleq{}  L
                  \mwedge{}  (\mexists{}f:\mBbbN{}||L2||  {}\mrightarrow{}  \mBbbN{}||L||
                          ((\mforall{}i,j:\mBbbN{}||L2||.    (i  <  j  {}\mRightarrow{}  (f  i  <  f  j  \mvee{}  f  j  <  ||L1||)))
                          \mwedge{}  (\mforall{}j:\mBbbN{}||L2||
                                    ((L2[j]  =  L[f  j])
                                    \mwedge{}  (filter(\mlambda{}x.fst(x)  =  fst(L2[j]);firstn(j  +  1;L2))
                                        =  filter(\mlambda{}x.fst(x)  =  fst(L2[j]);firstn((f  j)  +  1;L)))))
                          \mwedge{}  (\mforall{}x:\mBbbN{}||L||.  (x  <  ||L1||  \mvee{}  (\mexists{}i:\mBbbN{}||L2||.  (x  =  (f  i)))))))
                  \mwedge{}  L2  \mleq{}  L,  locally
                  \mwedge{}  (\mforall{}i:Id
                            ((filter(\mlambda{}x.fst(x)  =  i;L)  =  filter(\mlambda{}x.fst(x)  =  i;L1))
                            \mvee{}  (filter(\mlambda{}x.fst(x)  =  i;L)  =  filter(\mlambda{}x.fst(x)  =  i;L2)))))))
Date html generated:
2016_05_17-AM-08_36_17
Last ObjectModification:
2016_01_17-PM-03_10_13
Theory : event-ordering
Home
Index