Documentation

Studies.Glass2023

Glass (2023) #

Glass explains why cause favours undesirable complements. Over a deterministic causal model in the sense of Halpern and Pearl, a value is locally sufficient for a downstream value when some setting of the other variables guarantees it, as in Mackie's sufficient sets, and globally sufficient when every setting does; necessity is the mirror image (GloballySufficient, LocallySufficient, GloballyNecessary, LocallyNecessary). C causes E, asserted on a state of knowledge, requires the effect to develop in every settlement of what is unknown (Cause), so knowing the cause alone it is assertable exactly when the cause is globally sufficient (cause_update_bot_iff), the asymmetry of the paper's Table 2. The Anna Karenina Principle gives desired outcomes conjunctive models and undesired ones disjunctive models, so C causes E holds in more states of knowledge when E is bad. Glass's cause asserts local sufficiency where Nadathur and Lauer's asserts necessity, and the two diverge on their bus scenario (glass_nl_diverge_on_bus).

Implementation notes #

References #

Local and global necessity and sufficiency #

def Glass2023.GloballySufficient {U : Type u_1} {V : Type u_2} (M : CausalModel U V fun (x : V) => Bool) [M.IsAcyclic] (C : V) (c : Bool) (E : V) (e : Bool) :

C = c is globally sufficient for E = e when, in every context and under every background leaving E open in which C = c, E = e.

