| ⊦ firstVolWrite(l, h) = # h ↔ (h |W | l) | false = [] |
¬(firstVolWrite(l, h) = # h ↔ (h |W | l) | false = []) ⊦
| ¬(firstVolWrite(l, h) = # h ↔ (h |W | l) | false = []) ⊦ |
¬(firstVolWrite(l, h) = # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = []) ⊦
Used simplifier rules: restrict-W: ⊦ h |W = h.filter(λ vpe. vpe._1.W?); restrict-loc: ⊦ h | l = h.filter(λ vpe. vpe._1.l = l); restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b);
| ¬(firstVolWrite(l, h) = # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = []) ⊦ |
⊦ firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ []
firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [], ¬(firstVolWrite(l, h) = # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = []) ⊦
Used terms: l, h
| ⊦ firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [] |
| firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [], ¬(firstVolWrite(l, h) = # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = []) ⊦ |
firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [], firstVolWrite(l, h) = # h, h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = [], firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [], firstVolWrite(l, h) ≠ # h ⊦
| firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [], firstVolWrite(l, h) = # h, h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
firstVolWrite(l, h) = # h, h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [], (h |W | l) | false ≠ [], firstVolWrite(l, h) < # h ⊦
Used simplifier rules: restrict-W: ⊦ h |W = h.filter(λ vpe. vpe._1.W?); restrict-loc: ⊦ h | l = h.filter(λ vpe. vpe._1.l = l); restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b);
| firstVolWrite(l, h) = # h, h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [], (h |W | l) | false ≠ [], firstVolWrite(l, h) < # h ⊦ |
Used simplifier rules: restrict-W: ⊦ h |W = h.filter(λ vpe. vpe._1.W?); restrict-loc: ⊦ h | l = h.filter(λ vpe. vpe._1.l = l); restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b); ⊦ ¬ n < n; (s)
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = [], firstVolWrite(l, h) < # h ↔ (h |W | l) | false ≠ [], firstVolWrite(l, h) ≠ # h ⊦ |
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = [], (h |W | l) | false = [], firstVolWrite(l, h) ≠ # h, ¬ firstVolWrite(l, h) < # h ⊦
Used simplifier rules: restrict-W: ⊦ h |W = h.filter(λ vpe. vpe._1.W?); restrict-loc: ⊦ h | l = h.filter(λ vpe. vpe._1.l = l); restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b);
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) = [], (h |W | l) | false = [], firstVolWrite(l, h) ≠ # h, ¬ firstVolWrite(l, h) < # h ⊦ |
⊦ m < n ↔ ¬ n ≤ m
Used simplifier rules: restrict-W: ⊦ h |W = h.filter(λ vpe. vpe._1.W?); restrict-loc: ⊦ h | l = h.filter(λ vpe. vpe._1.l = l); restrict-vp: ⊦ h | b = h.filter(λ vpe. vpe._2 ↔ b); first-vol-write-size3: ⊦ ¬ # h < firstVolWrite(l, h); ⊦ m ≠ n → (m ≤ n ↔ m < n); (s) Used terms: firstVolWrite(l, h), # h
| ⊦ m < n ↔ ¬ n ≤ m |
The following image shows the proof tree of sequent calculus. The proved goal is at the bottom. You can click on the nodes to view additional rules. See here for details on colors in a proof tree.