MatchingLogic.Sorted #
Patterns, indexed by their sort. ex x s' φ binds x AT SORT s' inside
a pattern φ of sort s; the bound sort need not be the sort of the body, and
in Proposition 30 it is not.
- var {S : MSignature} {Var : Type} : Var → (s : S.Srt) → MPattern S Var s
- app {S : MSignature} {Var : Type} (σ : S.Sym) : ((i : Fin (S.arity σ)) → MPattern S Var (S.argSort σ i)) → MPattern S Var (S.resSort σ)
- imp {S : MSignature} {Var : Type} {s : S.Srt} : MPattern S Var s → MPattern S Var s → MPattern S Var s
- bot {S : MSignature} {Var : Type} {s : S.Srt} : MPattern S Var s
- ex {S : MSignature} {Var : Type} {s : S.Srt} : Var → (s' : S.Srt) → MPattern S Var s → MPattern S Var s
Instances For
Sorted negation.
Equations
Instances For
Sorted truth.
Equations
Instances For
Sorted universal quantification.
Equations
- MatchingLogic.Sorted.MPattern.al x s' φ = (MatchingLogic.Sorted.MPattern.ex x s' φ.nt).nt
Instances For
A many-sorted model: a nonempty carrier per sort, and each symbol interpreted from its argument sorts to subsets of its result sort.
The carrier type at each sort.
- interp (σ : S.Sym) : ((i : Fin (S.arity σ)) → self.carrier (S.argSort σ i)) → Set (self.carrier (S.resSort σ))
The set-valued interpretation of each operation symbol.
Instances For
A sorted valuation.
Equations
- MatchingLogic.Sorted.MVal M Var = ((s : S.Srt) → Var → M.carrier s)
Instances For
Updating a sorted valuation at one variable of one sort. This is the only
place the sort indexing costs anything: the new value has sort s', so it can
only be installed at sort s', and the equality has to be transported.
Equations
Instances For
The pointwise extension of a symbol, at its sorts.
Equations
Instances For
The denotation, sort by sort.
Equations
- MatchingLogic.Sorted.mdenote M ρ (MatchingLogic.Sorted.MPattern.var x_2 x✝) = {ρ x✝ x_2}
- MatchingLogic.Sorted.mdenote M ρ MatchingLogic.Sorted.MPattern.bot = ∅
- MatchingLogic.Sorted.mdenote M ρ (MatchingLogic.Sorted.MPattern.app σ f) = M.app σ fun (i : Fin (S.arity σ)) => MatchingLogic.Sorted.mdenote M ρ (f i)
- MatchingLogic.Sorted.mdenote M ρ (φ.imp ψ) = (MatchingLogic.Sorted.mdenote M ρ φ)ᶜ ∪ MatchingLogic.Sorted.mdenote M ρ ψ
- MatchingLogic.Sorted.mdenote M ρ (MatchingLogic.Sorted.MPattern.ex x_3 s' φ) = ⋃ (a : M.carrier s'), MatchingLogic.Sorted.mdenote M (MatchingLogic.Sorted.mupdate M ρ s' x_3 a) φ
Instances For
The denotation clause for sorted universal quantification.
M ⊨ φ: φ is total at its own sort under every valuation.
Equations
- M.Sat φ = ∀ (ρ : MatchingLogic.Sorted.MVal M Var), MatchingLogic.Sorted.mdenote M ρ φ = Set.univ
Instances For
M ⊨ Γ for a HETEROGENEOUS theory: a set of sorted patterns, each total at
its own sort. This is the paper's notion — nothing there requires the members of
a theory to share a sort.
Instances For
M ⊨ Γ for a theory whose members all have one sort. A convenience: it is
what Proposition 30 needs, since its Γ is a singleton of sort a. It is a
special case of SatSetHet, not a different notion — satSetHet_homogeneous
below records that.
Instances For
The homogeneous notion is the heterogeneous one restricted to a single
sort. Without this the restriction in SatSet would be silent, and an audit
flagged exactly that.
Γ ⊨ φ, where Γ and φ may live at DIFFERENT sorts -- which is exactly
the situation Proposition 30 exploits.
Equations
- MatchingLogic.Sorted.MGlobalCons Γ φ = ∀ (M : MatchingLogic.Sorted.MModel S), M.SatSet Γ → M.Sat φ
Instances For
Global consequence from a heterogeneous theory.
Equations
- MatchingLogic.Sorted.MGlobalConsHet Γ φ = ∀ (M : MatchingLogic.Sorted.MModel S), M.SatSetHet Γ → M.Sat φ
Instances For
The signature of Proposition 30 #
The signature of Proposition 30. Note NO symbol has an argument of sort
a; that is what the non-derivability half will turn on.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Proposition 30, semantic half #
The singleton model used for satisfiability in Proposition 30.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Γ ⊨ φ.
The paper: if M_b had distinct r, s, the valuation with ρ(x) = r,
ρ(y) = s gives ρ(x ∧ y) = ∅, and symbols propagate ∅, so ρ(f(x ∧ y)) = ∅,
which is not M_a because carriers are nonempty. Hence M_b is a singleton,
every valuation sends x and y to the same element, and ρ(g(x) ↔ g(y)) = M_c
for every ρ.