| ⊦ perm(x, x0) ∧ perm(y, y0) → perm(x intersect y, x0 intersect y0) |
perm(x, x0), perm(y, y0), ¬ perm(x intersect y, x0 intersect y0) ⊦
| perm(x, x0), perm(y, y0), ¬ perm(x intersect y, x0 intersect y0) ⊦ |
¬ perm(x intersect y, x0 intersect y0), ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: perm: ⊦ perm(x, y) ↔ x ⊆m y ∧ y ⊆m x; msubset: ⊦ x ⊆m y ↔ (∀ a. #oc(a, x) ≤ #oc(a, y)); sym-02: ⊦ ¬ perm(x, y) → ¬ perm(y, x); sym-02: ⊦ ¬ perm(x, y) → ¬ perm(y, x);
| ¬ perm(x intersect y, x0 intersect y0), ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
⊦ perm(x, y) ↔ x ⊆m y ∧ y ⊆m x
∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x), ¬ x intersect y ⊆m x0 intersect y0 ∨ ¬ x0 intersect y0 ⊆m x intersect y ⊦
Used terms: x0 intersect y0, x intersect y
| ⊦ perm(x, y) ↔ x ⊆m y ∧ y ⊆m x |
| ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x), ¬ x intersect y ⊆m x0 intersect y0 ∨ ¬ x0 intersect y0 ⊆m x intersect y ⊦ |
∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0), ¬ #oc(a, x intersect y) ≤ #oc(a, x0 intersect y0) ∨ ¬ #oc(a0, x0 intersect y0) ≤ #oc(a0, x intersect y) ⊦
Used simplifier rules: msubset: ⊦ x ⊆m y ↔ (∀ a. #oc(a, x) ≤ #oc(a, y));
| ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0), ¬ #oc(a, x intersect y) ≤ #oc(a, x0 intersect y0) ∨ ¬ #oc(a0, x0 intersect y0) ≤ #oc(a0, x intersect y) ⊦ |
¬ #oc(a, x intersect y) ≤ #oc(a, x0 intersect y0), ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦
¬ #oc(a0, x0 intersect y0) ≤ #oc(a0, x intersect y), ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦
| ¬ #oc(a, x intersect y) ≤ #oc(a, x0 intersect y0), ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦ |
a ∈ y, ¬ #oc(a, x intersect y) ≤ #oc(a, x0 intersect y0), ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt-01: ⊦ ¬ a ∈ y → #oc(a, x intersect y) = 0; ⊦ 0 ≤ m; (s) Used formulas: a ∈ y
| a ∈ y, ¬ #oc(a, x intersect y) ≤ #oc(a, x0 intersect y0), ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
#oc(a, x0 intersect y0) < #oc(a, x), a ∈ y, a ∈ x, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt: ⊦ a ∈ y → #oc(a, x intersect y) = #oc(a, x); oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #oc(a, x0 intersect y0) < #oc(a, x), a ∈ y, a ∈ x, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
#oc(a, x0 intersect y0) < #oc(a, x), a ∈ x, a ∈ y, a ∈ y0, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦
#oc(a, x0 intersect y0) < #oc(a, x), a ∈ x, a ∈ y, ¬ a ∈ y0, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦
Used formulas: a ∈ y0
| #oc(a, x0 intersect y0) < #oc(a, x), a ∈ x, a ∈ y, a ∈ y0, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦ |
#oc(a, x0) < #oc(a, x), a ∈ y0, a ∈ y, a ∈ x, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt: ⊦ a ∈ y → #oc(a, x intersect y) = #oc(a, x);
| #oc(a, x0) < #oc(a, x), a ∈ y0, a ∈ y, a ∈ x, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: a
| #oc(a, x0 intersect y0) < #oc(a, x), a ∈ x, a ∈ y, ¬ a ∈ y0, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦ |
a ∈ y, a ∈ x, ¬ a ∈ y0, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt-01: ⊦ ¬ a ∈ y → #oc(a, x intersect y) = 0; oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; ⊦ 0 < m ↔ m ≠ 0; (s)
| a ∈ y, a ∈ x, ¬ a ∈ y0, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
Used simplifier rules: notin: ⊦ ¬ a ∈ x → #oc(a, x) = 0; oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; ⊦ m ≤ 0 ↔ m = 0; (s) Used terms: a
| ¬ #oc(a0, x0 intersect y0) ≤ #oc(a0, x intersect y), ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦ |
a0 ∈ y0, ¬ #oc(a0, x0 intersect y0) ≤ #oc(a0, x intersect y), ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt-01: ⊦ ¬ a ∈ y → #oc(a, x intersect y) = 0; ⊦ 0 ≤ m; (s) Used formulas: a0 ∈ y0
| a0 ∈ y0, ¬ #oc(a0, x0 intersect y0) ≤ #oc(a0, x intersect y), ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
#oc(a0, x intersect y) < #oc(a0, x0), a0 ∈ y0, a0 ∈ x0, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt: ⊦ a ∈ y → #oc(a, x intersect y) = #oc(a, x); oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic ⊦ m ≤ n ↔ ¬ n < m; (ss)
| #oc(a0, x intersect y) < #oc(a0, x0), a0 ∈ y0, a0 ∈ x0, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
#oc(a0, x intersect y) < #oc(a0, x0), a0 ∈ x0, a0 ∈ y0, a0 ∈ y, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦
#oc(a0, x intersect y) < #oc(a0, x0), a0 ∈ x0, a0 ∈ y0, ¬ a0 ∈ y, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦
Used formulas: a0 ∈ y
| #oc(a0, x intersect y) < #oc(a0, x0), a0 ∈ x0, a0 ∈ y0, a0 ∈ y, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦ |
#oc(a0, x) < #oc(a0, x0), a0 ∈ y, a0 ∈ y0, a0 ∈ x0, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt: ⊦ a ∈ y → #oc(a, x intersect y) = #oc(a, x);
| #oc(a0, x) < #oc(a0, x0), a0 ∈ y, a0 ∈ y0, a0 ∈ x0, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
Used simplifier rules: ⊦ m ≤ n → (n < m ↔ false); (s) Used terms: a0
| #oc(a0, x intersect y) < #oc(a0, x0), a0 ∈ x0, a0 ∈ y0, ¬ a0 ∈ y, ∀ a. #oc(a, y) ≤ #oc(a, y0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, x0) ≤ #oc(a, x) ⊦ |
a0 ∈ y0, a0 ∈ x0, ¬ a0 ∈ y, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦
Used simplifier rules: oc-filt-01: ⊦ ¬ a ∈ y → #oc(a, x intersect y) = 0; oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; ⊦ 0 < m ↔ m ≠ 0; (s)
| a0 ∈ y0, a0 ∈ x0, ¬ a0 ∈ y, ∀ a. #oc(a, x0) ≤ #oc(a, x), ∀ a. #oc(a, x) ≤ #oc(a, x0), ∀ a. #oc(a, y0) ≤ #oc(a, y), ∀ a. #oc(a, y) ≤ #oc(a, y0) ⊦ |
Used simplifier rules: notin: ⊦ ¬ a ∈ x → #oc(a, x) = 0; oc-zero: ⊦ #oc(a, x) = 0 ↔ ¬ a ∈ x; ⊦ m ≤ 0 ↔ m = 0; (s) 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.