[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Theorem base for Specification FLIT-preds

This is a listing of all goals defined over the current specification. Axioms are marked yellow, proved theorems green and unproved theorems blue. Click on individual names to get more information on the proof.

Name: Sequent: Type:
readFOsOk ⊦ readFOsOk(rfo, writers) ↔ rfo.FOs? ∧ (∀ t, l. t ∈ writers(l) → rfo(t) = []) An Axiom
noPendingW ⊦ noPendingW(t, bq, p) ↔ (∀ l. p(l) |W | t = [] ∧ bq(t) |WL l = []) An Axiom
W-in-FOWs ⊦ W(v, t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ W(l, v) ∈ bel A User Theorem
FOWs-FO-split ⊦ bel.FOWs(t, l) = fowl0 + FO(t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + FO(l) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l)) A User Theorem
FO-in-FOWs ⊦ FO(t0) ∈ bel.FOWs(t, l) ↔ t = t0 ∧ FO(l) ∈ bel A User Theorem
readFOsOk-not-one-W ⊦ readFOsOk(rfo, writers) → rfo(t) ≠ W(l, v) ' A User Theorem
overwrite-rec-W ⊦ v ⊕ (W(l, v0) ' + bel) = v0 ⊕ bel An Axiom
isPropFO-FOWs-delpos-other ⊦ l ≠ l0 ∧ isPropFO(n, l, bel) → (bel -p n).FOWs(t0, l0) = bel.FOWs(t0, l0) A User Theorem
rely-noPendingW-stable ⊦ rely(t, pq, bq, pq0, bq0) ∧ noPendingW(t, bq, pq) → noPendingW(t, bq0, pq0) A User Theorem
oplus-v-append ⊦ v ⊕ (bel0 + bel1) = (v ⊕ bel0) ⊕ bel1 A User Theorem
overwrite-rec-FO ⊦ v ⊕ (FO(l) ' + bel) = v ⊕ bel An Axiom
oplus-v-one-W ⊦ v ⊕ W(l, v0) ' = v0 A User Theorem
restrict-l-empty ⊦ [] |WL l = [] A User Theorem
writersOk-prop-W ⊦ writersOk(bq, pq, writers) ∧ bq(t) = W(l, v) ' + bel → writersOk(bq(t := bel), pq(l := pq(l) + W(v, t) '), writers) A User Theorem
pendingOk-empty-bq ⊦ pendingOk(bq, pq) → pendingOk(bq(t := []), pq) A User Theorem
restrict-l-W-other ⊦ l0 ≠ l → W(l0, v) ' |WL l = [] A User Theorem
writersOk⊦ writersOk(bq, p, writers) ↔ (∀ l, t. (t ∈ writers(l) → (∀ l0. l0 ≠ l → ¬ t ∈ writers(l0))) ∧ (¬ t ∈ writers(l) → p(l) |W | t = [] ∧ bq(t) |WL l = [])) An Axiom
FOWs-SF ⊦ (SF ' + bel).FOWs(t, l) = bel.FOWs(t, l) An Axiom
FOWs-one-FO ⊦ FO(l0) '.FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]) A User Theorem
FOs-not-one-SF ⊦ rfo.FOs? → rfo(t) ≠ SF ' A User Theorem
pendingOk-add-pending ⊦ noPending(t, bq, pq) ∧ pendingOk(bq, pq) → pendingOk(bq(t := bq(t) + W(l, v) '), pq) A User Theorem
restrict-l-append ⊦ bel0 + bel1 |WL l = (bel0 |WL l) + (bel1 |WL l) A User Theorem
SFTrailing-attach ⊦ SFTrailing(bq(t := bq(t) + be ')) ↔ SFTrailing(bq) ∧ ¬ SF ∈ bq(t) A User Theorem
SFTrailing-tail ⊦ bq(t) = be ' + bel ∧ SFTrailing(bq) → SFTrailing(bq(t := bel)) A User Theorem
pendingOk-prop-W ⊦ pendingOk(bq, pq) ∧ bq(t) = W(l, v) ' + bel → pendingOk(bq(t := bel), pq(l := pq(l) + W(v, t) ')) A User Theorem
rely-refl ⊦ rely(t, pq, bq, pq, bq) A User Theorem
overwrite-def ⊦ ((mem ⊕ bel))(l) = mem(l) ⊕ (bel |WL l) An Axiom
rely-update-other-bq ⊦ t ≠ t0 → rely(t, pq, bq, pq, bq(t0 := bel)) A User Theorem
isPropFO-empty ⊦ ¬ isPropFO(n, l, []) A User Theorem
noPendingW-add-FO ⊦ noPendingW(t, bq, pq) → noPendingW(t, bq(t := bq(t) + FO(l) '), pq) A User Theorem
isPropFO-not-leading-FO ⊦ ¬ isPropFO(n + 1, l, FO(l) ' + bel) A User Theorem
rely-prop-FO ⊦ isPropFO(n, l, bq(t0)) → rely(t, pq, bq, pq(l := pq(l) + FO(t0) '), bq(t0 := bq(t0) -p n)) A User Theorem
SFTrailing ⊦ SFTrailing(bq) ↔ (∀ t. bq(t) = [] ∨ ¬ SF ∈ bq(t).butlast) An Axiom
overwrite-base ⊦ v ⊕ [] = v An Axiom
writersOk-empty-bq ⊦ writersOk(bq, pq, writers) → writersOk(bq(t := []), pq, writers) A User Theorem
FOWs-W-split ⊦ bel.FOWs(t, l) = fowl0 + W(v, t) ' + fowl1 ↔ (∃ bel0, bel1. bel = bel0 + W(l, v) ' + bel1 ∧ fowl0 = bel0.FOWs(t, l) ∧ fowl1 = bel1.FOWs(t, l)) A User Theorem
isPropFO-restrict-SF-l-head ⊦ isPropFO(n, l, bel) → bel -p n |SF l = (bel |SF l).tail A User Theorem
FOWs-one-SF ⊦ SF '.FOWs(t, l) = [] A User Theorem
isPropFO-not-leading-W ⊦ ¬ isPropFO(n, l, W(l, v) ' + bel) A User Theorem
isPropFO-def ⊦ isPropFO(n, l, bel) ↔ n < # bel ∧ bel[n] = FO(l) ∧ (∀ m. m < n → bel[m] ≠ SF ∧ (bel[m].W? ∨ bel[m].FO? → bel[m].l ≠ l)) An Axiom
oplus-v-one-FO ⊦ v ⊕ FO(l) ' = v A User Theorem
rely-local-def ⊦ rely(t, l, fowl, bel, fowl0, bel0) ↔ (fowl | t) + bel.FOWs(t, l) ⊒ (fowl0 | t) + bel0.FOWs(t, l) An Axiom
B-postfix-weak-same-loc-postfix ⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel ⊒ bel0 A User Theorem
readFOsOk-empty-rfo-while-writing ⊦ readFOsOk(rfo, writers) ∧ t ∈ writers(l) → rfo(t) = [] A User Theorem
B-postfix-weak-not-in-stable ⊦ bel ⊒w bel0 ∧ ¬ be ∈ bel → ¬ be ∈ bel0 A User Theorem
BrestrictL-def ⊦ bel |WL l = bel.filter(λ be. be.W? ∧ be.l = l) An Axiom
FOFollowsW-def⊦ FOFollowsW(t, bel, fowl, l) ↔ (∀ fowl0, fowl1, v. fowl = fowl0 + W(v, t) ' + fowl1 → FO(t) ∈ fowl1 ∨ FO(l) ∈ bel) ∧ (∀ bel0, bel1, v. bel = bel0 + W(l, v) ' + bel1 → FO(l) ∈ bel1) An Axiom
noPendingW-add-SF ⊦ noPendingW(t, bq, pq) → noPendingW(t, bq(t := bq(t) + SF '), pq) A User Theorem
B-postfix-weak-empty ⊦ bel ⊒w [] A User Theorem
FOFollowsW-old-def⊦ FOFollowsW(t, bel, p, l) ↔ (∀ n. n < # p(l) ∧ p(l)[n].W? ∧ p(l)[n].tid = t → (∃ n0. n < n0 ∧ n0 < # p(l) ∧ p(l)[n0] = FO(t) ∨ bel ≠ [] ∧ bel.head = FO(l))) ∧ (bel ≠ [] → bel = SF ' ∨ bel = FO(l) ' + SF ' ∨ bel.head.W? ∧ bel.head.l = l ∧ bel.tail = FO(l) ' + SF ') An Axiom
B-postfix-weak ⊦ bel0 ⊒w bel1 ↔ (∀ l. bel0 |SF l ⊒ bel1 |SF l) An Axiom
restrict-l-FO ⊦ FO(l0) ' |WL l = [] A User Theorem
isPropFO-W-in-delpos ⊦ isPropFO(n, l, bel) → (W(l, v) ∈ bel -p n ↔ W(l, v) ∈ bel) A User Theorem
rely-noPending-stable ⊦ rely(t, pq, bq, pq0, bq0) ∧ bq0(t) = [] ∧ noPending(t, bq, pq) → noPending(t, bq0, pq0) A User Theorem
overwrite-rec-SF ⊦ v ⊕ (SF ' + bel) = v ⊕ bel An Axiom
readFOsOk-not-one-SF ⊦ readFOsOk(rfo, writers) → rfo(t) ≠ SF ' A User Theorem
B-postfix-weak-one ⊦ be ' ⊒w be0 ' + bel ↔ be0 = be ∧ bel = [] A User Theorem
isPropFO-leading-SF ⊦ ¬ isPropFO(n, l, SF ' + bel) A User Theorem
noPending-then-noPendingW ⊦ noPending(t, bq, pq) → noPendingW(t, bq, pq) A User Theorem
readFOsOk-add-writer ⊦ readFOsOk(rfo, writers) ∧ rfo(t) = [] → readFOsOk(rfo, writers(l := writers(l) ++ t)) A User Theorem
rely-prop-SF ⊦ bq(t) = SF ' → rely(t0, pq, bq, pq, bq(t := [])) A User Theorem
B-postfix-weak-FOWs-postfix ⊦ bel ⊒w bel0 → bel.FOWs(t, l) ⊒ bel0.FOWs(t, l) A User Theorem
writersok-rm-writer ⊦ writersOk(bq, pq, writers) ∧ oneMember(t, l, writers) ∧ noPending(t, bq, pq) → writersOk(bq, pq, writers(l := writers(l) -- t)) A User Theorem
oplus-v-one-SF ⊦ v ⊕ SF ' = v A User Theorem
readFOsOk-not-leading-W ⊦ readFOsOk(rfo, writers) → rfo(t) ≠ W(l, v) ' + bel A User Theorem
isPropFO-SF-in-delpos ⊦ isPropFO(n, l, bel) → (SF ∈ bel -p n ↔ SF ∈ bel) A User Theorem
restrict-SF-eq-FOWs-eq ⊦ bel0 |SF l = bel1 |SF l → bel0.FOWs(t, l) = bel1.FOWs(t, l) A User Theorem
writersok-add-writer ⊦ writersOk(bq, pq, writers) ∧ notMember(t, writers) → writersOk(bq, pq, writers(l := writers(l) ++ t)) A User Theorem
writersOk-add-FO ⊦ writersOk(bq, pq, writers) → writersOk(bq(t := bq(t) + FO(l) '), pq, writers) A User Theorem
SFTrainling-prop-FO ⊦ SFTrailing(bq) ∧ isPropFO(n, l, bq(t)) → SFTrailing(bq(t := bq(t) -p n)) A User Theorem
readFOsOk-rm-writer ⊦ readFOsOk(rfo, writers) ∧ rfo(t) = [] → readFOsOk(rfo, writers(l := writers(l) -- t)) A User Theorem
readFOsOk-prop-FO ⊦ readFOsOk(rfo, writers) → readFOsOk(rfo(t := rfo(t) -p n), writers) A User Theorem
FOWs-one-W ⊦ W(l0, v) '.FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]) A User Theorem
isPropFO-rec ⊦ be.l ≠ l ∧ be ≠ SF → (isPropFO(n + 1, l, be ' + bel) ↔ isPropFO(n, l, bel)) A User Theorem
pendingOk ⊦ pendingOk(bq, p) ↔ (∀ l, t. #(p(l) |W | t) + #(bq(t) |WL l) ≤ 1) An Axiom
restrict-l-SF ⊦ SF ' |WL l = [] A User Theorem
rely-prop-W ⊦ bq(t) = W(l, v) ' + bel → rely(t0, pq, bq, pq(l := pq(l) + W(v, t) '), bq(t := bel)) A User Theorem
FOWs-loc-empty ⊦ bel |WL l = [] → (bel.FOWs(t, l))|W = [] A User Theorem
B-postfix-weak-of-empty ⊦ [] ⊒w bel ↔ bel = [] A User Theorem
B-postfix-weak-delpos-propFO ⊦ isPropFO(n, l, bel) → bel ⊒w bel -p n A User Theorem
pendingOk-add-FO ⊦ pendingOk(bq, pq) → pendingOk(bq(t := bq(t) + FO(l) '), pq) A User Theorem
B-postfix-weak-append ⊦ bel0 + bel ⊒w bel A User Theorem
restrict-l-W-same ⊦ W(l, v) ' |WL l = W(l, v) ' A User Theorem
writersOk-persist ⊦ writersOk(bq, pq, writers) ∧ pq(l) = fow ' + fowl → writersOk(bq, pq(l := fowl), writers) A User Theorem
FOWs-base ⊦ [].FOWs(t, l) = [] An Axiom
FOs-not-one-W ⊦ rfo.FOs? → rfo(t) ≠ W(l, v) ' A User Theorem
noPendingW-no-leading-bq-W ⊦ noPendingW(t, bq, pq) → bq(t) ≠ W(l, v) ' + bel A User Theorem
writersOk-add-SF ⊦ writersOk(bq, pq, writers) → writersOk(bq(t := bq(t) + SF '), pq, writers) A User Theorem
isPropFO-restrict-delpos ⊦ isPropFO(n, l, bel) → bel -p n |WL l0 = bel |WL l0 A User Theorem
rely-noPending-stable-strong ⊦ rely(t, pq, bq, pq0, bq0) ∧ bq(t) ⊒w bq0(t) ∧ noPending(t, bq, pq) → noPending(t, bq0, pq0) A User Theorem
FOs ⊦ rfo.FOs? ↔ (∀ t. rfo(t).forall(.FO?)) An Axiom
rely-def ⊦ rely(t, pq, bq, pq0, bq0) ↔ (∀ l. rely(t, l, pq(l), bq(t), pq0(l), bq0(t))) An Axiom
FOs-not-leading-W ⊦ rfo.FOs? → rfo(t) ≠ W(l, v) ' + bel A User Theorem
pendingOk-no-two-buffered-Ws ⊦ pendingOk(bq, pq) ∧ bq(t) = W(l, v) ' + bel0 → ¬ W(l, v0) ∈ bel0 A User Theorem
noPending ⊦ noPending(t, bq, p) ↔ (∀ l. p(l) | t = [] ∧ bq(t) = []) An Axiom
isPropFO-cons-leading-FO ⊦ isPropFO(n, l, bel) → FO(t) ' + (bel.FOWs(t, l)).tail = bel.FOWs(t, l) A User Theorem
writersOk-prop-FO ⊦ writersOk(bq, pq, writers) ∧ isPropFO(n, l, bq(t)) → writersOk(bq(t := bq(t) -p n), pq(l := pq(l) + FO(t) '), writers) A User Theorem
oplus-noPendingW ⊦ noPendingW(t, bq, pq) → mem ⊕ bq(t) = mem A User Theorem
FOWs-FO ⊦ (FO(l0) ' + bel).FOWs(t, l) = (l = l0 ⊃ FO(t) ';[]) + bel.FOWs(t, l) An Axiom
noPending-no-leading-bq-W ⊦ noPending(t, bq, pq) → bq(t) ≠ W(l, v) ' + bel A User Theorem
isPropFO-delpos-last-SF ⊦ isPropFO(n, l, bel + SF ') → (bel + SF ') -p n = (bel -p n) + SF ' A User Theorem
writersok-add-pending ⊦ writersOk(bq, pq, writers) ∧ oneMember(t, l, writers) ∧ noPending(t, bq, pq) → writersOk(bq(t := bq(t) + W(l, v) '), pq, writers) A User Theorem
pendingOk-add-SF ⊦ pendingOk(bq, pq) → pendingOk(bq(t := bq(t) + SF '), pq) A User Theorem
FOWs-append ⊦ (bel0 + bel1).FOWs(t, l) = bel0.FOWs(t, l) + bel1.FOWs(t, l) A User Theorem
FOWs-W ⊦ (W(l0, v) ' + bel).FOWs(t, l) = (l = l0 ⊃ W(v, t) ';[]) + bel.FOWs(t, l) An Axiom
pendingOk-persist ⊦ pendingOk(bq, pq) ∧ pq(l) = fow ' + fowl → pendingOk(bq, pq(l := fowl)) A User Theorem
SFTrailing-leading-SF ⊦ SFTrailing(bq) ∧ bq(t) = SF ' + bel → bel = [] A User Theorem
isPropFO-FOWs-delpos-tail ⊦ isPropFO(n, l, bel) → (bel -p n).FOWs(t0, l) = (bel.FOWs(t0, l)).tail A User Theorem
B-postfix-weak-one-ws ⊦ be ' ⊒w bel ↔ bel = be ' ∨ bel = [] A User Theorem
rely-FOFollowsW-stable ⊦ rely(t, pq, bq, pq0, bq0) ∧ bq(t) ⊒w bq0(t) ∧ FOFollowsW(t, bq(t), pq(l), l) → FOFollowsW(t, bq0(t), pq0(l), l) A User Theorem
readFOsOk-add-FO ⊦ notMember(t, writers) ∧ readFOsOk(rfo, writers) → readFOsOk(rfo(t := rfo(t) + FO(l) '), writers) A User Theorem
isPropFO-other-FO-in-delpos ⊦ l ≠ l0 ∧ isPropFO(n, l, bel) → (FO(l0) ∈ bel -p n ↔ FO(l0) ∈ bel) A User Theorem
B-postfix-weak-refl ⊦ bel ⊒w bel A User Theorem
isPropFO-drop-last-SF ⊦ isPropFO(n, l, bel + SF ') → isPropFO(n, l, bel) A User Theorem
B-restrict-SF-l ⊦ bel |SF l = bel.filter(λ be. be = SF ∨ be.l = l) An Axiom
pendingOk-prop-FO ⊦ pendingOk(bq, pq) ∧ isPropFO(n, l, bq(t)) → pendingOk(bq(t := bq(t) -p n), pq(l := pq(l) + FO(t) ')) A User Theorem
rely-persist ⊦ pq(l) = fow ' + fowl → rely(t0, pq, bq, pq(l := fowl), bq) A User Theorem
B-postfix-weak-same-loc ⊦ bel ⊒w bel0 ∧ bel.forall(λ be. be = SF ∨ be.l = l) → bel0.forall(λ be. be = SF ∨ be.l = l) A User Theorem