1 Prod = FOL +
2 types "*" 2 (infixl 20)
3 arities "*" :: (term,term)term
4 consts fst :: "'a * 'b => 'a"
5 snd :: "'a * 'b => 'b"
6 Pair :: "['a,'b] => 'a * 'b" ("(1<_,/_>)")
7 rules fst "fst(<a,b>) = a"
8 snd "snd(<a,b>) = b"
9 end