scheme aaa =class type Document =Book|Article, Book :: title : Title author : Author publicher : Publisher, Article :: title :Title author : Author journal : Journal, Title,Author,Publisher,Journal value author : Document->Author author (doc) is case doc of mk_Book(f,a,p)->a, mk_Article(t,a,j)->a end end scheme List1= class type List,Elem value empty :List, cons:Elem>List, head : List-~->Elem, tail:List-~->List, change_head:Elem>List axiom [head_cons] all e:Elem,l:List :- head(cons(e,l)) is e , [tail_cons] all e:Elem,l:List :- tail(cons(e,l)) is l , [change_head_cons] all e,e1:Elem,l:List :- change_head(e1,cons(e,l)) is cons(e1,l) , [list_disjoint] all e:Elem,l:List :- empty~=cons(e,l), [list_induction] all p:List ->Bool :-p(empty)/\(all e:Elem ,l:List :-p(l)=>p(cons(e,l)))=>(all l:List :-p(l)) end