Typed atoms and small world models for free-choice scenarios #
Shared scenario substrate for BSML- and QBSML-based free-choice studies
([Alo22], [AvO23], [Yan23]). Replaces ad-hoc
string atoms ("coffee", "tea", ...) in scenario constructions, where
a typo silently compiles to false under the
match p with | "coffee" => ... | _ => false fallthrough pattern.
Main declarations #
FCAtom— typed propositional atoms:a/bcover the disjuncts of binary FC inferences;cis reserved for embedded scenarios involving a third proposition.QVar— the shared toy variable type for quantified FC scenarios (QBSML); the first-order counterpart ofFCAtom.PowerSet2World— the 2² = 4 truth assignments to two atoms ([Alo22] Figure 1:w_∅,w_a,w_b,w_ab), with the typedholdstruth table.
Studies instantiate BSMLModel's String-keyed val field by
pattern-matching on the canonical names via FCAtom.toName. Eliminating
the String layer entirely (making BSMLModel.val : FCAtom → α → Bool)
would require parameterizing BSMLFormula and BSMLModel over the atom
type — a substrate-wide refactor deferred to a separate effort.
Equations
- Core.Logic.Modal.BSML.instDecidableEqFCAtom x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Canonical String name of an atom. Used at BSMLModel.val boundaries
where the substrate's val : String → α → Bool field forces String.
Equations
Instances For
Equations
- Core.Logic.Modal.BSML.instDecidableEqQVar x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Core.Logic.Modal.BSML.instReprQVar = { reprPrec := Core.Logic.Modal.BSML.instReprQVar.repr }
Equations
- One or more equations did not get rendered due to their size.
Power-set-of-{a,b}: the 4 truth assignments to two propositional atoms.
Names follow [Alo22] Figure 1 (w_∅, w_a, w_b, w_ab):
- nothing : PowerSet2World
- onlyA : PowerSet2World
- onlyB : PowerSet2World
- both : PowerSet2World
Instances For
Equations
- Core.Logic.Modal.BSML.instDecidableEqPowerSet2World x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Truth-table for the two-atom power set. The third atom (c) is
unsatisfiable in this baseline 4-world model — embedded scenarios
needing c should use a larger world type.
Equations
- Core.Logic.Modal.BSML.PowerSet2World.both.holds Core.Logic.Modal.BSML.FCAtom.a = true
- Core.Logic.Modal.BSML.PowerSet2World.both.holds Core.Logic.Modal.BSML.FCAtom.b = true
- Core.Logic.Modal.BSML.PowerSet2World.onlyA.holds Core.Logic.Modal.BSML.FCAtom.a = true
- Core.Logic.Modal.BSML.PowerSet2World.onlyA.holds Core.Logic.Modal.BSML.FCAtom.b = false
- Core.Logic.Modal.BSML.PowerSet2World.onlyB.holds Core.Logic.Modal.BSML.FCAtom.a = false
- Core.Logic.Modal.BSML.PowerSet2World.onlyB.holds Core.Logic.Modal.BSML.FCAtom.b = true
- Core.Logic.Modal.BSML.PowerSet2World.nothing.holds Core.Logic.Modal.BSML.FCAtom.a = false
- Core.Logic.Modal.BSML.PowerSet2World.nothing.holds Core.Logic.Modal.BSML.FCAtom.b = false
- x✝.holds Core.Logic.Modal.BSML.FCAtom.c = false
Instances For
Synonym used by Studies that prefer the predicate spelling.