Goal forall d e : D, d = e -> true = eqD d e.
intros.
elim H.
apply eqD7.
Save eqD_elim.
Goal forall d e : D, true = eqD d e -> d = e.
intros.
elim (eqD8 d e).
elim H.
elim eqD5.
apply refl_equal.
Save eqD_intro.
Goal forall d e : D, false = eqD d e -> d <> e.
intros.
red in |- *; intro.
cut (forall P : bool -> Prop, P true -> P false); intro L.
apply
(L
(fun P : bool =>
match P return Prop with
| true => True
| false => False
end)).
exact I.
intros.
elimtype (eqD d e = false).
elim H0.
elim eqD7.
assumption.
apply sym_equal.
assumption.
Save eqD_intro'.
Section FRAME1.
Parameter frame : Set.
Variable b b1 b2 : bit.
Variable d e : frame.
Parameter tuple : bit -> frame.
Parameter sce : frame.
Parameter eqf : frame -> frame -> bool.
Parameter iff : bool -> frame -> frame -> frame.

(* Specifications: *)
Axiom eqf1 : true = eqf sce sce.
Axiom eqf2 : false = eqf sce (tuple b).
Axiom eqf3 : false = eqf (tuple b) sce.
Axiom eqf4 : eqb b1 b2 = eqf (tuple b1) (tuple b2).
Axiom eqf5 : d = iff true d e.
Axiom eqf6 : e = iff false d e.
Axiom eqf7 : true = eqf d d.
Axiom eqf8 : iff (eqf d e) d e = e.
Axiom EQfi : ~ EQ frame one.
Axiom EQfD : ~ EQ frame D.
End FRAME1.