Minimal Definition of "Finite Set" Walter Rudin's Principles of Mathematical Analysis, page 25 has this definition:

For any postive integer $n$, let $J_n$ be the set whose elements are the integers $1,2,\ldots,n$.


$A$ is finite if $A\sim J_n$ for some $n$ (the empty set is also considered to be finite)

Here $B\sim C$ means ``there exists a 1-1 mapping of $B$ onto $C$''.
Wikipedia has the same definition:

Formally, a set $S$ is called finite if there exists a bijection $f:S\rightarrow\{1,\ldots,n\}$ for some natural number $n$.

Question: is it not sufficient to stipulate that the map be 1-1? Requiring also that the map be onto seems to be unnecessary, and it seems like best practice to make minimal definitions.
 A: If you accept classical logic, you can show that if there is some injective $f : S \to \{1, \ldots, n\}$, then $S$ is finite. Equivalently, every subset of a finite set is finite. However, if you do not accept classical logic, you cannot prove this.
By “classical logic”, I mean the principle that for all propositions $P$, $P \lor \neg P$. This principle is equivalent to a few others, like double negation elimination, proof by contrapositive, etc. Logic formulated without these principles is known as “constructive logic”.
It turns out that “every subset of a finite set is finite” is equivalent to classical logic. To see this, consider a proposition $P$. Then take the set $S = \{1 \mid P\}$. That is, $\forall x (x \in S \iff x = 1 \land P)$.
Clearly, $S$ is a subset of the finite set $\{1\}$, which is finite since it is in bijection with itself. Suppose $S$ is finite; take some $n$ such that there is a bijection $S \cong \{1, \ldots, n\}$.
Because $n$ is a natural number, we know it is either zero, or at least 1. If $n$ is zero, then $S$ is empty; therefore, $\neg P$. And if $n$ is at least one, then there is some $x \in S$, meaning that $P$ holds. So we have established $P \lor \neg P$.
However, the following can be shown constructively:

Consider $S \subseteq R$ where $R$ is finite, and suppose $\forall r \in R (r \in S \lor r \notin S)$. Then $S$ is finite.

Of course, with classical logic, the premise $\forall r \in R (r \in S \lor r \notin S)$ is automatically true. So classically, every subset of a finite set is finite.
One final point. There are a few reasons to be interested in constructive logic. The first is philosophical. Perhaps you don’t really believe $P \lor \neg P$ unless you know which one - $P$ or $\neg P$ - holds. Or perhaps you are a devotee of Brouwer and hold to some of his (admittedly strange) philosophical considerations about the nature of sequences and free choice.
But even if you strongly believe in classical logic, constructive logic is still incredibly useful. For example, any function $\mathbb{R} \to \mathbb{R}$ which can be defined constructively can also be constructively proved to be continuous. Similarly, if we can prove any proposition of the form $\forall n \in \mathbb{N} \exists m \in \mathbb{N} (P(n, m))$ constructively, then there exists some computable function $f : \mathbb{N} \to \mathbb{N}$ such that we can constructively prove $\forall n \in \mathbb{N} (P(n, f(n)))$.
Constructive logic has many other applications, especially in algebraic geometry and topos theory. You don’t have to believe in it (or more precisely, to disbelieve in classical logic) to make full use of its fruits.
