| ⊦ perm(x, y) → perm(x -1l a, y -1l a) |
perm(x, y), ¬ perm(x -1l a, y -1l a) ⊦
| perm(x, y), ¬ perm(x -1l a, y -1l a) ⊦ |
perm(x, y), perm(y, x), ¬ perm(x -1l a, y -1l a) ⊦
Used simplifier rules: sym-02: ⊦ ¬ perm(x, y) → ¬ perm(y, x); sym-02: ⊦ ¬ perm(x, y) → ¬ perm(y, x); trans: ⊦ perm(x, y) ∧ perm(y, z) → perm(x, z); sym-01: ⊦ perm(x, y) → perm(y, x); ref: ⊦ perm(x, x);
| perm(x, y), perm(y, x), ¬ perm(x -1l a, y -1l a) ⊦ |
⊦ perm(x, y) ↔ (∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y))
perm(y, x), perm(x, y), ∃ a0. ¬(a0 ∈ x -1l a ∨ a0 ∈ y -1l a → #oc(a0, x -1l a) = #oc(a0, y -1l a)) ⊦
Used terms: y -1l a, x -1l a
| ⊦ perm(x, y) ↔ (∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y)) |
| perm(y, x), perm(x, y), ∃ a0. ¬(a0 ∈ x -1l a ∨ a0 ∈ y -1l a → #oc(a0, x -1l a) = #oc(a0, y -1l a)) ⊦ |
#oc(a0, x -1l a) ≠ #oc(a0, y -1l a), perm(x, y), perm(y, x), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦
| #oc(a0, x -1l a) ≠ #oc(a0, y -1l a), perm(x, y), perm(y, x), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦ |
⊦ perm(x, y) ↔ (∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y))
#oc(a0, x -1l a) ≠ #oc(a0, y -1l a), perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦
Used terms: y, x
| ⊦ perm(x, y) ↔ (∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y)) |
| #oc(a0, x -1l a) ≠ #oc(a0, y -1l a), perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦ |
⊦ a ≠ b → #oc(a, x -1l b) = #oc(a, x)
a0 = a, #oc(a0, x -1l a) ≠ #oc(a0, y -1l a), perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦
#oc(a0, x) ≠ #oc(a0, y -1l a), a0 ≠ a, perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦
Used terms: a, x, a0
| ⊦ a ≠ b → #oc(a, x -1l b) = #oc(a, x) |
| a0 = a, #oc(a0, x -1l a) ≠ #oc(a0, y -1l a), perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦ |
#oc(a, x -1l a) ≠ #oc(a, y -1l a), perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
| #oc(a, x -1l a) ≠ #oc(a, y -1l a), perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
⊦ a ∈ x → #oc(a, x -1l a) = #oc(a, x) -1
#oc(a, x -1l a) ≠ #oc(a, y -1l a), perm(y, x), ¬ a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
#oc(a, x) -1 ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used terms: x, a
| ⊦ a ∈ x → #oc(a, x -1l a) = #oc(a, x) -1 |
| #oc(a, x -1l a) ≠ #oc(a, y -1l a), perm(y, x), ¬ a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
perm(y, x), a ∈ y -1l a, a ∈ y, ¬ a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y) ⊦
Used simplifier rules: notin: ⊦ ¬ a ∈ x → #oc(a, x) = 0; oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; in-01-01: ⊦ a ∈ x -1l b → a ∈ x; (forward) from specification list-del ⊦ ¬ a ∈ x → x -1l a = x; (s)
| perm(y, x), a ∈ y -1l a, a ∈ y, ¬ a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y) ⊦ |
Used simplifier rules: notin: ⊦ ¬ a ∈ x → #oc(a, x) = 0; in-05: ⊦ a ∈ x → #oc(a, x) ≠ 0; Used terms: a
| #oc(a, x) -1 ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
#oc(a, x) - 1 ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: ⊦ n -1 = n - 1; (s)
| #oc(a, x) - 1 ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
#oc(a, x) = m + 1, #oc(a, x) ≠ 0, m ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: in-05: ⊦ a ∈ x → #oc(a, x) ≠ 0; n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: #oc(a, x), m
| #oc(a, x) = m + 1, #oc(a, x) ≠ 0, m ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
#oc(a, x) = m + 1, m ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: in-05: ⊦ a ∈ x → #oc(a, x) ≠ 0;
| #oc(a, x) = m + 1, m ≠ #oc(a, y -1l a), perm(y, x), a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
⊦ a ∈ x → #oc(a, x -1l a) = #oc(a, x) -1
#oc(a, x) = m + 1, m ≠ #oc(a, y) -1, perm(y, x), a ∈ x, a ∈ y, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: notin: ⊦ ¬ a ∈ x → #oc(a, x) = 0; in: ⊦ a ∈ y ∧ ¬ a ∈ x → ¬ perm(x, y); ⊦ ¬ a ∈ x → x -1l a = x; (s) Used terms: y, a
| ⊦ a ∈ x → #oc(a, x -1l a) = #oc(a, x) -1 |
| #oc(a, x) = m + 1, m ≠ #oc(a, y) -1, perm(y, x), a ∈ x, a ∈ y, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
#oc(a, x) = m + 1, m ≠ #oc(a, y) - 1, perm(y, x), a ∈ y, a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: ⊦ n -1 = n - 1; (s)
| #oc(a, x) = m + 1, m ≠ #oc(a, y) - 1, perm(y, x), a ∈ y, a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
#oc(a, x) = m + 1, #oc(a, y) = m0 + 1, #oc(a, y) ≠ 0, m ≠ m0, perm(y, x), a ∈ x, a ∈ y, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: in-05: ⊦ a ∈ x → #oc(a, x) ≠ 0; n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: #oc(a, y), m0
| #oc(a, x) = m + 1, #oc(a, y) = m0 + 1, #oc(a, y) ≠ 0, m ≠ m0, perm(y, x), a ∈ x, a ∈ y, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
#oc(a, y) = m0 + 1, #oc(a, x) = m + 1, m ≠ m0, perm(y, x), a ∈ y, a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦
Used simplifier rules: in-05: ⊦ a ∈ x → #oc(a, x) ≠ 0;
| #oc(a, y) = m0 + 1, #oc(a, x) = m + 1, m ≠ m0, perm(y, x), a ∈ y, a ∈ x, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a ∈ x -1l a ∨ a ∈ y -1l a ⊦ |
Used simplifier rules: ⊦ m + n = m + n0 ↔ n = n0; (s) a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic c: ⊦ m + n = n + m; from specification nat-basic Used terms: a
| #oc(a0, x) ≠ #oc(a0, y -1l a), a0 ≠ a, perm(y, x), ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y), a0 ∈ x -1l a ∨ a0 ∈ y -1l a ⊦ |
#oc(a0, x) ≠ #oc(a0, y), a0 ≠ a, perm(y, x), a0 ∈ y, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y) ⊦
Used simplifier rules: del1-01: ⊦ a ≠ b → #oc(a, x -1l b) = #oc(a, x); notin: ⊦ ¬ a ∈ x → #oc(a, x) = 0; oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; in: ⊦ a ∈ y ∧ ¬ a ∈ x → ¬ perm(x, y); ⊦ a ≠ b → (a ∈ x -1l b ↔ a ∈ x); (s)
| #oc(a0, x) ≠ #oc(a0, y), a0 ≠ a, perm(y, x), a0 ∈ y, ∀ a. a ∈ x ∨ a ∈ y → #oc(a, x) = #oc(a, y) ⊦ |
Used terms: a0
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.