Leibniz' Project
Home
For an utilitarian ethic, no freedom iff maximum utility reached for a unique action

Presentation

An ethic being said to leave no freedom when it allows a unique action, it is proved here that for every utlitarian ethic (that is every ethic without dead end according to this article, there is no freedom if and only if the maximum utility is reached for a unique action.

The context is the same as in this article.

Throughout this page, let \(S\) be the set of states and \(A\) the set of actions.

		
		Context {State : Type}.
Context {Action : eqType}.
Definition Ethic : Type := ethics_first_steps.Ethic State Action.
		
		variable {State : Type}
variable {Action : Type}

Definition of freedom left by an ethic

In a given situation, an ethic is said to leave no freedom if allows a unique action.

\(\mathbf{Definition}\)
Let \(s\) in \(S\). An ethic \(e\) leaves no freedom in state \(s\) if \[\exists! a, e(s, a) = ⊤\]

		
		Definition leaves_no_freedom (ethic: Ethic) (state: State) : Prop :=
  exists! (action: Action), ethic state action = true.
		
		def leaves_no_freedom (ethic: @Ethic State Action) (state: State) : Prop :=
  ∃! (action: Action), ethic state action = true

An ethic is said to never leave freedom if it leaves no freedom in every situation.

\(\mathbf{Definition}\)
An ethic \(e\) never leaves freedom if \(\forall s \in S\), \(e\) leaves no freedom in \(s\).

		
		Definition never_leaves_freedom (ethic: Ethic) : Prop :=
  forall (state: State), leaves_no_freedom ethic state.
		
		def never_leaves_freedom (ethic: @Ethic State Action) : Prop :=
  ∀ (state: State), leaves_no_freedom ethic state

Relationship between freedom and dead ends

In a given situation, if an ethic leaves no freedom, then it still allows an action and therefore we are not in a dead end.

\(\mathbf{Lemma}\)
If an ethic \(e\) leaves no freedom in a state \(s\), then \(s\) is not a dead end for \(e\).

\(\mathbf{proof:}\)
Let \(e\) be an ethic and \(s\) be a state in which \(e\) leaves no freedom.
By definition, there is a unique action \(a\) allowed by \(e\) in \(s\).
Then this action \(a\) is allowed by \(e\) in \(s\), which means that \(s\) is not a dead end

		
		Lemma no_freedom_implies_no_dead_end (ethic: Ethic) (state: State) :
  leaves_no_freedom ethic state -> ~ dead_end ethic state.
Proof.
  intro. unfold leaves_no_freedom in H.
  destruct H. unfold unique in H.
  destruct H. unfold dead_end.
  intro. pose proof (H1 x).
  rewrite H in H2. inversion H2.
Qed.
		
		lemma no_freedom_implies_no_dead_end (ethic: @Ethic State Action) (state: State) :
leaves_no_freedom ethic state -> ¬ dead_end ethic state := by
  intro h
  unfold leaves_no_freedom at h
  unfold ExistsUnique at h
  rcases h with ⟨action, h⟩
  rcases h with ⟨x1, h2⟩
  unfold dead_end
  intro h
  specialize h action
  rw [h] at x1
  contradiction

Therefore, if an ethic never leaves freedom, then it is without dead end.

\(\mathbf{Corollary}\)
An ethic which never leaves freedom is without dead end.

\(\mathbf{proof:}\)
Let \(e\) be an ethic which never leaves freedom.
By definition, \(\forall s \in S\), \(e\) leaves no freedom in \(s\).
By the previous lemma, \(\forall s \in S\), \(s\) is not a dead end for \(e\), which means it is without dead end.

		
		Corollary never_leaves_freedom_implies_never_has_dead_end (ethic: Ethic) :
  never_leaves_freedom ethic -> without_dead_end ethic.
Proof.
  unfold without_dead_end. unfold never_leaves_freedom. intro.
  intro. apply no_freedom_implies_no_dead_end. apply H.
Qed.
		
		lemma never_leaves_freedom_implies_never_has_dead_end (ethic: @Ethic State Action) :
never_leaves_freedom ethic → without_dead_end ethic := by
  unfold without_dead_end
  unfold never_leaves_freedom
  intro h
  intro state
  apply no_freedom_implies_no_dead_end
  apply h

Maximum utility reached for a unique action

\(\mathbf{Definition}\)
An utilitarian ethic \(e\) (endowed with a utility function called \(uf\)) is said to have a unique action \(a\) maximizing its utility if \[\begin{cases*} \forall a' \in A, uf(s, a') \le uf(s, a) \text{ (where $\le$ designating the prefereence order associated with the utility function)} \\ \forall a' \in A, uf(s, a') = uf(s, a) \implies a' = a \end{cases*}\]

		
		Definition utilitarian_ethic_unique_maximum {ps : PreferenceSpace}
