(** * Base Library for ICL  - Version: 3 October 2016 - Author: Gert Smolka, Saarland University - Acknowlegments: Sigurd Schneider, Dominik Kirst, Yannick Forster, Fabian Kunze, Maximilian Wuttke *)
Require Export Bool Omega List Setoid Morphisms Tactics.
Global Set Implicit Arguments.
Global Unset Strict Implicit.
Global Unset Printing Records.
Global Unset Printing Implicit Defensive.
Global Set Regular Subst Tactic.
Hint Extern 4 => exact _.  (* makes auto use type class inference *)
(** De Morgan laws *)
(** ** Boolean propositions and decisions *)
Coercion is_true : bool >-> Sortclass.
Hint Resolve bool_Prop_true bool_Prop_false.
Hint Resolve bool_Prop_true' bool_Prop_false'.
Definition bool2nat := fun b : bool => if b then 1 else 0.
Definition nat2bool := fun n : nat => match n with 0 => false | _ => true end.

(* Coercion nat2bool : nat >-> bool. *)
Lemma bool_nat (b : bool) :
1 = bool2nat b -> b.