Sequents #
Optional loaded formulas (Olfs) #
@[reducible, inline]
In nodes we optionally have a negated loaded formula on the left or right.
Equations
Instances For
Instance that is used to say (O : Olf) \ (O' : Olf)
.
Equations
- One or more equations did not get rendered due to their size.
@[simp]
@[simp]
@[simp]
Equations
- oldO.change Ocond newO = Option.overwrite (oldO \ Ocond) newO
Instances For
@[simp]
@[simp]
Sequents and their (multi)set quality #
Equations
Two Sequent
s are set-equal when their components are finset-equal.
That is, we do not care about the order of the lists, but we do care
about the side of the formula and what formual is loaded.
Hint: use List.toFinset.ext_iff
with this.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Two Sequent
s are multiset-equal when their components are multiset-equal.
That is, we do not care about the order of the lists, but we do care about the side
on which the formula is, whether it is loaded or not, and how often it occurs.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Components and sides of sequents #
Formulas as elements of sequents #
Equations
- instDecidableMemFormulaSequent = Prod.casesOn X fun (L : List Formula) (snd : List Formula × Olf) => Prod.casesOn snd fun (R : List Formula) (o : Olf) => id inferInstance
instance
instDecidableMem_SequentMkListFormulaProdOlf
{L R : List Formula}
{O : Olf}
{nlf : NegLoadFormula}
:
Equations
- AnyNegFormula.mem_Sequent x✝ (~''(AnyFormula.normal φ)) = (~φ ∈ x✝)
- AnyNegFormula.mem_Sequent x✝ (~''(AnyFormula.loaded χ)) = NegLoadFormula.mem_Sequent x✝ (~'χ)
Instances For
Equations
Closed, basic, loaded and free sequents #
instance
Fintype.decidableExistsConjFintype
{α : Type u_1}
{p q : α → Prop}
[DecidablePred p]
[DecidablePred q]
[Fintype (Subtype p)]
:
A variant of Fintype.decidableExistsFintype
, used by instDecidableClosed
.
Equations
- Fintype.decidableExistsConjFintype = if h : ∃ (x : Subtype p), q ↑x then isTrue ⋯ else isFalse ⋯
Semantics of sequents #
Equations
- One or more equations did not get rendered due to their size.
theorem
vDash_multisetEqTo_iff
{W : Type}
{X Y : Sequent}
(h : X.multisetEqTo Y)
(M : KripkeModel W)
(w : W)
:
theorem
Sequent.without_loadBoxes_isFree_of_eq_inl
{αs : List Program}
{d : Program}
{L R : List Formula}
{δs : List Program}
{χ : LoadFormula}
{φ : Formula}
(h : AnyFormula.loaded χ = AnyFormula.loadBoxes αs (AnyFormula.normal φ))
:
theorem
Sequent.without_loadBoxes_isFree_of_eq_inr
{αs : List Program}
{d : Program}
{L R : List Formula}
{δs : List Program}
{χ : LoadFormula}
{φ : Formula}
(h : AnyFormula.loaded χ = AnyFormula.loadBoxes αs (AnyFormula.normal φ))
:
Equations
- (~''(AnyFormula.normal φ)).in_side Side.LL (L, fst, snd) = (~φ ∈ L)
- (~''(AnyFormula.normal φ)).in_side Side.RR (fst, R, snd) = (~φ ∈ R)
- (~''(AnyFormula.loaded χ)).in_side Side.LL (fst, fst_1, O) = (O = some (Sum.inl (~'χ)))
- (~''(AnyFormula.loaded χ)).in_side Side.RR (fst, fst_1, O) = (O = some (Sum.inr (~'χ)))
Instances For
theorem
AnyNegFormula.in_side_of_setEqTo
{side : Side}
{X Y : Sequent}
(h : X.setEqTo Y)
{anf : AnyNegFormula}
:
theorem
AnyNegFormula.in_side_of_multisetEqTo
{side : Side}
{X Y : Sequent}
(h : X.multisetEqTo Y)
{anf : AnyNegFormula}
:
theorem
LoadFormula.in_side_of_lf_inl
{X : Sequent}
(lf : LoadFormula)
(O_def : X.2.2 = some (Sum.inl (~'lf)))
:
(~''(AnyFormula.loaded lf)).in_side Side.LL X
theorem
LoadFormula.in_side_of_lf_inr
{X : Sequent}
(lf : LoadFormula)
(O_def : X.2.2 = some (Sum.inr (~'lf)))
:
(~''(AnyFormula.loaded lf)).in_side Side.RR X
theorem
Sequent.isLoaded_of_negAnyFormula_loaded
{α : Program}
{ξ : AnyFormula}
{side : Side}
{X : Sequent}
(negLoad_in : (~''(AnyFormula.loaded (⌊α⌋ξ))).in_side side X)
:
@[simp]
theorem
Sequent.without_loaded_in_side_isFree
(LRO : Sequent)
(ξ : LoadFormula)
(side : Side)
:
(~''(AnyFormula.loaded ξ)).in_side side LRO → (LRO.without (~''(AnyFormula.loaded ξ))).isFree = true