[Imprint][Data Privacy Statement][E-Mail]

Back to main index. View the specification. View theorem base summary, View theorem base listing, the used properties by spec, the dependency list, the symbol table,

Theorem base for Specification list-last

This is a listing of all goals defined over the current specification. Axioms are marked yellow, proved theorems green and unproved theorems blue. Click on individual names to get more information on the proof.

Name: Sequent: Type:
mk-zero ⊦ mklist(a, 0) = [] An Axiom
fillfirst-longer ⊦ n ≤ # x → fillfirst(n, a, x) = x An Axiom
rev-r ⊦ rev(a ' + x) = rev(x) + a An Axiom
prefix ⊦ x ⊑ y ↔ (∃ z. x + z = y) An Axiom
butlast-one ⊦ a '.butlast = [] An Axiom
postfix ⊦ x ⊒ y ↔ (∃ z. z + x = y) An Axiom
butlast-rec ⊦ (a ' + b ' + x).butlast = a ' + (b ' + x).butlast An Axiom
fillfirst-fill ⊦ # x < n → fillfirst(n, a, x) = mklist(a, n - # x) + x An Axiom
last-rec ⊦ (b ' + a ' + x).last = (a ' + x).last An Axiom
rev-e ⊦ rev([]) = [] An Axiom
mk-succ ⊦ mklist(a, n + 1) = a ' + mklist(a, n) An Axiom
last-one ⊦ a '.last = a An Axiom
butlastN-base ⊦ butlastn(0, x) = x An Axiom
butlastN-rec ⊦ butlastn(n + 1, x) = butlastn(n, x.butlast) An Axiom
b-01 ⊦ x ≠ [] → (x.butlast = [] ↔ x = x.head ') A User Theorem
b-02 ⊦ (a ' + x).butlast = [] ↔ x = [] A User Theorem
bapp ⊦ y ≠ [] → (x + y).butlast = x + y.butlast A User Theorem
bc ⊦ x ≠ [] → (a ' + x).butlast = a ' + x.butlast A User Theorem
bin ⊦ (x + a ' + y).butlast = x + (a ' + y).butlast A User Theorem
bin-01x ≠ [] ⊦ a ∈ x.butlast → a ∈ x A User Theorem
bin-02 ⊦ ¬ a ∈ x.butlast ∧ a ∈ x → a = x.last A User Theorem
bl ⊦ (a ' + x).butlast + (a ' + x).last ' + y = a ' + x + y A User Theorem
blapp ⊦ x ≠ [] → (x.butlast = y ↔ x = y + x.last ') A User Theorem
blast-head ⊦ a ∈ x.butlast ∧ x ≠ [] → x.butlast.head = x.head A User Theorem
blastN-all ⊦ butlastn(# x, x) = [] A User Theorem
blastN-all-01n = # x ⊦ butlastn(n, x) = [] A User Theorem
blastN-len ⊦ n ≤ # x → # butlastn(n, x) = # x - n A User Theorem
blastN-mklist ⊦ butlastn(n, x + mklist(a, n)) = x A User Theorem
blastN-rec ⊦ n ≠ 0 → butlastn(n, x + a ') = butlastn(n -1, x) A User Theorem
blastN-rec-01 ⊦ n ≤ # x → butlastn(n, a ' + x) = a ' + butlastn(n, x) A User Theorem
blastn-app-1 ⊦ butlastn(1, x + a ') = x A User Theorem
blastn-len-0 ⊦ # x = n0 + n1 → # butlastn(n0, x) = n1 A User Theorem
bnotempty ⊦ 1 < # x → x.butlast ≠ [] A User Theorem
butlast-def ⊦ (x + a ').butlast = x A User Theorem
butlast-eq ⊦ x ≠ [] → (x.butlast + a ' = x ↔ a = x.last) A User Theorem
butlast-lastx ≠ [] ⊦ x.butlast + x.last ' = x A User Theorem
butlast-last-01 ⊦ x.last = a ∧ x ≠ [] → x.butlast + a ' = x A User Theorem
butlast-len ⊦ # (a ' + x).butlast = # x A User Theorem
consmklist-last ⊦ (a ' + mklist(a, n)).last = a A User Theorem
l-01 ⊦ x ≠ [] ∧ x.tail = [] → x.last = x.head A User Theorem
l-02 ⊦ x ≠ [] → (a ' + x).last = x.last A User Theorem
l-03 ⊦ x ≠ [] ∧ x.tail ≠ [] → x.tail.last = x.last A User Theorem
l-04 ⊦ x ≠ [] → x.tail.last ≠ x.last → x = x.head ' A User Theorem
l-06 ⊦ x = x.head ' → x.last = x.head A User Theorem
l-in ⊦ a ∈ x → (b ' + x).last = x.last A User Theorem
lapp ⊦ y ≠ [] → (x + y).last = y.last A User Theorem
lapp-01 ⊦ (x + a ' + y).last = (a ' + y).last A User Theorem
lapp-02 ⊦ y ≠ [] → (a ' + x + y).last = y.last A User Theorem
lapp-03 ⊦ (a ' + x + b ' + y).last = (b ' + y).last A User Theorem
lapp-04 ⊦ a ' + x = y + b ' ∧ a ≠ b → x.last = b A User Theorem
lapp-05 ⊦ a ' + b ' + x = y + a ' → (b ' + x).last = a A User Theorem
last ⊦ x ≠ [] → x.butlast + x.last = x A User Theorem
last-01 ⊦ (a ' + x + b ').last = b A User Theorem
last-def ⊦ (x + a ').last = a A User Theorem
last-elimx ≠ [] ⊦ a = x.last ∧ y = x.butlast ↔ x = y + a ' A User Theorem
last-exa ≠ x.last, a ∈ x ⊦ ∃ y, z. x = y + a ' + z ∧ z ≠ [] A User Theorem
last-sizeone ⊦ # x = 1 → (y + x).last = x.head A User Theorem
lb ⊦ x ≠ [] → # x.butlast = # x - 1 A User Theorem
lb-01 ⊦ # x.butlast < # x ↔ x ≠ [] A User Theorem
le-leq-one-empty-or-head-equal-last ⊦ # x ≤ 1 → x = [] ∨ x.head = x.last A User Theorem
lin ⊦ true → ¬ x.last ∈ x.tail → x = [] ∨ x.tail = [] A User Theorem
lin-01 ⊦ x.last ∈ x ↔ x ≠ [] A User Theorem
lin-02 ⊦ x.last = a ∧ x ≠ [] → a ∈ x A User Theorem
lthree ⊦ y ≠ [] → (x + y + z).last = (y + z).last A User Theorem
map-last ⊦ x ≠ [] → (x map f).last = f(x.last) A User Theorem
mk-butlast ⊦ m ≠ 0 → (x + mklist(a, m)).butlast = x + mklist(a, m - 1) A User Theorem
mk-butlast-01 ⊦ m ≠ 0 → mklist(a, m).butlast = mklist(a, m - 1) A User Theorem
mk-elem ⊦ a ∈ mklist(b, n) → a = b A User Theorem
mk-empty ⊦ mklist(a, m) = [] ↔ m = 0 A User Theorem
mk-head ⊦ n ≠ 0 → (mklist(a, n) + x).head = a A User Theorem
mk-head-01 ⊦ m ≠ 0 → mklist(a, m).head = a A User Theorem
mk-in ⊦ a ∈ mklist(a, m) ↔ m ≠ 0 A User Theorem
mk-inj ⊦ m ≠ 0 → (mklist(a, m) = mklist(b, n) ↔ a = b ∧ m = n) A User Theorem
mk-inj-01 ⊦ mklist(a, m) = mklist(a, n) ↔ m = n A User Theorem
mk-last ⊦ mklist(a, n) + a ' = a ' + mklist(a, n) A User Theorem
mk-last-01 ⊦ m ≠ 0 → mklist(a, m).last = a A User Theorem
mk-last-01-01 ⊦ m ≠ 0 → (x + mklist(a, m)).last = a A User Theorem
mk-last-02 ⊦ n ≠ 0 → mklist(a, n) = mklist(a, n -1) + a ' A User Theorem
mk-len ⊦ # mklist(a, n) = n A User Theorem
mk-one ⊦ m ≠ 0 → (mklist(a, m) + x = a ' ↔ m = 1 ∧ x = []) A User Theorem
mk-one-01 ⊦ mklist(a, n) = a ' ↔ n = 1 A User Theorem
mk-plus ⊦ mklist(a, m + n) = mklist(a, m) + mklist(a, n) A User Theorem
mk-rec ⊦ m ≠ 0 → mklist(a, m) = a + mklist(a, m - 1) A User Theorem
mk-tail ⊦ n ≠ 0 → mklist(a, n).tail = mklist(a, n -1) A User Theorem
mk-tail-01 ⊦ m ≠ 0 → (mklist(a, m) + x).tail = mklist(a, m -1) + x A User Theorem
mk-two ⊦ mklist(a, n + 2) = a ' + a ' + mklist(a, n) A User Theorem
mk-two-01 ⊦ mklist(a, 2) = a ' + a ' A User Theorem
mklist-append ⊦ mklist(a, m) + mklist(a, n) = mklist(a, m + n) A User Theorem
mklist-last ⊦ mklist(a, n) + a ' = mklist(a, n + 1) A User Theorem
mklist-one ⊦ mklist(a, 1) = a ' A User Theorem
mklist-rmdup ⊦ ¬ a ∈ x ∧ n ≠ 0 → rmdup(x + mklist(a, n)) = rmdup(x) + a ' A User Theorem
mklist-rmdup-01 ⊦ n ≠ 0 → rmdup(mklist(a, n)) = a ' A User Theorem
mklist-split-intro ⊦ n ≤ m → mklist(a, m) = mklist(a, m - n) + mklist(a, n) A User Theorem
nodups-butlastn ⊦ ¬ dups(x) ∧ n ≤ # x → (dups(butlastn(n, x)) ↔ false) A User Theorem
postfix-app ⊦ x + y ⊒ z → y ⊒ z A User Theorem
postfix-app-01 ⊦ x ⊒ y + x A User Theorem
postfix-app-02 ⊦ y + x ⊒ z + x ↔ y ⊒ z A User Theorem
postfix-app-03 ⊦ x + y ⊑ x + z ↔ y ⊑ z A User Theorem
postfix-app-04 ⊦ x = (y + a ') + z → a ' + z ⊒ x A User Theorem
postfix-app-05 ⊦ b ' + x ⊒ (y + b ') + x A User Theorem
postfix-app-06 ⊦ x + a ' ⊒ y + b ' ↔ a = b ∧ x ⊒ y A User Theorem
postfix-empty ⊦ [] ⊒ x A User Theorem
postfix-empty-01 ⊦ ¬ a ' + x ⊒ [] A User Theorem
postfix-empty-02 ⊦ ¬ x + a ' ⊒ [] A User Theorem
postfix-empty-03 ⊦ x ⊒ [] ↔ x = [] A User Theorem
postfix-in ⊦ a ∈ x ∧ x ⊒ y → a ∈ y A User Theorem
postfix-in-01 ⊦ a ∈ x ∧ ¬ a ∈ y → ¬ x ⊒ y A User Theorem
postfix-in-02 ⊦ a ∈ x ∧ x ⊒ y → (a ∈ y ↔ true) A User Theorem
postfix-in-03 ⊦ a ' + x ⊒ y → (a ∈ y ↔ true) A User Theorem
postfix-is-lessOrEqual ⊦ x ⊒ y ↔ x = y ∨ x < y A User Theorem
postfix-length ⊦ x ⊒ y → # x ≤ # y A User Theorem
postfix-more ⊦ ¬ x + a ' + y ⊒ x A User Theorem
postfix-more-01 ⊦ ¬ a ' + x ⊒ x A User Theorem
postfix-one ⊦ x ⊒ a ' ↔ x = [] ∨ x = a ' A User Theorem
postfix-one-less ⊦ a ' + x ⊒ y → (x ⊒ y ↔ true) A User Theorem
postfix-rec ⊦ x ≠ [] ∧ y ≠ [] → (x ⊒ y ↔ x.last = y.last ∧ x.butlast ⊒ y.butlast) A User Theorem
postfix-rec-right ⊦ x ⊒ a ' + y ↔ x = a ' + y ∨ x ⊒ y A User Theorem
postfix-reflexivity ⊦ x ⊒ x A User Theorem
postfix-same ⊦ x + a ' ⊒ y + a ' ↔ x ⊒ y A User Theorem
postfix-splitx ⊒ y + z, ¬ x ⊒ z ⊦ ∃ x0. x0 + z = x A User Theorem
postfix-split-strongerx ⊒ y + z, ¬ x ⊒ z ⊦ ∃ x0. x0 + z = x ∧ x0 ⊒ y A User Theorem
postfix-tail ⊦ x ≠ [] → x.tail ⊒ x A User Theorem
postfix-tail-01 ⊦ x ≠ [] ∧ x ⊒ y → x.tail ⊒ y A User Theorem
postfix-trans ⊦ x ⊒ x0 ∧ x0 ⊒ y → x ⊒ y A User Theorem
prefix-app ⊦ ¬ x ⊑ y + z → ¬ x ⊑ y A User Theorem
prefix-app-01 ⊦ x + y ⊑ x ↔ y = [] A User Theorem
prefix-app-02 ⊦ x + y ⊑ y ↔ x = [] A User Theorem
prefix-app-03 ⊦ x + y + z ⊑ y ↔ x = [] ∧ z = [] A User Theorem
prefix-app-04 ⊦ x + y ⊑ z → x ⊑ z A User Theorem
prefix-app-05 ⊦ x ⊑ x + y A User Theorem
prefix-app-size-eq ⊦ # x0 = # x1 → (x0 ⊑ x1 + x2 ↔ x0 = x1) A User Theorem
prefix-attach ⊦ ¬ x ⊑ y → (x ⊑ y + a ' ↔ y + a ' = x) A User Theorem
prefix-butlast ⊦ x0 ≠ [] ∧ x0 ⊑ x1 → x0.butlast ⊑ x1 A User Theorem
prefix-butlast-append ⊦ x ≠ [] → (x ⊑ x.butlast + a ' ↔ a = x.last) A User Theorem
prefix-empty ⊦ x ⊑ [] ↔ x = [] A User Theorem
prefix-empty-03 ⊦ ¬ x + a ' + y ⊑ [] A User Theorem
prefix-eq ⊦ x ⊑ y → (y ⊑ x ↔ x = y) A User Theorem
prefix-equality ⊦ x = y ↔ x ⊑ y ∧ y ⊑ x A User Theorem
prefix-ex ⊦ ¬ x ⊑ y → (x ⊑ y + z ↔ (∃ x0. x = y + x0 ∧ x0 ⊑ z)) A User Theorem
prefix-in ⊦ x + a ' ⊑ y → (a ∈ y ↔ true) A User Theorem
prefix-in-01 ⊦ ¬ a ∈ y → ¬ x + a ' + x0 ⊑ y A User Theorem
prefix-in-02 ⊦ a ∈ x ∧ x ⊑ y → a ∈ y A User Theorem
prefix-in-03 ⊦ a ' + x ⊑ y → (a ∈ y ↔ true) A User Theorem
prefix-intro ⊦ ¬ x ⊑ y ∧ # x ≤ # y → x + x0 ≠ y + y0 A User Theorem
prefix-last-simp ⊦ x ≠ y + a ' → (x ⊑ y + a ' ↔ x ⊑ y) A User Theorem
prefix-longer ⊦ ¬ x + a ' ⊑ x A User Theorem
prefix-longer-01 ⊦ # y < # x → ¬ x ⊑ y A User Theorem
prefix-more ⊦ ¬ x + a ' + y ⊑ x A User Theorem
prefix-nil ⊦ [] ⊑ x A User Theorem
prefix-notin ⊦ a ∈ x ∧ ¬ a ∈ y → ¬ x ⊑ y A User Theorem
prefix-one ⊦ a ' ⊑ b ' + x ↔ a = b A User Theorem
prefix-one-01 ⊦ x ⊑ a ' ↔ x = [] ∨ x = a ' A User Theorem
prefix-rec ⊦ x ≠ [] → (x ⊑ a ' + y ↔ x.head = a ∧ x.tail ⊑ y) A User Theorem
prefix-rec-01 ⊦ a ' + x ⊑ y ↔ y ≠ [] ∧ a = y.head ∧ x ⊑ y.tail A User Theorem
prefix-rec-02 ⊦ b ' + x ⊑ b ' + y ↔ x ⊑ y A User Theorem
prefix-rec-03 ⊦ a ' + x ⊑ b ' + y ↔ a = b ∧ x ⊑ y A User Theorem
prefix-same ⊦ x + a ' ⊑ x + a ' + y A User Theorem
prefix-same-01 ⊦ x = y + a ' + z → y + a ' ⊑ x A User Theorem
prefix-self ⊦ x ⊑ x A User Theorem
prefix-size-eq ⊦ # x0 = # x1 → (x0 ⊑ x1 ↔ x0 = x1) A User Theorem
prefix-splitx ⊑ y + z, ¬ x ⊑ y ⊦ ∃ x0. y + x0 = x A User Theorem
prefix-split-strongerx ⊑ y + z, ¬ x ⊑ y ⊦ ∃ x0. x = y + x0 ∧ x0 ⊑ z A User Theorem
prefix-trans ⊦ x ⊑ y ∧ y ⊑ z → x ⊑ z A User Theorem
rev-app ⊦ rev(x + y) = rev(y) + rev(x) A User Theorem
rev-disjoint ⊦ disj(x, rev(y)) ↔ disj(x, y) A User Theorem
rev-disjoint-01 ⊦ disj(rev(x), y) ↔ disj(x, y) A User Theorem
rev-dups ⊦ dups(rev(x)) ↔ dups(x) A User Theorem
rev-empty ⊦ rev(x) = [] ↔ x = [] A User Theorem
rev-in ⊦ a ∈ rev(x) ↔ a ∈ x A User Theorem
rev-length ⊦ # rev(x) = # x A User Theorem
rev-mklist ⊦ rev(mklist(a, n)) = mklist(a, n) A User Theorem
rev-one ⊦ rev(a ') = a ' A User Theorem
rev-rev-identity ⊦ rev(rev(x)) = x A User Theorem
rev-rewrite ⊦ rev(x) = y ↔ x = rev(y) A User Theorem
rev-tail ⊦ x ≠ [] → (rev(x) + y).tail = rev(x).tail + y A User Theorem
revert-equal ⊦ rev(x) = rev(y) ↔ x = y A User Theorem
revert-last ⊦ a ' + rev(x) = rev(x + a ') A User Theorem
splitlasteqy ≠ [] ⊦ x + a ' = y ↔ x = y.butlast ∧ a = y.last A User Theorem
splitlasteq-01y ≠ [] ⊦ y = x + a ' ↔ x = y.butlast ∧ a = y.last A User Theorem