% Permutation % needs: nat.clf list.clf perm : list -> list -> type. #mode perm + -. member : nat -> type. #mode member -. collect : list -> type. #mode collect -. perm/load/cons : perm (cons N Ns) Ks o- (member N -o perm Ns Ks). perm/load/nil : perm nil Ks o- (collect nil -o {collect Ks}). collect1 : member N * collect Ks -o {collect (cons N Ks)}. #query * 1 * 1 perm (cons e (cons (d (d e b1) b1) (cons (d (d e b1) b0) (cons e nil)))) Ks. #query * * * 4 perm (cons e (cons (d (d e b1) b1) (cons (d (d e b1) b0) (cons e nil)))) Ks.