Hi, Kai.
Actually, the issue is not the extensionality rule, but the way in which the formula {1} is expressed. If you ask PVS to show the expanded version of the sequent, you will see that it infers that such equality is a predicate on elements of type finite_sets[D].
equalities[[finite_sets[D].finite_set -> booleans.boolean]].=
({y: finite_sets[D].finite_set |
EXISTS (x: (sets[D].powerset(sets[D].rest(A!1)))):
equalities[sets[D].set].=
(y, sets[D].add(sets[D].choose(A!1), x))},
{y: (sets[D].nonempty?) |
EXISTS (x: (sets[D].powerset(sets[D].rest(A!1)))):
equalities[sets[D].set].=
(y, sets[D].add(sets[D].choose(A!1), x))})
Internally, the proof command apply-extensionality uses such inferred type to instantiate the "extensionality" lemma (defined in the sets_lemmas theory, in the prelude). When it instantiates the second set, the unprovable TCC is generated.
A possible workaround is to restate this equality indicating explicitly a more general type. For instance,
equalities[[set[D] -> booleans.boolean]].=
( ... , ... )
I hope this helps. Feel free to follow up.
Kindly,
Mariano.