(uf : @UtilityFunction State Action ps) (state : State) : Prop :=
  exists! (action : Action), is_maximum uf state (uf state action).
		
		def utilitarian_ethic_unique_maximum {ps : PreferenceSpace}
(uf : @UtilityFunction State Action ps) (state : State) : Prop :=
  ∃! (action : Action), is_maximum uf state (uf state action)

\(\mathbf{Definition}\)
An utilitarian ethic \(e\) is said to always have a unique action maximizing its utility if \(\forall s \in S\), \(e\) has a unique maximum action maximizing its utility

		
		Definition utilitarian_ethic_always_unique_maximum {ps : PreferenceSpace}
(uf : @UtilityFunction State Action ps) : Prop :=
  forall (state: State), utilitarian_ethic_unique_maximum uf state.
		
		def utilitarian_ethic_always_unique_maximum {ps : PreferenceSpace}
(uf : @UtilityFunction State Action ps) : Prop :=
  ∀ (state: State), utilitarian_ethic_unique_maximum uf state

An utilitarian ethic has a unique function maximizing its utility if and only if it leaves no freedom

\(\mathbf{Proposition}\)
A utilitarian ethic \(e\) has a unique action maximizing its utility in a state \(s\) iff it leaves no freedom in \(s\).

\(\mathbf{proof:}\)
Let \(e\) be a utilitarian ethic, \(uf\) its utility function and \(s\) a state.
- if \(e\) has a unique action \(a\) maximizing its utility in \(s\), as an utilitarian ethic requires to maximize its utility, the only allowed action is \(a\), which leaves no freedom.
- if \(e\) leaves no freedom in \(s\), then the only allowed action \(a\) must maximize the utility function (by definition of utility function) and be the only action to do so.

		
		Proposition utilitarian_ethic_no_freedom_iff_maximum_for_unique_action
{ps : PreferenceSpace} :
  forall (ethic: Ethic) (uf : UtilityFunction)
  (ethic_maximizes_uf : maximizes ethic uf) (state: State),
    @utilitarian_ethic_unique_maximum ps uf state <->
    leaves_no_freedom ethic state.
