helphomeduck scriptspecificationfirst proof page


Duck Proof Script
Inductive Properties of Lists, Part 2


*** file: /net/cs/htdocs/users/goguen/kumo/list.duck
*****************************************
style: beijing
*****************************************
spec: /net/cs/htdocs/users/goguen/kumo/revlist/list.bob
*****************************************
proof: <<AppAssocThm>>
  goal: assoc-of append
***  goal: (forall L1 L2 L3 : List)
***          append(append(L1, L2), L3) = append(L1, append(L2, L3)) .
  by:   induction on sort List with scheme {nil, cons};
***  by:   induction on L1 with scheme {nil, cons};
[]
*****************************************
proof: <<RevAppLem>>
  goal: (forall L1 L2 : List)
           rev(append(L1, L2)) = append(rev(L2), rev(L1)) .
  by:   induction on L1 with scheme {nil, cons};
[]
*****************************************
proof: <<RevRevThm>>
  goal: (forall L1 : List) rev(rev(L1)) = L1 .
  by:   induction on L1 with scheme {nil, cons};
[]
*****************************************

display: <<AppAssocThm RevAppLem RevRevThm>>
  dir: /net/cs/htdocs/groups/tatami/kumo/exs/list
  title:  "Inductive Properties of Lists, Part 2"
  homepage: /net/cs/htdocs/users/goguen/kumo/revlist/list.hp
  specexpl: /net/cs/htdocs/users/goguen/kumo/revlist/list.specexpl
  closing: /net/cs/htdocs/users/goguen/kumo/revlist/list.close

  <<AppAssocThm>>
  subtitle:  "Associativity of Append"
  expl: /net/cs/htdocs/users/goguen/kumo/revlist/list.exp1

  <<RevAppLem>>
  subtitle:  "Reverse Append Lemma"
  expl: /net/cs/htdocs/users/goguen/kumo/revlist/list.exp2

  <<RevRevThm>>
  subtitle:  "The Doubly Reversed List Equation"
  expl: /net/cs/htdocs/users/goguen/kumo/revlist/list.exp3
[]