same([],[]).
same([X|Xs],[X|Ys]):- same(Xs,Ys).
object TranslatedProgram {
def same[A1](list1: List[A1], list2: List[A1]): Stream[Unit] = Predicate[(List[A1], List[A1]), Unit](Fact({
case (Nil, Nil) => ()
}), Rule({
case (x :: xs, x :: ys) => for (() <- same(xs, ys))
yield ()
}))(list1, list2)
}