1

I know of two ways to define the finite number type:

(* The conditions are described in the type definition. *)
Inductive fin (n : nat) :=
  | O_fin : fin (S O)
  | S_fin : forall n : nat, fin n -> fin (S n).

(* The conditions are defined by an outer predicate. *)
Definition fin (n : nat) := { x : nat | x < n }.

Are there two words to distinguish between the two? For example, the first method is called A and the second method is called B. I thought I had it memorized, but I forgot and it's hard to search.

Hexirp
  • 410
  • 2
  • 11
  • Can you explain a bit more what your question is? 'Are there "words"...'? They are isomorphic, but different types, one has two constructors, and the other one just one. The second one takes a propositional argument, and the first one takes a `nat`. – larsr Feb 02 '21 at 10:35
  • I added a more general explanation. Thank you. – Hexirp Feb 03 '21 at 02:49
  • I thought maybe intrinsic vs extrinsic? Not sure, I can't find a good reference. – Sjoerd Visscher Feb 03 '21 at 12:33
  • I may have to create my own documentation. Anyway, thank you for sharing the information. – Hexirp Feb 04 '21 at 03:26

0 Answers0