(** * Being inhabited *)
(** The predicate [inhabited] can be used in different contexts. If [A] is thought as a type, [inhabited A] states that [A] is inhabited. If [A] is thought as a computationally relevant proposition, then [inhabited A] weakens [A] so as to hide its computational meaning. The so-weakened proof remains computationally relevant but only in a propositional context. *)
Inductive inhabited (A:Type) : Prop := inhabits : A -> inhabited A.
#[global]
Hint Resolve inhabits: core.

(** Declaration of stepl and stepr for eq and iff *)
Lemma eq_stepl : forall (A : Type) (x y z : A), x = y -> x = z -> z = y.
Declare Left Step eq_stepl.