Library GC.gc.parameters


Section parameters.

Parameter node : Set.

Parameter rt : node.

Axiom eq_dec_node : forall n m : node, {n = m} + {n <> m}.

Definition heap := node -> node -> bool.

Inductive color : Set :=
  | white : color
  | black : color
  | grey : color
  | free : color.

Lemma eq_dec_color : forall c1 c2 : color, {c1 = c2} + {c1 <> c2}.
intros c1 c2.
case c1; case c2; (right; discriminate) || (left; reflexivity).
Qed.

Definition marking := node -> color.

Lemma noteqmar_noteqnod :
 forall (m1 : marking) (n m : node), m1 n <> m1 m -> n <> m.

unfold not in |- *; intros m1 n m m1ndifm1m neqm; apply m1ndifm1m;
 rewrite neqm; trivial.
Qed.

Inductive control : Set :=
  | mutate : control
  | mark : control
  | sweep : control.

Record state : Set := c_state {hp : heap; mk : marking; ctl : control}.

End parameters.