Equations
Instances For
    def Glass2023.LocallySufficient {U : Type u_1} {V : Type u_2} (M : CausalModel U V fun (x : V) => Bool) [M.IsAcyclic] (C : V) (c : Bool) (E : V) (e : Bool) :

    C = c is locally sufficient for E = e when, in some context and under some background leaving E open in which C = c, E = e.

    Equations
    Instances For
      def Glass2023.GloballyNecessary {U : Type u_1} {V : Type u_2} (M : CausalModel U V fun (x : V) => Bool) [M.IsAcyclic] (C : V) (c : Bool) (E : V) (e : Bool) :

      C = c is globally necessary for E = e when, without it, E = e fails in every context and under every background leaving E open.

      Equations
      Instances For
        def Glass2023.LocallyNecessary {U : Type u_1} {V : Type u_2} (M : CausalModel U V fun (x : V) => Bool) [M.IsAcyclic] (C : V) (c : Bool) (E : V) (e : Bool) :

        C = c is locally necessary for E = e when, without it, E = e fails in some context and under some background leaving E open.

        Equations
        Instances For
          def Glass2023.Cause {U : Type u_1} {V : Type u_2} (M : CausalModel U V fun (x : V) => Bool) [M.IsAcyclic] (k : V → Flat Bool) (C : V) (c : Bool) (E : V) (e : Bool) :

          C causes E is assertable on the state of knowledge k when the cause is known and the effect holds in every context under every background that keeps what is known and leaves it open.

          Equations
          • Glass2023.Cause M k C c E e = (k C = ↑c ∧ ∀ (u : U) (I : V → Flat Bool), k ≤ I → I E = ⊥ → M.solve I u E = e)
          Instances For
            theorem Glass2023.globallyNecessary_iff {U : Type u_1} {V : Type u_2} {M : CausalModel U V fun (x : V) => Bool} [M.IsAcyclic] {C E : V} {c e : Bool} :
            GloballyNecessary M C c E e ↔ GloballySufficient M C (!c) E !e

            Necessity is the mirror image of sufficiency: the absence of a necessary cause suffices for the absence of the effect.

            theorem Glass2023.locallyNecessary_iff {U : Type u_1} {V : Type u_2} {M : CausalModel U V fun (x : V) => Bool} [M.IsAcyclic] {C E : V} {c e : Bool} :
            LocallyNecessary M C c E e ↔ LocallySufficient M C (!c) E !e
            theorem Glass2023.Cause.of_globallySufficient {U : Type u_1} {V : Type u_2} {M : CausalModel U V fun (x : V) => Bool} [M.IsAcyclic] {C E : V} {c e : Bool} {k : V → Flat Bool} (h : GloballySufficient M C c E e) (hk : k C = ↑c) :
            Cause M k C c E e

            A globally sufficient cause licenses cause whatever else is known or unknown.

            theorem Glass2023.LocallySufficient.of_globally {U : Type u_1} {V : Type u_2} {M : CausalModel U V fun (x : V) => Bool} [M.IsAcyclic] {C E : V} {c e : Bool} [DecidableEq V] [Inhabited U] (hCE : C ≠ E) (h : GloballySufficient M C c E e) :

            Global sufficiency entails local sufficiency (22a).

            theorem Glass2023.LocallyNecessary.of_globally {U : Type u_1} {V : Type u_2} {M : CausalModel U V fun (x : V) => Bool} [M.IsAcyclic] {C E : V} {c e : Bool} [DecidableEq V] [Inhabited U] (hCE : C ≠ E) (h : GloballyNecessary M C c E e) :

            Global necessity entails local necessity (21a).

            theorem Glass2023.cause_update_bot_iff {U : Type u_1} {V : Type u_2} {M : CausalModel U V fun (x : V) => Bool} [M.IsAcyclic] {C E : V} {c e : Bool} [DecidableEq V] :
            Cause M (Function.update ⊥ C ↑c) C c E e ↔ GloballySufficient M C c E e

            Knowing the cause alone, C causes E is assertable exactly when the cause is globally sufficient: the asymmetry of the paper's Table 2.

            The lightbulb (Figure 2, Tables 1 and 2) #

            Two switches and a light that is on exactly when both are: each switch being on is necessary but insufficient for the light to be on, and each being off suffices for it to be off.

            The two switches and the light.

            • S1 : V
            • S2 : V
            • L : V
            Instances For
              @[instance_reducible]
              instance Glass2023.Light.instDecidableEqV :
              DecidableEq V
              Equations
              def Glass2023.Light.instReprV.repr :
              V → ℕ → Std.Format
              Equations
              Instances For
                @[instance_reducible]
                Equations
                def Glass2023.Light.edges :
                Finset (V × V)

                The light reads the two switches.

                Equations
                Instances For

                  The context settles the two switches.

                  • S1 : Bool
                  • S2 : Bool
                  Instances For
                    def Glass2023.Light.instDecidableEqContext.decEq (x✝ x✝¹ : Context) :
                    Decidable (x✝ = x✝¹)
                    Equations
                    Instances For
                      @[instance_reducible]
                      Equations
                      def Glass2023.Light.instReprContext.repr :
                      Context → ℕ → Std.Format
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        The light is on exactly when both switches are.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem Glass2023.Light.solve_L {I : V → Flat Bool} (h : I V.L = ⊥) (u : Context) :

                          The light's equation, under a background that leaves it open.

                          Switch 1 being off is globally sufficient for the light to be off.

                          Switch 1 being on is globally necessary for the light to be on.

                          Switch 1 being on is not globally sufficient for the light to be on, since with switch 2 off the light stays off.

                          theorem Glass2023.Light.s1_off_causes_off_uncertain :
                          Cause light (Function.update ⊥ V.S1 ↑false) V.S1 false V.L false

                          Knowing only that switch 1 is off, it caused the light to be off (Table 2, bottom right).

                          theorem Glass2023.Light.not_s1_on_causes_on_uncertain :
                          ¬Cause light (Function.update ⊥ V.S1 ↑true) V.S1 true V.L true

                          Knowing only that switch 1 is on, one cannot say it caused the light to be on (Table 2, bottom left).

                          The background with both switches on.

                          Equations
                          Instances For

                            With both switches known to be on, switch 1 caused the light to be on (Table 2, top left).

                            Against necessity-based cause #

                            In the bus scenario, with Ava's visit and the rain forecast known, Ava's training is a sufficient cause of Lia's taking the bus in every settlement of the rest, rain alone sufficing, so Glass's cause accepts "Ava's training caused Lia to take the bus", which [NL20]'s necessity-based cause rejects: the same verb, the same scenario, opposite verdicts.