Skip to main content
3 of 6
added 150 characters in body
g_d
  • 121
  • 4

This is my attempt to define M-types in Coq.

Inductive sigma (A:Type) (F:A->Type) : Type :=
 sigma_intro : forall (a : A), (F a) -> (sigma A F)  
.

Require Import List.


(* countable collection of something *)
Inductive Cou (X:Type) : Type :=
  fin : (list X) -> Cou X
| inf : (nat -> X) -> Cou X.

Definition M (A:Type) (F:A->Type) : Type 
  := sigma Type (fun Q => sigma Q (fun _ => Cou (sigma A F))).

Set-theoretically it will be something like $$ MF := \mathcal{P}\{f:D \to\Sigma F| (D\in\omega)\lor(D=\omega)\} $$ $$ = \mathcal{P}\{f|\exists D: (f:D \to \Sigma F) \land ( (D\in\omega)\lor(D=\omega))\} $$

(D is a variable bound by notation for class-collection)

Or should the values of the initial segments of the branches with equal initial labels coincide? Then it is necessary to factorize it somehow...

g_d
  • 121
  • 4