Proof.
  intros.
  unfold maximizes in ethic_maximizes_uf.
  split.
  - intro. unfold leaves_no_freedom. unfold unique.
    unfold utilitarian_ethic_unique_maximum in H.
    destruct H. unfold unique in H. destruct H.
    exists x. split.
    + pose proof (ethic_maximizes_uf state). pose proof (H1 x).
      rewrite <- H2 in H. unfold Is_true in H.
      destruct (ethic state x).
      { reflexivity. }
      { inversion H. }
    + intros.
      pose proof (H0 x'). apply H2.
      pose proof (ethic_maximizes_uf state). pose proof (H3 x').
      rewrite <- H4. unfold Is_true.
      rewrite H1. tauto.
  - intro. unfold leaves_no_freedom in H. unfold unique in H.
    unfold utilitarian_ethic_unique_maximum. unfold unique.
    destruct H. destruct H.
    pose proof (ethic_maximizes_uf state).
    exists x. split.
    + pose proof (H1 x).
      rewrite <- H2. rewrite H. easy.
    + intro. pose proof (H0 x'). intro.
      rewrite <- H1 in H3. unfold Is_true in H3.
      destruct (ethic state x').
      { apply H2. reflexivity. }
      { inversion H3. }
Qed.
		
		theorem utilitarian_ethic_no_freedom_iff_max_for_unique_action
{ps : PreferenceSpace} :
∀ (ethic: @Ethic State Action) (uf : @UtilityFunction State Action ps)
(_ethic_maximizes_uf : maximizes ethic uf) (state: State),
utilitarian_ethic_unique_maximum uf state ↔
leaves_no_freedom ethic state := by
  intro ethic
  intro uf
  intro ethic_maximizes_uf
  intro state
  unfold maximizes at ethic_maximizes_uf
  constructor
  · intro h0
    unfold leaves_no_freedom
    unfold ExistsUnique
    unfold utilitarian_ethic_unique_maximum at h0
    unfold ExistsUnique at h0
    rcases h0 with ⟨x, h0⟩
    rcases h0 with ⟨h1, h2⟩
    simp at h2
    exists x
    constructor
    · simp
      specialize ethic_maximizes_uf state
      specialize ethic_maximizes_uf x
      rw [← ethic_maximizes_uf] at h1
      exact h1
    · simp
      intro y
      intro h3
      specialize h2 y
      apply h2
      specialize ethic_maximizes_uf state
      specialize ethic_maximizes_uf y
      rw [← ethic_maximizes_uf]
      exact h3
  · intro h
    unfold leaves_no_freedom at h
    unfold ExistsUnique at h
    unfold utilitarian_ethic_unique_maximum
    unfold ExistsUnique
    rcases h with ⟨action, h⟩
    rcases h with ⟨h1, h2⟩
    specialize ethic_maximizes_uf state
    exists action
    simp
    constructor
    · specialize ethic_maximizes_uf action
      rw [← ethic_maximizes_uf]
      exact h1
    · intro y
      simp at h2
      specialize h2 y
      intro h3
      rw [← ethic_maximizes_uf] at h3
      apply h2
      exact h3

\(\mathbf{Corollary}\)
A utilitarian ethic always has a unique action maximizing its utility iff it never leaves freedom.

\(\mathbf{proof:}\)
Let \(e\) be a utilitarian ethic, \(uf\) its utility function.
\(e\) always has a unique action maximizing its utility
\(\iff \forall s \in S\), \(e\) has a unique action maximizing its utility in \(s\)
\(\iff \forall s \in S\), \(e\) leaves no freedom in \(s\)
\(\iff e\) never leaves freedom

		
		Corollary utilitarian_ethic_never_freedom_iff_always_maximum_for_unique_action
{ps : PreferenceSpace} :
  forall (ethic: Ethic) (uf : UtilityFunction)
  (ethic_maximizes_uf : maximizes ethic uf),
    @utilitarian_ethic_always_unique_maximum ps uf <->
    never_leaves_freedom ethic.
Proof.
  intros. unfold utilitarian_ethic_always_unique_maximum. unfold never_leaves_freedom.
  split ; intros; pose proof (H state) ; 
  apply @utilitarian_ethic_no_freedom_iff_maximum_for_unique_action with
  (ps:=ps) (ethic:=ethic) (uf:=uf) ;
  tauto.
Qed.
		
		lemma utilitarian_ethic_never_freedom_iff_always_maximum_for_unique_action
{ps : PreferenceSpace} :
∀ (ethic: @Ethic State Action) (uf : @UtilityFunction State Action ps)
(_ethic_maximizes_uf : maximizes ethic uf),
utilitarian_ethic_always_unique_maximum uf ↔
never_leaves_freedom ethic := by
  intro ethic
  intro uf
  intro ethic_maximizes_uf
  unfold utilitarian_ethic_always_unique_maximum
  unfold never_leaves_freedom
  constructor
  · intro h
    intro state
    specialize h state
    rw [← utilitarian_ethic_no_freedom_iff_max_for_unique_action ethic uf] <;> tauto
  · intro h
    intro state
    specialize h state
    rw [utilitarian_ethic_no_freedom_iff_max_for_unique_action ethic uf] <;> tauto
The proofs' code is currently in . To switch to , click on the following icon: