| ⊦ #r mx = # a ∧ c < #c mx ∧ perm(mx[c]c, a) → perm(mx.toArr, mx[c, a]c.toArr) |
#r mx = # a, c < #c mx, perm(mx[c]c, a), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦
| #r mx = # a, c < #c mx, perm(mx[c]c, a), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ |
⊦ #r mx = # a ∧ c < #c mx ∧ perm(mx[c]c, a) → perm(mx.toArc, mx[c, a]c.toArc)
#r mx = # a, c < #c mx, perm(mx[c]c, a), ¬ perm(mx.toArr, mx[c, a]c.toArr), #r mx = # a ∧ c < #c mx ∧ perm(mx[c]c, a) → perm(mx.toArc, mx[c, a]c.toArc) ⊦
Used terms: mx, a, c
| ⊦ #r mx = # a ∧ c < #c mx ∧ perm(mx[c]c, a) → perm(mx.toArc, mx[c, a]c.toArc) |
| #r mx = # a, c < #c mx, perm(mx[c]c, a), ¬ perm(mx.toArr, mx[c, a]c.toArr), #r mx = # a ∧ c < #c mx ∧ perm(mx[c]c, a) → perm(mx.toArc, mx[c, a]c.toArc) ⊦ |
#r mx = # a, c < #c mx, perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c]c, a), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦
Used simplifier rules: ⊦ m < n → n ≠ 0; (s) f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic
| #r mx = # a, c < #c mx, perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c]c, a), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ |
⊦ perm(mx.toArr, mx.toArc)
#r mx = # a, c < #c mx, perm(mx[c]c, a), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦
Used terms: mx[c, a]c
| ⊦ perm(mx.toArr, mx.toArc) |
| #r mx = # a, c < #c mx, perm(mx[c]c, a), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ |
⊦ perm(mx.toArr, mx.toArc)
#r mx = # a, c < #c mx, perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c]c, a), perm(mx.toArr, mx.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦
Used terms: mx
| ⊦ perm(mx.toArr, mx.toArc) |
| #r mx = # a, c < #c mx, perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c]c, a), perm(mx.toArr, mx.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ |
#r mx = # a, c < #c mx, perm(mx.toArr, mx.toArc), perm(mx[c]c, a), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArr, mx[c, a]c.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦
Used simplifier rules: trans: ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z); (forward) from specification list-perm[oarray-sort]
| #r mx = # a, c < #c mx, perm(mx.toArr, mx.toArc), perm(mx[c]c, a), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArr, mx[c, a]c.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ |
⊦ perm(x, y) ∧ perm(y, z) → perm(x, z)
#r mx = # a, c < #c mx, perm(mx.toArr, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c]c, a), perm(mx.toArr, mx.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ perm(mx.toArr, mx.toArc) ∧ perm(mx.toArc, mx[c, a]c.toArr)
Used terms: mx.toArc, mx.toArr, mx[c, a]c.toArr
| ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z) |
| #r mx = # a, c < #c mx, perm(mx.toArr, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c]c, a), perm(mx.toArr, mx.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr) ⊦ perm(mx.toArr, mx.toArc) ∧ perm(mx.toArc, mx[c, a]c.toArr) |
#r mx = # a, c < #c mx, perm(mx.toArr, mx.toArc), perm(mx[c]c, a), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArr, mx[c, a]c.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr), ¬ perm(mx.toArc, mx[c, a]c.toArr) ⊦
| #r mx = # a, c < #c mx, perm(mx.toArr, mx.toArc), perm(mx[c]c, a), perm(mx.toArc, mx[c, a]c.toArc), perm(mx[c, a]c.toArr, mx[c, a]c.toArc), perm(mx.toArr, mx[c, a]c.toArc), ¬ perm(mx.toArr, mx[c, a]c.toArr), ¬ perm(mx.toArc, mx[c, a]c.toArr) ⊦ |
⊦ perm(x, y) ↔ perm(y, x)
Used simplifier rules: trans: ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z); (forward) from specification list-perm[oarray-sort] Used terms: mx[c, a]c.toArr, mx[c, a]c.toArc
| ⊦ perm(x, y) ↔ perm(y, x) |
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.