Bool型

From Stdlib Require Import Logic.PropExtensionality.

Definition bool_to_prop
  (b : bool)
  : Prop
  := if b then True else False.

以下の補題は intro. inversion H. だけでも証明できるが、それが本質的に行なっていることは以下の証明と同じである。


true <> false

true <> false
H: true = false

False
H: true = false

bool_to_prop false
H: true = false

bool_to_prop true
H: true = false

True
trivial. Qed.

bool_to_prop は以下のようにも定義できる。

Definition is_true
  (b : bool)
  : Prop :=
  b = true.

b: bool

bool_to_prop b = is_true b
b: bool

bool_to_prop b = is_true b
b: bool

bool_to_prop b <-> is_true b

True <-> is_true true

False <-> is_true false

True <-> is_true true

True -> is_true true

is_true true -> True

True -> is_true true
reflexivity.

is_true true -> True
trivial.

False <-> is_true false

False -> is_true false

is_true false -> False

False -> is_true false
contradiction.

is_true false -> False

false = true -> False
H: false = true

False
H: false = true

true = false
H: false = true

false = true
assumption. Qed.