/* 'simp_list' simplifies a list to its elements */ ((simp_list () () ) (!)) ((simp_list C (C) ) (atomic C)) ((simp_list (H|T) L) (simp_list H H1) (simp_list T T1) (append H1 T1 L)) ((remdup () ())) ((remdup (H|T) S) (member H T) (!) (remdup T S)) ((remdup (H|T) (H|S)) (remdup T S)) ((reverse L RL) (revlist L () RL)) ((revlist () L L)) ((revlist (X|L) L1 L2) (revlist L (X|L1) L2)) ((append () X X)) ((append (X|Y) L (X|T) ) (append Y L T)) ((delete X Y Z) (append A (X|B) Y) (append A B Z)) ((subset _ () )) ((subset S (H|T)) (member H S) (delete H S R) (subset R T)) ((length L N) (len L 0 N) (!)) ((len () N N)) ((len (_|T) K N) (sum K 1 M) (len T M N)) ((member X (X|_) )) ((member X (H|T) ) (member X T)) /* maxlist returns the max element in a list */ ((maxlist (X) X) (!)) ((maxlist (H|T) X) (maxlst (H|T) X H)) ((maxlst () N N)) ((maxlst (H|T) X S) (less S H) (!) (maxlst T X H)) ((maxlst (H|T) X S) (maxlst T X S)) ((islist (_|_) )) ((islist () )) ((unionc () S S)) ((unionc (H ','|T) S R) (member H S) (!) (unionc T S R)) ((unionc (H ','|T) S (H ','|R)) (!) (unionc T S R)) ((unionc (H) S S) (member H S) (!)) ((unionc (H) () (H)) (!)) ((unionc (H) S (H ','|S) )) ((union () S S)) ((union (H|T) S R) (member H S) (!) (union T S R)) ((union (H|T) S (H|R)) (union T S R))