| ⊦ 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.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2)
¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # 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.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) |
| ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ []) ⊦ |
hPred([]), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), false) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), false) ' + h) ⊦ hPred(h)
[] = h, ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ []) ⊦
∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (W(t, l, v), true) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []))
∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (W(t, l, v), false) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []))
∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (R(t, l, v), true) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []))
∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (R(t, l, v), false) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []))
Used terms: h, λ h0. ∀ h, l. ¬ ( h0 = h ∧ ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ []))
| hPred([]), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((W(t, l, v), false) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), true) ' + h), ∀ t, l, v, h. hPred(h) → hPred((R(t, l, v), false) ' + h) ⊦ hPred(h) |
| [] = h, ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ []) ⊦ |
Used simplifier rules: ⊦ [].filter(p) = []; (s) ⊦ # [] = 0; (s) ⊦ [].indexWhere(p) = 0; (s)
| ∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (W(t, l, v), true) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [])) |
¬ ( ¬ # h < ((W(t, l, v), true) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s) ⊦ W(t, l, v).l = l; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ W(t, l, v).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| ¬ ( ¬ # h < ((W(t, l, v), true) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p)
¬ ( ¬ # h < 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (W(t, l, v), true)._1.W? ∧ (W(t, l, v), true)._1.l = l0 ∧ ¬ (W(t, l, v), true)._2
Used simplifier rules: ⊦ a '.filter(p) = (p(a) ⊃ a ';[]); (s) ⊦ W(t, l, v).l = l; (s) ⊦ W(t, l, v).W?; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2, (W(t, l, v), true), h
| ⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p) |
| ¬ ( ¬ # h < 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (W(t, l, v), true)._1.W? ∧ (W(t, l, v), true)._1.l = l0 ∧ ¬ (W(t, l, v), true)._2 |
¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: ⊦ W(t, l, v).l = l; (s) ⊦ W(t, l, v).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []) ⊦
Used terms: l0
| h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []) ⊦ |
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [], # h ≤ h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], (l = l0 ⊃ (W(t, l0, v), true) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [], # h ≤ h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ⊦ |
Used simplifier rules: ⊦ [].filter(p) = []; (s) ⊦ a '.filter(p) = (p(a) ⊃ a ';[]); (s)
| ∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (W(t, l, v), false) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [])) |
¬ ( ¬ # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ x + y = [] ↔ x = [] ∧ y = []; (s) ⊦ (x + y).filter(p) = x.filter(p) + y.filter(p); (s) ⊦ W(t, l, v).l = l; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) ⊦ W(t, l, v).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| ¬ ( ¬ # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
(l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) = [], h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], ¬ # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
# h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [], (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
| (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) = [], h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], ¬ # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) = [], ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ≤ # h, ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) = [], ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ≤ # h, ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p)
(l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) = [], h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ≤ # h, ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (W(t, l, v), false)._1.W? ∧ (W(t, l, v), false)._1.l = l0 ∧ ¬ (W(t, l, v), false)._2
Used simplifier rules: ⊦ W(t, l, v).l = l; (s) ⊦ a '.filter(p) = (p(a) ⊃ a ';[]); (s) ⊦ a ' ≠ []; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2, (W(t, l, v), false), h
| ⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p) |
| (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) = [], h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ≤ # h, ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (W(t, l, v), false)._1.W? ∧ (W(t, l, v), false)._1.l = l0 ∧ ¬ (W(t, l, v), false)._2 |
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], h ≠ [], l ≠ l0, h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h, ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: ⊦ # x = 0 ↔ x = []; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ [].filter(p) = []; (s) ⊦ W(t, l, v).l = l; (s) ⊦ W(t, l, v).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m + 1 ≤ n ↔ m < n; (s)
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) = [], h ≠ [], l ≠ l0, h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h, ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
Used terms: l0
| # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [], (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
⊦ p(a) → (a ' + x).indexWhere(p) = 0
# h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [], (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (W(t, l, v), false)._1.W? ∧ (W(t, l, v), false)._1.l = l0 ∧ ¬ (W(t, l, v), false)._2
Used simplifier rules: ⊦ ¬ n < 0; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2, (W(t, l, v), false), h
| ⊦ p(a) → (a ' + x).indexWhere(p) = 0 |
| # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [], (l = l0 ⊃ (W(t, l0, v), false) ';[]).filter(λ vpe. ¬ vpe._2) ≠ [] ∨ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (W(t, l, v), false)._1.W? ∧ (W(t, l, v), false)._1.l = l0 ∧ ¬ (W(t, l, v), false)._2 |
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], l ≠ l0, # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ [].filter(p) = []; (s) ⊦ W(t, l, v).l = l; (s) ⊦ W(t, l, v).W?; (s)
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], l ≠ l0, # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], l ≠ l0, # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ⊦
Used terms: l0
| h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], l ≠ l0, # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ⊦ |
h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], h ≠ [], l ≠ l0, h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h, # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) + 1 < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ⊦
Used simplifier rules: ⊦ m +1 = m + 1; (s) ⊦ # x = 0 ↔ x = []; (s) trans-Nat: ⊦ n < n0 ∧ n0 < n1 → n < n1; (forward) from specification nat-basic lf: ⊦ m < n ∧ n < n0 → m +1 < n0; (forward) from specification nat-basic f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [], h ≠ [], l ≠ l0, h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h, # h < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2), h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) + 1 < ((W(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ⊦ |
⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p)
Used simplifier rules: ⊦ ¬ n < n; (s) ⊦ m < n + 1 ↔ ¬ n < m; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic ⊦ W(t, l, v).l = l; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2, (W(t, l, v), false), h
| ⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p) |
| ∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (R(t, l, v), true) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [])) |
¬ ( ¬ # h < ((R(t, l, v), true) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ ¬ R(t, l, v).W?; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| ¬ ( ¬ # h < ((R(t, l, v), true) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p)
¬ ( ¬ # h < 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (R(t, l, v), true)._1.W? ∧ (R(t, l, v), true)._1.l = l0 ∧ ¬ (R(t, l, v), true)._2
Used simplifier rules: ⊦ R(t, l, v).l = l; (s) ⊦ ¬ R(t, l, v).W?; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2, (R(t, l, v), true), h
| ⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p) |
| ¬ ( ¬ # h < 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (R(t, l, v), true)._1.W? ∧ (R(t, l, v), true)._1.l = l0 ∧ ¬ (R(t, l, v), true)._2 |
¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: ⊦ ¬ R(t, l, v).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
Used terms: l0
| ∀ h1, l. ¬ ( h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l).filter(λ vpe. ¬ vpe._2) ≠ [])) ⊦ ∀ h1, l0. ¬ ( (R(t, l, v), false) ' + h = h1 ∧ ¬ ( h1.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h1 ↔ h1.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ [])) |
¬ ( ¬ # h < ((R(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: a: ⊦ (x + y) + z = x + y + z; from specification list ⊦ [] + x = x; (s) ⊦ ¬ R(t, l, v).W?; (s) ⊦ (a ' + x).filter(p) = (p(a) ⊃ a ';[]) + x.filter(p); (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s) ⊦ m +1 = m + 1; (s) ⊦ #(a ' + x) = (# x)+1; (s)
| ¬ ( ¬ # h < ((R(t, l, v), false) ' + h).indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p)
¬ ( ¬ # h < 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (R(t, l, v), false)._1.W? ∧ (R(t, l, v), false)._1.l = l0 ∧ ¬ (R(t, l, v), false)._2
Used simplifier rules: ⊦ R(t, l, v).l = l; (s) ⊦ ¬ R(t, l, v).W?; (s) a: ⊦ (x + y) + z = x + y + z; from specification list Used terms: λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2, (R(t, l, v), false), h
| ⊦ ¬ p(a) → (a ' + x).indexWhere(p) = 1 + x.indexWhere(p) |
| ¬ ( ¬ # h < 1 + h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ (R(t, l, v), false)._1.W? ∧ (R(t, l, v), false)._1.l = l0 ∧ ¬ (R(t, l, v), false)._2 |
¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦
Used simplifier rules: ⊦ ¬ R(t, l, v).W?; (s) c: ⊦ m + n = n + m; from specification nat-basic a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic ⊦ m < n + 1 ↔ ¬ n < m; (s)
| ¬ ( h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l0 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l0).filter(λ vpe. ¬ vpe._2) ≠ []), ∀ l1. h.indexWhere(λ vpe. vpe._1.W? ∧ vpe._1.l = l1 ∧ ¬ vpe._2) < # h ↔ h.filter(λ vpe. vpe._1.W?).filter(λ vpe. vpe._1.l = l1).filter(λ vpe. ¬ vpe._2) ≠ [] ⊦ |
Used terms: l0
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.